不要怂,就是干,撸起袖子干!

Commit 3149a27d by Jan Aagaard Meier

Add assertions for generated SQL

1 parent ef04446b
Showing with 17 additions and 8 deletions
...@@ -3,6 +3,7 @@ if (typeof require === 'function') { ...@@ -3,6 +3,7 @@ if (typeof require === 'function') {
, Helpers = require('../buster-helpers') , Helpers = require('../buster-helpers')
, Sequelize = require('../../index') , Sequelize = require('../../index')
, dialect = Helpers.getTestDialect() , dialect = Helpers.getTestDialect()
, _ = require('lodash')
} }
buster.spec.expose() buster.spec.expose()
...@@ -227,14 +228,16 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() { ...@@ -227,14 +228,16 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() {
this.sequelize.sync({force: true}).success(done) this.sequelize.sync({force: true}).success(done)
}) })
it('uses one insert into statement', function (done) { it('uses one UPDATE statement', function (done) {
var spy = this.spy() var spy = this.spy()
this.User.create({ username: 'foo' }).success(function(user) { this.User.create({ username: 'foo' }).success(function(user) {
this.Task.create({ title: 'task1' }).success(function(task1) { this.Task.create({ title: 'task1' }).success(function(task1) {
this.Task.create({ title: 'task2' }).success(function(task2) { this.Task.create({ title: 'task2' }).success(function(task2) {
user.setTasks([task1, task2]).on('sql', spy).success(function () { user.setTasks([task1, task2]).on('sql', spy).on('sql', _.after(2, function (sql) { // We don't care about SELECt, only UPDAET
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for INSERT into expect(sql).toMatch("IN (1,2)")
})).success(function () {
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for UPDATE
done() done()
}) })
}.bind(this)) }.bind(this))
...@@ -242,15 +245,17 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() { ...@@ -242,15 +245,17 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() {
}.bind(this)) }.bind(this))
}) })
it('uses one delete from statement', function (done) { it('uses one UPDATE statement', function (done) {
var spy = this.spy() var spy = this.spy()
this.User.create({ username: 'foo' }).success(function (user) { this.User.create({ username: 'foo' }).success(function (user) {
this.Task.create({ title: 'task1' }).success(function (task1) { this.Task.create({ title: 'task1' }).success(function (task1) {
this.Task.create({ title: 'task2' }).success(function (task2) { this.Task.create({ title: 'task2' }).success(function (task2) {
user.setTasks([task1, task2]).success(function () { user.setTasks([task1, task2]).success(function () {
user.setTasks(null).on('sql', spy).success(function () { user.setTasks(null).on('sql', spy).on('sql', _.after(2, function (sql) { // We don't care about SELECt, only UPDAET
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for DELETE expect(sql).toMatch("IN (1,2)")
})).success(function () {
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for UPDATE
done() done()
}) })
}) })
...@@ -376,7 +381,9 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() { ...@@ -376,7 +381,9 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() {
this.User.create({ username: 'foo' }).success(function(user) { this.User.create({ username: 'foo' }).success(function(user) {
this.Task.create({ title: 'task1' }).success(function(task1) { this.Task.create({ title: 'task1' }).success(function(task1) {
this.Task.create({ title: 'task2' }).success(function(task2) { this.Task.create({ title: 'task2' }).success(function(task2) {
user.setTasks([task1, task2]).on('sql', spy).success(function () { user.setTasks([task1, task2]).on('sql', spy).on('sql', _.after(2, function (sql) {
expect(sql).toMatch("VALUES (1,1),(2,1)")
})).success(function () {
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for INSERT into expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for INSERT into
done() done()
}) })
...@@ -392,7 +399,9 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() { ...@@ -392,7 +399,9 @@ describe(Helpers.getTestDialectTeaser("HasMany"), function() {
this.Task.create({ title: 'task1' }).success(function (task1) { this.Task.create({ title: 'task1' }).success(function (task1) {
this.Task.create({ title: 'task2' }).success(function (task2) { this.Task.create({ title: 'task2' }).success(function (task2) {
user.setTasks([task1, task2]).success(function () { user.setTasks([task1, task2]).success(function () {
user.setTasks(null).on('sql', spy).success(function () { user.setTasks(null).on('sql', spy).on('sql', _.after(2, function (sql) {
expect(sql).toMatch("IN (1,2)")
})).success(function () {
expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for DELETE expect(spy).toHaveBeenCalledTwice() // Once for SELECT, once for DELETE
done() done()
}) })
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!