@irrelon/forerunnerdb-core
Version:
ForerunnerDB core utilities for operating on JSON data.
201 lines (200 loc) • 7.37 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _find = _interopRequireDefault(require("./find"));
var _assert = _interopRequireDefault(require("assert"));
var _data = require("../../testData/data");
describe("find()", function () {
describe("Number", function () {
it("$eeq", function () {
var query = {
"_id": 1
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 1, "ID is correct");
});
it("$eeq explicit", function () {
var query = {
"_id": {
"$eeq": 1
}
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 1, "ID is correct");
});
});
describe("String", function () {
it("$eeq", function () {
var query = {
"bar.name": "Amelia"
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 5, "ID is correct");
});
it("$in", function () {
var query = {
"bar.name": {
"$in": ["Amelia", "Andy"]
}
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 2, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 1, "ID is correct");
_assert["default"].strictEqual(result[1]._id, 5, "ID is correct");
});
});
describe("Boolean", function () {
it("$eeq", function () {
var query = {
"bar.foo": false
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 2, "ID is correct");
});
it("Matches based on sub-documents", function () {
var query = {
"arr.goof": true,
"arr.fun": false
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 2, "ID is correct");
});
it("Matches based on gated sub-documents", function () {
var query = {
"$or": [{
"arr.goof": true,
"arr.fun": false
}, {
"arr.goof": true,
"arr.fun": true
}]
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 2, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 1, "ID is correct");
_assert["default"].strictEqual(result[1]._id, 2, "ID is correct");
});
});
describe("Boolean, Date", function () {
it("$gt, $lte, $eeq", function () {
var query = {
"bar.foo": true,
"bar.dt": {
"$gt": new Date("2020-02-01T00:00:00Z"),
"$lte": new Date("2020-04-01T00:00:00Z")
}
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 2, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 3, "ID is correct");
_assert["default"].strictEqual(result[1]._id, 4, "ID is correct");
});
});
describe("Gates", function () {
it("$and", function () {
var query = {
"$and": [{
"bar.foo": true,
"bar.dt": {
"$gt": new Date("2020-02-01T00:00:00Z"),
"$lte": new Date("2020-04-01T00:00:00Z")
}
}]
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 2, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 3, "ID is correct");
_assert["default"].strictEqual(result[1]._id, 4, "ID is correct");
});
it("$or", function () {
var query = {
"$or": [{
"bar.foo": true,
"bar.dt": {
"$gt": new Date("2020-02-01T00:00:00Z"),
"$lte": new Date("2020-04-01T00:00:00Z")
}
}]
};
var result = (0, _find["default"])(_data.data, query);
_assert["default"].strictEqual(result.length, 4, "Number of results is correct");
_assert["default"].strictEqual(result[0]._id, 1, "ID is correct");
_assert["default"].strictEqual(result[1]._id, 3, "ID is correct");
_assert["default"].strictEqual(result[2]._id, 4, "ID is correct");
_assert["default"].strictEqual(result[3]._id, 5, "ID is correct");
});
});
describe("Arrays of objects", function () {
var arr = [{
"address_id": "120167000000088001",
"attention": "Test New Address ATTN",
"address": "6 Moohove Drive",
"street2": "Winsoken",
"city": "Tailbeach",
"state": "Harpinshire",
"zip": "PE28 9QT",
"country": "United Kingdom",
"phone": "",
"fax": ""
}, {
"address_id": "120167000000088007",
"attention": "Bilbo Baggins",
"address": "1 The Shrire",
"street2": "Rolling Hills Road",
"city": "Shiretown",
"state": "Cambridgeshire",
"zip": "QT68 2ZZ",
"country": "United Kingdom",
"phone": "",
"fax": ""
}];
var query = {
"attention": "Bilbo Baggins",
"address": "1 The Shrire",
"street2": "Rolling Hills Road",
"city": "Shiretown",
"state": "Cambridgeshire",
"zip": "QT68 2ZZ",
"country": "United Kingdom",
"phone": "",
"fax": ""
};
var result = (0, _find["default"])(arr, query);
_assert["default"].strictEqual(result.length, 1, "Number of results is correct");
_assert["default"].strictEqual(result[0].address_id, "120167000000088007", "ID is correct");
_assert["default"].strictEqual(result[0].attention, "Bilbo Baggins", "Details correct");
_assert["default"].strictEqual(result[0].address, "1 The Shrire", "Details correct");
_assert["default"].strictEqual(result[0].street2, "Rolling Hills Road", "Details correct");
_assert["default"].strictEqual(result[0].city, "Shiretown", "Details correct");
_assert["default"].strictEqual(result[0].state, "Cambridgeshire", "Details correct");
_assert["default"].strictEqual(result[0].zip, "QT68 2ZZ", "Details correct");
_assert["default"].strictEqual(result[0].country, "United Kingdom", "Details correct");
_assert["default"].strictEqual(result[0].phone, "", "Details correct");
_assert["default"].strictEqual(result[0].fax, "", "Details correct");
});
describe("Array Wildcards", function () {
it("Handles array wildcards", function () {
var data = [{
"arr": [{
"arr": [{
"item": 1
}]
}, {
"arr": [{
"item": 2
}]
}]
}];
var result = (0, _find["default"])(data, "arr.$.arr.$");
_assert["default"].deepStrictEqual(result, [{
"item": 1
}, {
"item": 2
}]);
});
});
});