Skip to content

Commit 5207729

Browse files
committed
fixes #8 adds warnings if you have params that are not understood
1 parent b7c7ae9 commit 5207729

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
},
5353
"devDependencies": {
5454
"can-define": "^2.0.3",
55+
"can-test-helpers": "^1.1.2",
5556
"jshint": "^2.9.1",
5657
"steal": "^1.6.2",
5758
"steal-qunit": "^1.0.1",

src/serializers/basic-query-test.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var canReflect = require("can-reflect");
44
var logicTypes = require("../types/and-or-not");
55
var is = require("../types/comparisons");
66
var makeMaybe = require("../types/make-maybe");
7+
var testHelpers = require("can-test-helpers");
78

89
QUnit.module("can-query-logic/serializers/basic-query");
910

@@ -147,6 +148,33 @@ QUnit.test("auto-convert or schema into maybe type", function(){
147148
}, "serialized");
148149
});
149150

151+
152+
testHelpers.dev.devOnlyTest("warn if query properties are not defined (#8)", function() {
153+
QUnit.expect(3);
154+
155+
var message = "can-query-logic: Ignoring keys: start, end.";
156+
var finishErrorCheck = testHelpers.dev.willWarn(message, function(actualMessage, success) {
157+
QUnit.equal(actualMessage, message, "Warning is expected message");
158+
QUnit.ok(success);
159+
});
160+
161+
162+
var query = {
163+
filter: {
164+
name: {
165+
first: "justin"
166+
}
167+
},
168+
start: 0,
169+
end: 1
170+
};
171+
172+
var converter = makeBasicQueryConvert(EmptySchema);
173+
174+
converter.hydrate(query);
175+
QUnit.equal(finishErrorCheck(), 1);
176+
});
177+
150178
/*
151179
QUnit.skip("nested properties within ors", function(){
152180
var query = {

src/serializers/basic-query.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ var Serializer = require("../serializer");
77
var is = require("../types/comparisons");
88
var makeMaybe = require("../types/make-maybe");
99
var makeEnum = require("../types/make-enum");
10+
var logDev = require("can-log/dev/dev");
1011

1112
var setTypeSymbol = canSymbol.for("can.SetType");
12-
var comparisonSetTypeSymbol = canSymbol.for("can.ComparisonSetType");
1313
var schemaSymbol = canSymbol.for("can.getSchema");
1414

1515
var defaultQuery = new BasicQuery({});
@@ -245,7 +245,7 @@ module.exports = function(schema) {
245245
if(canReflect.size(filter) !== 0) {
246246
res.filter= filter;
247247
}
248-
248+
249249
if(!set.isEqual(basicQuery.page, defaultQuery.page)) {
250250
// we always provide the start, even if it's 0
251251
res.page = {
@@ -273,6 +273,18 @@ module.exports = function(schema) {
273273

274274
return {
275275
hydrate: function(data){
276+
277+
//!steal-remove-start
278+
var AcceptedFields = makeEnum(function(){},["filter","sort","page"]);
279+
var diff = set.difference(new AcceptedFields(Object.keys(data)), AcceptedFields.UNIVERSAL);
280+
if(diff.values && diff.values.length) {
281+
logDev.warn(
282+
"can-query-logic: Ignoring keys: " + diff.values.join(", ") + "."
283+
);
284+
}
285+
//!steal-remove-end
286+
287+
276288
var filter = canReflect.serialize(data.filter);
277289

278290
// this mutates

0 commit comments

Comments
 (0)