Skip to content

Commit

Permalink
Merge branch 'release/v0.2.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
nicosommi committed Oct 16, 2015
2 parents e60cda0 + de3d537 commit bba0ceb
Show file tree
Hide file tree
Showing 8 changed files with 259 additions and 161 deletions.
9 changes: 8 additions & 1 deletion es5/lib/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,11 @@ var Query = (function () {
var theirLink = theirChain[theirIndex];
var theirArguments = theirLink.options;

if (ourLink.name === theirLink.name) {
//so andWhere and where are treated both as the same
var theirLinkName = theirLink.name.replace("andWhere", "where");
var ourLinkName = ourLink.name.replace("andWhere", "where");

if (ourLinkName === theirLinkName) {
if (this[argumentsEqual](ourArguments, theirArguments)) {
hasMatchingLink = true;
break;
Expand All @@ -293,6 +297,9 @@ var Query = (function () {
}, {
key: addChain,
value: function value(chainName, options) {
if ((chainName === "where" || chainName === "andWhere") && options.length === 2) {
options = [options[0], "=", options[1]];
}
(0, _incognito2["default"])(this).chain.push({
name: chainName,
options: options
Expand Down
45 changes: 45 additions & 0 deletions es5/spec/database/mock.where.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
"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(".where", function () {
var database = undefined,
mockUsers = undefined;

beforeEach(function () {
database = new _libDatabaseJs2["default"](databaseConfig);
mockUsers = [{ id: 1, name: "Bob" }];
});

it("should treat where equals to andWhere", function (done) {
var name = "aName";

database.mock.select("*").from("users").where("created_at", ">", /.*/).where("name", name).results(mockUsers);

database.select("*").from("users").where("created_at", ">", "2015-10-02 21:39:14").andWhere("name", name).results(function (error, rows) {
if (error) {
throw error;
}
rows.should.eql(mockUsers);
done();
});
});

it("should use equals as the default operator", function (done) {
database.mock.select("*").from("users").where("id", 1).results(mockUsers);

database.select("*").from("users").where("id", "=", 1).results(function (error, rows) {
if (error) {
throw error;
}
rows.should.eql(mockUsers);
done();
});
});
});
157 changes: 79 additions & 78 deletions es5/spec/database/query/equalTo.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,82 +10,83 @@ var databaseConfig = require("../../../../database.json").testing;

describe(".equalTo(query)", function () {

var database = undefined;

beforeEach(function () {
database = new _libDatabaseJs2["default"](databaseConfig);
});

it("should compare simple queries that are equal and return true", function () {
var queryA = database.select("*").from("users");
var queryB = database.select("*").from("users");

queryA.equalTo(queryB).should.be["true"];
});
it("should compare simple queries that are not equal and return false", function () {
var queryA = database.select("*").from("users");
var queryB = database.select("*").from("trucks");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare simple queries with object parameters that are equal and return true", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert(data).into("users");

queryA.equalTo(queryB).should.be["true"];
});
it("should compare simple queries with object parameters that are not equal and return false", function () {
var dataA = {
name: "Bob",
age: 46
};

var dataB = {
name: "Linda",
age: 42
};

var queryA = database.insert(dataA).into("users");
var queryB = database.insert(dataB).into("users");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare simple queries with regex object parameters that match and return true", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert({
name: /B.b/,
age: /[0-9]*/
}).into("users");

queryA.equalTo(queryB).should.be["true"];
});
it("should compare simple queries with regex object parameters that do not match and return false", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert({
name: /L.*a/,
age: /[a-zA-Z]*/
}).into("users");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare complex queries that are equal and return true");
it("should compare complex queries that are not equal and return false");
var database = undefined;

beforeEach(function () {
database = new _libDatabaseJs2["default"](databaseConfig);
});

it("should compare simple queries that are equal and return true", function () {
var queryA = database.select("*").from("users");
var queryB = database.select("*").from("users");

queryA.equalTo(queryB).should.be["true"];
});
it("should compare simple queries that are not equal and return false", function () {
var queryA = database.select("*").from("users");
var queryB = database.select("*").from("trucks");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare simple queries with object parameters that are equal and return true", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert(data).into("users");

queryA.equalTo(queryB).should.be["true"];
});
it("should compare simple queries with object parameters that are not equal and return false", function () {
var dataA = {
name: "Bob",
age: 46
};

var dataB = {
name: "Linda",
age: 42
};

var queryA = database.insert(dataA).into("users");
var queryB = database.insert(dataB).into("users");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare simple queries with regex object parameters that match and return true", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert({
name: /B.b/,
age: /[0-9]*/
}).into("users");

queryA.equalTo(queryB).should.be["true"];
});

it("should compare simple queries with regex object parameters that do not match and return false", function () {
var data = {
name: "Bob",
age: 46
};

var queryA = database.insert(data).into("users");
var queryB = database.insert({
name: /L.*a/,
age: /[a-zA-Z]*/
}).into("users");

queryA.equalTo(queryB).should.be["false"];
});

it("should compare complex queries that are equal and return true");
it("should compare complex queries that are not equal and return false");
});
12 changes: 6 additions & 6 deletions es6/lib/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ export default class Database {
constructor(databaseConfig) {
const _ = privateData(this);

_.config = databaseConfig;
_.knex = knex(databaseConfig);
_.mockQueries = [];
_.config = databaseConfig;
_.knex = knex(databaseConfig);
_.mockQueries = [];
}

get config() {
return privateData(this).config;
}
get config() {
return privateData(this).config;
}

close(callback) {
privateData(this).knex.destroy(callback);
Expand Down
9 changes: 8 additions & 1 deletion es6/lib/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,11 @@ export default class Query {
const theirLink = theirChain[theirIndex];
const theirArguments = theirLink.options;

if (ourLink.name === theirLink.name) {
//so andWhere and where are treated both as the same
const theirLinkName = theirLink.name.replace("andWhere", "where");
const ourLinkName = ourLink.name.replace("andWhere", "where");

if (ourLinkName === theirLinkName) {
if (this[argumentsEqual](ourArguments, theirArguments)) {
hasMatchingLink = true;
break;
Expand All @@ -206,6 +210,9 @@ export default class Query {
}

[addChain](chainName, options) {
if ((chainName === "where" || chainName === "andWhere") && options.length === 2) {
options = [options[0], "=", options[1]];
}
privateData(this).chain.push({
name: chainName,
options: options
Expand Down
37 changes: 37 additions & 0 deletions es6/spec/database/mock.where.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import Database from "../../lib/database.js";

const databaseConfig = require("../../../database.json").testing;

describe(".where", () => {
let database,
mockUsers;

beforeEach(() => {
database = new Database(databaseConfig);
mockUsers = [
{id: 1, name: "Bob"}
];
});

it("should treat where equals to andWhere", done => {
const name = "aName";

database.mock.select("*").from("users").where("created_at", ">", /.*/).where("name", name).results(mockUsers);

database.select("*").from("users").where("created_at", ">", "2015-10-02 21:39:14").andWhere("name", name).results((error, rows) => {
if (error) { throw error; }
rows.should.eql(mockUsers);
done();
});
});

it("should use equals as the default operator", done => {
database.mock.select("*").from("users").where("id", 1).results(mockUsers);

database.select("*").from("users").where("id", "=", 1).results((error, rows) => {
if (error) { throw error; }
rows.should.eql(mockUsers);
done();
});
});
});
Loading

0 comments on commit bba0ceb

Please sign in to comment.