Skip to content

Commit

Permalink
meta: update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lohart13 committed Apr 14, 2024
1 parent b1607e4 commit bc5fcbf
Show file tree
Hide file tree
Showing 11 changed files with 754 additions and 975 deletions.
59 changes: 20 additions & 39 deletions packages/core/test/integration/model/update.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,27 +276,21 @@ describe('Model.update', () => {
}
});

if (dialect.supports['LIMIT ON UPDATE']) {
it('supports limit clause', async () => {
const { User } = vars;
it('supports limit clause', async () => {
const { User } = vars;

await User.bulkCreate([
{ username: 'Peter' },
{ username: 'Peter' },
{ username: 'Peter' },
]);
await User.bulkCreate([{ username: 'Peter' }, { username: 'Peter' }, { username: 'Peter' }]);

const [affectedRows] = await User.update(
{ username: 'Bob' },
{
where: {},
limit: 1,
},
);
const [affectedRows] = await User.update(
{ username: 'Bob' },
{
where: {},
limit: 1,
},
);

expect(affectedRows).to.equal(1);
});
}
expect(affectedRows).to.equal(1);
});

it('skips query if there is no data to update', async () => {
const { User } = vars;
Expand Down Expand Up @@ -450,15 +444,12 @@ describe('Model.update', () => {

expectsql(sqlQuery, {
default: `UPDATE [users1] SET [secretValue]=$sequelize_1,[updatedAt]=$sequelize_2 WHERE [id] = $sequelize_3`,
postgres: `UPDATE "users1" SET "secretValue"=$1,"updatedAt"=$2 WHERE "id" = $3 RETURNING *`,
mysql: 'UPDATE `users1` SET `secretValue`=?,`updatedAt`=? WHERE `id` = ?',
mariadb: 'UPDATE `users1` SET `secretValue`=?,`updatedAt`=? WHERE `id` = ?',
mssql: `UPDATE [users1] SET [secretValue]=@sequelize_1,[updatedAt]=@sequelize_2 OUTPUT INSERTED.* WHERE [id] = @sequelize_3`,
db2: `SELECT * FROM FINAL TABLE (UPDATE "users1" SET "secretValue"=?,"updatedAt"=? WHERE "id" = ?);`,
ibmi: `UPDATE "users1" SET "secretValue"=?,"updatedAt"=? WHERE "id" = ?;`,
mssql: `UPDATE [users1] SET [secretValue]=@sequelize_1,[updatedAt]=@sequelize_2 WHERE [id] = @sequelize_3`,
postgres: `UPDATE "users1" SET "secretValue"=$1,"updatedAt"=$2 WHERE "id" = $3`,
'db2 ibmi': `SELECT COUNT(*) FROM FINAL TABLE (UPDATE "users1" SET "secretValue"=?,"updatedAt"=? WHERE "id" = ?)`,
'mariadb mysql': 'UPDATE `users1` SET `secretValue`=?,`updatedAt`=? WHERE `id` = ?',
});
},
returning: [sql.col('*')],
},
);
expect(test).to.be.true;
Expand Down Expand Up @@ -507,21 +498,11 @@ describe('Model.update', () => {

await User.create({ username: 'jan' });

// TODO: Model.update should always throw an error if a virtual attributes are used (even if it has a setter, no access to it from static update)
await User.update(
{
username: 'kurt',
virtual: 'test',
},
{
where: {
username: 'jan',
},
},
);

await expect(
User.update({ username: 'kurt', virtual: 'test' }, { where: { username: 'jan' } }),
).to.be.rejectedWith('Attribute "virtual" does not exist on model "User".');
const user = await User.findOne({ rejectOnEmpty: true });
expect(user.username).to.equal('kurt');
expect(user.username).to.equal('jan');
expect(user.virtual).to.not.equal('test');
});

Expand Down
79 changes: 0 additions & 79 deletions packages/core/test/unit/dialects/db2/query-generator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -434,85 +434,6 @@ if (dialect === 'db2') {
expectation: 'INSERT INTO "myTable" ("name") VALUES (\'foo\'),(\'bar\');',
},
],

updateQuery: [
{
arguments: ['myTable', { bar: 2 }, { name: 'foo' }],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"=$sequelize_1 WHERE "name" = $sequelize_2);',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { name: "foo';DROP TABLE myTable;" }, { name: 'foo' }],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "name"=$sequelize_1 WHERE "name" = $sequelize_2);',
bind: { sequelize_1: "foo';DROP TABLE myTable;", sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"=$sequelize_1,"nullValue"=$sequelize_2 WHERE "name" = $sequelize_3);',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"=$sequelize_1,"nullValue"=$sequelize_2 WHERE "name" = $sequelize_3);',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
context: { options: { omitNull: false } },
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"=$sequelize_1 WHERE "name" = $sequelize_2);',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
context: { options: { omitNull: true } },
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.fn('NOW'),
};
},
{ name: 'foo' },
],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"=NOW() WHERE "name" = $sequelize_1);',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.col('foo'),
};
},
{ name: 'foo' },
],
expectation: {
query:
'SELECT * FROM FINAL TABLE (UPDATE "myTable" SET "bar"="foo" WHERE "name" = $sequelize_1);',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
],
};

each(suites, (tests, suiteTitle) => {
Expand Down
74 changes: 0 additions & 74 deletions packages/core/test/unit/dialects/mariadb/query-generator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -448,80 +448,6 @@ if (dialect === 'mariadb') {
"INSERT INTO `myTable` (`name`) VALUES ('foo'),('bar') ON DUPLICATE KEY UPDATE `name`=VALUES(`name`);",
},
],

updateQuery: [
{
arguments: ['myTable', { bar: 2 }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `bar`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { name: "foo';DROP TABLE myTable;" }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `name`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: "foo';DROP TABLE myTable;", sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'UPDATE `myTable` SET `bar`=$sequelize_1,`nullValue`=$sequelize_2 WHERE `name` = $sequelize_3',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'UPDATE `myTable` SET `bar`=$sequelize_1,`nullValue`=$sequelize_2 WHERE `name` = $sequelize_3',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
context: { options: { omitNull: false } },
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `bar`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
context: { options: { omitNull: true } },
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.fn('NOW'),
};
},
{ name: 'foo' },
],
expectation: {
query: 'UPDATE `myTable` SET `bar`=NOW() WHERE `name` = $sequelize_1',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.col('foo'),
};
},
{ name: 'foo' },
],
expectation: {
query: 'UPDATE `myTable` SET `bar`=`foo` WHERE `name` = $sequelize_1',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
],
};

each(suites, (tests, suiteTitle) => {
Expand Down
74 changes: 0 additions & 74 deletions packages/core/test/unit/dialects/mysql/query-generator.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,80 +443,6 @@ if (dialect === 'mysql') {
"INSERT INTO `myTable` (`name`) VALUES ('foo'),('bar') ON DUPLICATE KEY UPDATE `name`=VALUES(`name`);",
},
],

updateQuery: [
{
arguments: ['myTable', { bar: 2 }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `bar`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { name: "foo';DROP TABLE myTable;" }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `name`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: "foo';DROP TABLE myTable;", sequelize_2: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'UPDATE `myTable` SET `bar`=$sequelize_1,`nullValue`=$sequelize_2 WHERE `name` = $sequelize_3',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query:
'UPDATE `myTable` SET `bar`=$sequelize_1,`nullValue`=$sequelize_2 WHERE `name` = $sequelize_3',
bind: { sequelize_1: 2, sequelize_2: null, sequelize_3: 'foo' },
},
context: { options: { omitNull: false } },
},
{
arguments: ['myTable', { bar: 2, nullValue: null }, { name: 'foo' }],
expectation: {
query: 'UPDATE `myTable` SET `bar`=$sequelize_1 WHERE `name` = $sequelize_2',
bind: { sequelize_1: 2, sequelize_2: 'foo' },
},
context: { options: { omitNull: true } },
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.fn('NOW'),
};
},
{ name: 'foo' },
],
expectation: {
query: 'UPDATE `myTable` SET `bar`=NOW() WHERE `name` = $sequelize_1',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
{
arguments: [
'myTable',
function (sequelize) {
return {
bar: sequelize.col('foo'),
};
},
{ name: 'foo' },
],
expectation: {
query: 'UPDATE `myTable` SET `bar`=`foo` WHERE `name` = $sequelize_1',
bind: { sequelize_1: 'foo' },
},
needsSequelize: true,
},
],
};

each(suites, (tests, suiteTitle) => {
Expand Down

0 comments on commit bc5fcbf

Please sign in to comment.