Skip to content

Commit

Permalink
Merge branch 'hotfix/0.2.2' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
dcrockwell committed Oct 14, 2015
2 parents a3da628 + 6f97bab commit eb63441
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 11 deletions.
23 changes: 19 additions & 4 deletions es5/lib/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -311,12 +311,27 @@ var Query = (function () {
var argumentB = argumentsB[index];

if (argumentA !== argumentB) {
if (argumentA instanceof RegExp) {
if (argumentB.toString().match(argumentA) === null) {
if (argumentB instanceof RegExp) {
if (argumentA.toString().match(argumentB) === null) {
return false;
}
} else if (argumentB instanceof RegExp) {
if (argumentA.toString().match(argumentB) === null) {
} else if (argumentA instanceof Object) {
if (Object.keys(argumentA).length === Object.keys(argumentB).length) {
for (var subArgument in argumentA) {
var subArgumentA = argumentA[subArgument];
var subArgumentB = argumentB[subArgument];

if (subArgumentA !== subArgumentB) {
if (subArgumentB instanceof RegExp) {
if (subArgumentA.toString().match(subArgumentB) === null) {
return false;
}
} else {
return false;
}
}
}
} else {
return false;
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion es5/spec/database/insert.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe(".insert(data)", function () {
database.mock.insert({
name: fixture.name,
age: fixture.age
}).into(tableName).results(fixture.id);
}).into(tableName).results([6]);
done();
} else {
database.load({
Expand Down
57 changes: 57 additions & 0 deletions es5/spec/database/query/equalTo.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,63 @@ describe(".equalTo(query)", function () {
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");
});
23 changes: 19 additions & 4 deletions es6/lib/query.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,27 @@ export default class Query {
const argumentB = argumentsB[index];

if (argumentA !== argumentB) {
if (argumentA instanceof RegExp) {
if (argumentB.toString().match(argumentA) === null) {
if (argumentB instanceof RegExp) {
if (argumentA.toString().match(argumentB) === null) {
return false;
}
} else if (argumentB instanceof RegExp) {
if (argumentA.toString().match(argumentB) === null) {
} else if (argumentA instanceof Object) {
if (Object.keys(argumentA).length === Object.keys(argumentB).length) {
for (let subArgument in argumentA) {
const subArgumentA = argumentA[subArgument];
const subArgumentB = argumentB[subArgument];

if (subArgumentA !== subArgumentB) {
if (subArgumentB instanceof RegExp) {
if (subArgumentA.toString().match(subArgumentB) === null) {
return false;
}
} else {
return false;
}
}
}
} else {
return false;
}
} else {
Expand Down
2 changes: 1 addition & 1 deletion es6/spec/database/insert.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ describe(".insert(data)", () => {
database.mock.insert({
name: fixture.name,
age: fixture.age
}).into(tableName).results(fixture.id);
}).into(tableName).results([6]);
done();
} else {
database.load({
Expand Down
57 changes: 57 additions & 0 deletions es6/spec/database/query/equalTo.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,63 @@ describe(".equalTo(query)", () => {
queryA.equalTo(queryB).should.be.false;
});

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

const queryA = database.insert(data).into("users");
const 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", () => {
const dataA = {
name: "Bob",
age: 46
};

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

const queryA = database.insert(dataA).into("users");
const 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", () => {
const data = {
name: "Bob",
age: 46
};

const queryA = database.insert(data).into("users");
const 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", () => {
const data = {
name: "Bob",
age: 46
};

const queryA = database.insert(data).into("users");
const 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");
});
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "almaden",
"version": "0.2.1",
"version": "0.2.2",
"description": "ES6 data adapter.",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit eb63441

Please sign in to comment.