From cb38dd02dce2a852f9e5369dee3e82a89c999906 Mon Sep 17 00:00:00 2001 From: "D. C. Rockwell" Date: Fri, 13 Nov 2015 22:51:00 -0700 Subject: [PATCH 1/2] Mock queries now act like sinon spies with .call, .called, and .calls --- es5/lib/database.js | 5 ---- es5/lib/query.js | 9 ++++++- es5/spec/database/mock.results.spec.js | 36 +++++++++++++++++++++++++ es5/spec/database/mock.spec.js | 9 ++++--- es5/spec/database/query/results.spec.js | 1 - es6/lib/database.js | 4 --- es6/lib/query.js | 8 +++++- es6/spec/database/mock.results.spec.js | 36 +++++++++++++++++++++++++ es6/spec/database/mock.spec.js | 6 ++--- es6/spec/database/query/results.spec.js | 1 - 10 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 es5/spec/database/mock.results.spec.js create mode 100644 es6/spec/database/mock.results.spec.js diff --git a/es5/lib/database.js b/es5/lib/database.js index ea54068..3654d79 100644 --- a/es5/lib/database.js +++ b/es5/lib/database.js @@ -188,11 +188,6 @@ var Database = (function () { get: function get() { return new _mockQueryJs2["default"](this); } - }, { - key: "spy", - get: function get() { - return new _mockQueryJs2["default"](this); - } }]); return Database; diff --git a/es5/lib/query.js b/es5/lib/query.js index f22802d..5c10637 100644 --- a/es5/lib/query.js +++ b/es5/lib/query.js @@ -351,11 +351,12 @@ var Query = (function () { value: function value(mockQueries, callback) { var mockFound = false; var results = undefined; + var query = undefined; for (var index in mockQueries) { var mockQuery = mockQueries[index]; - var query = mockQuery.query; + query = mockQuery.query; results = mockQuery.results; @@ -366,6 +367,7 @@ var Query = (function () { } if (mockFound) { + query.call; callback(undefined, results); } else { throw new Error("No mock values available for: \"" + this.toString() + "\"", null); @@ -381,6 +383,11 @@ var Query = (function () { get: function get() { return this.calls > 0; } + }, { + key: "call", + get: function get() { + (0, _incognito2["default"])(this).calls += 1; + } }, { key: "delete", get: function get() { diff --git a/es5/spec/database/mock.results.spec.js b/es5/spec/database/mock.results.spec.js new file mode 100644 index 0000000..d615bf2 --- /dev/null +++ b/es5/spec/database/mock.results.spec.js @@ -0,0 +1,36 @@ +"use strict"; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var _libDatabaseJs = require("../../lib/database.js"); + +var _libDatabaseJs2 = _interopRequireDefault(_libDatabaseJs); + +var databaseConfig = require("../../../database.json").testing; + +describe(".mock.results(mockResults)", function () { + var database = undefined; + + beforeEach(function () { + database = new _libDatabaseJs2["default"](databaseConfig); + }); + + it("should return the mock query", function () { + var mockQuery = database.mock; + mockQuery.select("*").from("users").should.equal(mockQuery); + }); + + it("should increment the call count when subsequent matching queries are executed", function (done) { + var user = { + id: "cigyn1qip0000nxz84cv3bwu6", + name: "Bob" + }; + + var mockQuery = database.mock.select("*").from("users").results(user); + + database.select("*").from("users").results(function () { + mockQuery.called.should.be["true"]; + done(); + }); + }); +}); \ No newline at end of file diff --git a/es5/spec/database/mock.spec.js b/es5/spec/database/mock.spec.js index 5f0cc06..e989245 100644 --- a/es5/spec/database/mock.spec.js +++ b/es5/spec/database/mock.spec.js @@ -6,17 +6,20 @@ var _libDatabaseJs = require("../../lib/database.js"); var _libDatabaseJs2 = _interopRequireDefault(_libDatabaseJs); +var _libMockQueryJs = require("../../lib/mockQuery.js"); + +var _libMockQueryJs2 = _interopRequireDefault(_libMockQueryJs); + var databaseConfig = require("../../../database.json").testing; describe(".mock", function () { - var database = undefined; beforeEach(function () { database = new _libDatabaseJs2["default"](databaseConfig); }); - it("should return an instance of itself for chaining", function () { - database.mock.should.eql(database); + it("should return an instance of MockQuery", function () { + database.mock.should.be.instanceOf(_libMockQueryJs2["default"]); }); }); \ No newline at end of file diff --git a/es5/spec/database/query/results.spec.js b/es5/spec/database/query/results.spec.js index 86ec8a8..c4109e8 100644 --- a/es5/spec/database/query/results.spec.js +++ b/es5/spec/database/query/results.spec.js @@ -9,7 +9,6 @@ var _libDatabaseJs2 = _interopRequireDefault(_libDatabaseJs); var databaseConfig = require("../../../../database.json").testing; describe("query.results(callback)", function () { - var database = undefined; var query = undefined; diff --git a/es6/lib/database.js b/es6/lib/database.js index f746fd0..4021571 100644 --- a/es6/lib/database.js +++ b/es6/lib/database.js @@ -128,10 +128,6 @@ export default class Database { return new MockQuery(this); } - get spy() { - return new MockQuery(this); - } - // unmock() { // this.mockQueries = undefined; // } diff --git a/es6/lib/query.js b/es6/lib/query.js index 940cfde..19e7777 100644 --- a/es6/lib/query.js +++ b/es6/lib/query.js @@ -21,6 +21,10 @@ export default class Query { return this.calls > 0; } + get call() { + privateData(this).calls += 1; + } + select(...columns) { privateData(this).query = privateData(this).knex.select(...columns); this[addChain]("select", columns); @@ -272,11 +276,12 @@ export default class Query { [mockExecute](mockQueries, callback) { let mockFound = false; let results; + let query; for (let index in mockQueries) { const mockQuery = mockQueries[index]; - const query = mockQuery.query; + query = mockQuery.query; results = mockQuery.results; @@ -287,6 +292,7 @@ export default class Query { } if (mockFound) { + query.call; callback(undefined, results); } else { throw new Error(`No mock values available for: "${this.toString()}"`, null); diff --git a/es6/spec/database/mock.results.spec.js b/es6/spec/database/mock.results.spec.js new file mode 100644 index 0000000..74d4661 --- /dev/null +++ b/es6/spec/database/mock.results.spec.js @@ -0,0 +1,36 @@ +import Database from "../../lib/database.js"; + +const databaseConfig = require("../../../database.json").testing; + +describe(".mock.results(mockResults)", () => { + let database; + + beforeEach(() => { + database = new Database(databaseConfig); + }); + + it("should return the mock query", () => { + const mockQuery = database.mock; + mockQuery.select("*").from("users").should.equal(mockQuery); + }); + + it("should increment the call count when subsequent matching queries are executed", done => { + const user = { + id: "cigyn1qip0000nxz84cv3bwu6", + name: "Bob" + }; + + const mockQuery = database.mock + .select("*") + .from("users") + .results(user); + + database + .select("*") + .from("users") + .results(() => { + mockQuery.called.should.be.true; + done(); + }); + }); +}); diff --git a/es6/spec/database/mock.spec.js b/es6/spec/database/mock.spec.js index ac5bea5..eda4d0b 100644 --- a/es6/spec/database/mock.spec.js +++ b/es6/spec/database/mock.spec.js @@ -1,16 +1,16 @@ import Database from "../../lib/database.js"; +import MockQuery from "../../lib/mockQuery.js"; const databaseConfig = require("../../../database.json").testing; describe(".mock", () => { - let database; beforeEach(() => { database = new Database(databaseConfig); }); - it("should return an instance of itself for chaining", () => { - database.mock.should.eql(database); + it("should return an instance of MockQuery", () => { + database.mock.should.be.instanceOf(MockQuery); }); }); diff --git a/es6/spec/database/query/results.spec.js b/es6/spec/database/query/results.spec.js index ce1f9b9..82fd931 100644 --- a/es6/spec/database/query/results.spec.js +++ b/es6/spec/database/query/results.spec.js @@ -3,7 +3,6 @@ import Database from "../../../lib/database.js"; const databaseConfig = require("../../../../database.json").testing; describe("query.results(callback)", () => { - let database; let query; From 497b3461e8d3e4afa43dea6a82be4ab117f2a55b Mon Sep 17 00:00:00 2001 From: "D. C. Rockwell" Date: Fri, 13 Nov 2015 23:14:49 -0700 Subject: [PATCH 2/2] Version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 78888c7..42c1184 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "almaden", - "version": "0.3.0", + "version": "0.3.1", "description": "ES6 data adapter.", "main": "index.js", "scripts": {