Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
jio_mebibou
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Alexandra Rogova
jio_mebibou
Commits
1ebfd26d
Commit
1ebfd26d
authored
Jan 02, 2014
by
Marco Mariani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
async key+query tests
parent
44a20b19
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
601 additions
and
493 deletions
+601
-493
test/queries/key-jiodate.tests.js
test/queries/key-jiodate.tests.js
+117
-79
test/queries/key-localstorage.tests.js
test/queries/key-localstorage.tests.js
+1
-49
test/queries/key-schema.tests.js
test/queries/key-schema.tests.js
+131
-99
test/queries/key.tests.js
test/queries/key.tests.js
+352
-266
No files found.
test/queries/key-jiodate.tests.js
View file @
1ebfd26d
/*jslint indent: 2, maxlen: 120, nomen: true, vars: true */
/*jslint indent: 2, maxlen: 120, nomen: true, vars: true */
/*global define, exports, require, module, complex_queries, jiodate, window, test, ok,
/*global define, exports, require, module, complex_queries, jiodate, window, test, ok,
equal, deepEqual, sinon */
equal, deepEqual, sinon
, start, stop, RSVP
*/
// define([module_name], [dependencies], module);
// define([module_name], [dependencies], module);
(
function
(
dependencies
,
module
)
{
(
function
(
dependencies
,
module
)
{
...
@@ -17,8 +17,12 @@
...
@@ -17,8 +17,12 @@
module
(
'
Custom Key Queries with JIODate
'
);
module
(
'
Custom Key Queries with JIODate
'
);
var
noop
=
function
()
{
return
;
// use with RSVP.all
};
test
(
'
Stock comparison operators with year precision
'
,
function
()
{
test
(
'
Stock comparison operators with year precision
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
twenty ten
'
,
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
},
{
'
identifier
'
:
'
twenty ten
'
,
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
},
{
'
identifier
'
:
'
twenty eleven
'
,
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
},
{
'
identifier
'
:
'
twenty eleven
'
,
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
},
...
@@ -31,75 +35,101 @@
...
@@ -31,75 +35,101 @@
cast_to
:
jiodate
.
JIODate
cast_to
:
jiodate
.
JIODate
}
}
}
}
},
query_list
=
null
;
},
query_list
=
[],
promise
=
[];
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
promise
.
push
(
key
:
'
date
'
,
complex_queries
.
QueryFactory
.
create
({
value
:
'
2011
'
type
:
'
simple
'
,
},
key_schema
).
exec
(
doc_list
);
key
:
'
date
'
,
deepEqual
(
doc_list
,
[
value
:
'
2011
'
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
}
},
key_schema
).
],
'
Match with "date = 2011" (query tree form)
'
);
exec
(
docList
()).
then
(
function
(
dl
)
{
doc_list
=
docList
();
deepEqual
(
dl
,
[
complex_queries
.
QueryFactory
.
create
({
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
}
type
:
'
simple
'
,
],
'
Match with "date = 2011" (query tree form)
'
);
key
:
'
date
'
,
})
operator
:
'
!=
'
,
);
value
:
'
2011
'
},
key_schema
).
exec
(
doc_list
);
promise
.
push
(
deepEqual
(
doc_list
,
[
complex_queries
.
QueryFactory
.
create
({
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
},
type
:
'
simple
'
,
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
key
:
'
date
'
,
],
'
Match with "date != 2011" (query tree form)
'
);
operator
:
'
!=
'
,
value
:
'
2011
'
doc_list
=
docList
();
},
key_schema
).
complex_queries
.
QueryFactory
.
create
({
exec
(
docList
()).
type
:
'
simple
'
,
then
(
function
(
dl
)
{
key
:
'
date
'
,
deepEqual
(
dl
,
[
operator
:
'
<
'
,
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
},
value
:
'
2011
'
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
},
key_schema
).
exec
(
doc_list
);
],
'
Match with "date != 2011" (query tree form)
'
);
deepEqual
(
doc_list
,
[
})
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
}
);
],
'
Match with "date < 2011" (query tree form)
'
);
promise
.
push
(
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
type
:
'
simple
'
,
key
:
'
date
'
,
key
:
'
date
'
,
operator
:
'
<
'
,
operator
:
'
<=
'
,
value
:
'
2011
'
value
:
'
2011
'
},
key_schema
).
},
key_schema
).
exec
(
doc_list
);
exec
(
docList
()).
deepEqual
(
doc_list
,
[
then
(
function
(
dl
)
{
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
},
deepEqual
(
dl
,
[
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
}
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
}
],
'
Match with "date <= 2011" (query tree form)
'
);
],
'
Match with "date < 2011" (query tree form)
'
);
})
doc_list
=
docList
();
);
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
promise
.
push
(
key
:
'
date
'
,
complex_queries
.
QueryFactory
.
create
({
operator
:
'
>
'
,
type
:
'
simple
'
,
value
:
'
2011
'
key
:
'
date
'
,
},
key_schema
).
exec
(
doc_list
);
operator
:
'
<=
'
,
deepEqual
(
doc_list
,
[
value
:
'
2011
'
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
},
key_schema
).
],
'
Match with "date > 2011" (query tree form)
'
);
exec
(
docList
()).
then
(
function
(
dl
)
{
doc_list
=
docList
();
deepEqual
(
dl
,
[
complex_queries
.
QueryFactory
.
create
({
{
'
date
'
:
'
2010-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty ten
'
},
type
:
'
simple
'
,
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
}
key
:
'
date
'
,
],
'
Match with "date <= 2011" (query tree form)
'
);
operator
:
'
>=
'
,
})
value
:
'
2011
'
);
},
key_schema
).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
promise
.
push
(
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
},
complex_queries
.
QueryFactory
.
create
({
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
type
:
'
simple
'
,
],
'
Match with "date >= 2011" (query tree form)
'
);
key
:
'
date
'
,
operator
:
'
>
'
,
value
:
'
2011
'
},
key_schema
).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
],
'
Match with "date > 2011" (query tree form)
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
'
date
'
,
operator
:
'
>=
'
,
value
:
'
2011
'
},
key_schema
).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
date
'
:
'
2011-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty eleven
'
},
{
'
date
'
:
'
2012-03-04T08:52:13.746Z
'
,
'
identifier
'
:
'
twenty twelve
'
}
],
'
Match with "date >= 2011" (query tree form)
'
);
})
);
query_list
=
[
query_list
=
[
[
[
...
@@ -119,9 +149,13 @@
...
@@ -119,9 +149,13 @@
query_list
.
forEach
(
function
(
o
)
{
query_list
.
forEach
(
function
(
o
)
{
var
qs
=
o
[
0
],
expected
=
o
[
1
];
var
qs
=
o
[
0
],
expected
=
o
[
1
];
doc_list
=
docList
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
(
qs
,
key_schema
).
exec
(
doc_list
);
complex_queries
.
QueryFactory
.
create
(
qs
,
key_schema
).
deepEqual
(
doc_list
,
expected
,
"
Match with '
"
+
qs
+
"
' (parsed query string)
"
);
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
expected
,
"
Match with '
"
+
qs
+
"
' (parsed query string)
"
);
})
);
});
});
query_list
=
[
query_list
=
[
...
@@ -132,13 +166,17 @@
...
@@ -132,13 +166,17 @@
];
];
query_list
.
forEach
(
function
(
qs
)
{
query_list
.
forEach
(
function
(
qs
)
{
doc_list
=
docList
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
(
qs
,
key_schema
).
exec
(
doc_list
);
complex_queries
.
QueryFactory
.
create
(
qs
,
key_schema
).
deepEqual
(
doc_list
,
[
exec
(
docList
()).
],
"
Match with an invalid parsed string
"
+
qs
+
"
should return empty list but not raise errors
"
);
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
],
"
Match with an invalid parsed string
"
+
qs
+
"
should return empty list but not raise errors
"
);
})
);
});
});
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
}));
}));
test/queries/key-localstorage.tests.js
View file @
1ebfd26d
...
@@ -21,54 +21,6 @@
...
@@ -21,54 +21,6 @@
local_storage
.
clear
();
local_storage
.
clear
();
/**
* all(promises): Promise
*
* Produces a promise that is resolved when all the given promises are
* fulfilled. The resolved value is an array of each of the answers of the
* given promises.
*
* @param {Array} promises The promises to use
* @return {Promise} A new promise
*/
function
all
(
promises
)
{
var
results
=
[],
i
,
count
=
0
;
function
cancel
()
{
var
j
;
for
(
j
=
0
;
j
<
promises
.
length
;
j
+=
1
)
{
if
(
typeof
promises
[
j
].
cancel
===
'
function
'
)
{
promises
[
j
].
cancel
();
}
}
}
return
new
RSVP
.
Promise
(
function
(
resolve
,
reject
,
notify
)
{
/*jslint unparam: true */
function
succeed
(
j
)
{
return
function
(
answer
)
{
results
[
j
]
=
answer
;
count
+=
1
;
if
(
count
!==
promises
.
length
)
{
return
;
}
resolve
(
results
);
};
}
function
notified
(
j
)
{
return
function
(
answer
)
{
notify
({
"
promise
"
:
promises
[
j
],
"
index
"
:
j
,
"
notified
"
:
answer
});
};
}
for
(
i
=
0
;
i
<
promises
.
length
;
i
+=
1
)
{
promises
[
i
].
then
(
succeed
(
i
),
succeed
(
i
),
notified
(
i
));
}
},
cancel
);
}
var
key_schema
=
{
var
key_schema
=
{
cast_lookup
:
{
cast_lookup
:
{
dateType
:
function
(
obj
)
{
dateType
:
function
(
obj
)
{
...
@@ -105,7 +57,7 @@
...
@@ -105,7 +57,7 @@
o
.
date_b
=
new
Date
();
o
.
date_b
=
new
Date
();
// put some document before listing them
// put some document before listing them
all
([
RSVP
.
all
([
jio
.
put
({
jio
.
put
({
"
_id
"
:
"
a
"
,
"
_id
"
:
"
a
"
,
"
title
"
:
"
one
"
,
"
title
"
:
"
one
"
,
...
...
test/queries/key-schema.tests.js
View file @
1ebfd26d
/*jslint indent: 2, maxlen: 100, nomen: true, vars: true */
/*jslint indent: 2, maxlen: 100, nomen: true, vars: true */
/*global define, exports, require, module, complex_queries, window, test, ok,
/*global define, exports, require, module, complex_queries, window, test, ok,
deepEqual, sinon */
deepEqual, sinon
, start, stop, RSVP
*/
// define([module_name], [dependencies], module);
// define([module_name], [dependencies], module);
(
function
(
dependencies
,
module
)
{
(
function
(
dependencies
,
module
)
{
...
@@ -17,6 +17,10 @@
...
@@ -17,6 +17,10 @@
module
(
'
Custom Key Queries with Schema
'
);
module
(
'
Custom Key Queries with Schema
'
);
var
noop
=
function
()
{
return
;
// use with RSVP.all
};
var
translationEqualityMatcher
=
function
(
data
)
{
var
translationEqualityMatcher
=
function
(
data
)
{
return
function
(
object_value
,
value
)
{
return
function
(
object_value
,
value
)
{
value
=
data
[
value
];
value
=
data
[
value
];
...
@@ -24,7 +28,6 @@
...
@@ -24,7 +28,6 @@
};
};
};
};
/*jslint unparam: true*/
/*jslint unparam: true*/
var
key_schema
=
{
var
key_schema
=
{
cast_lookup
:
{
cast_lookup
:
{
...
@@ -90,29 +93,37 @@
...
@@ -90,29 +93,37 @@
test
(
'
Keys defined in a Schema can be used like metadata
'
,
function
()
{
test
(
'
Keys defined in a Schema can be used like metadata
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
A
'
},
{
'
identifier
'
:
'
A
'
},
{
'
identifier
'
:
'
b
'
}
{
'
identifier
'
:
'
b
'
}
];
];
};
},
promise
=
[];
stop
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
'
case_insensitive_identifier
'
,
value
:
'
A
'
},
key_schema
).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
A
'
}
],
'
Key Schema: case_insensitive_identifier
'
);
})
);
doc_list
=
docList
();
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
'
case_insensitive_identifier
'
,
value
:
'
A
'
},
key_schema
).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
A
'
}
],
'
Key Schema: case_insensitive_identifier
'
);
});
});
test
(
'
Standard date keys
'
,
function
()
{
test
(
'
Standard date keys
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
a
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
a
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
b
'
,
'
date
'
:
'
2013-02-01
'
},
{
'
identifier
'
:
'
b
'
,
'
date
'
:
'
2013-02-01
'
},
...
@@ -121,54 +132,58 @@
...
@@ -121,54 +132,58 @@
{
'
identifier
'
:
'
c
'
,
'
date
'
:
'
2013-03-03
'
},
{
'
identifier
'
:
'
c
'
,
'
date
'
:
'
2013-03-03
'
},
{
'
identifier
'
:
'
d
'
,
'
date
'
:
'
2013-04-04
'
}
{
'
identifier
'
:
'
d
'
,
'
date
'
:
'
2013-04-04
'
}
];
];
};
}
,
promise
=
[]
;
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
promise
.
push
(
key
:
'
date_day
'
,
complex_queries
.
QueryFactory
.
create
({
value
:
'
2013-02-02
'
type
:
'
simple
'
,
},
key_schema
).
exec
(
doc_list
);
key
:
'
date_day
'
,
deepEqual
(
doc_list
,
[
value
:
'
2013-02-02
'
{
'
identifier
'
:
'
bb
'
,
'
date
'
:
'
2013-02-02
'
}
},
key_schema
).
],
'
Key Schema: same_day
'
);
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
doc_list
=
docList
();
{
'
identifier
'
:
'
bb
'
,
'
date
'
:
'
2013-02-02
'
}
complex_queries
.
QueryFactory
.
create
({
],
'
Key Schema: same_day
'
);
type
:
'
simple
'
,
})
key
:
'
date_month
'
,
);
value
:
'
2013-02-10
'
},
key_schema
).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
date
'
:
'
2013-02-01
'
,
'
identifier
'
:
'
b
'
},
{
'
date
'
:
'
2013-02-02
'
,
'
identifier
'
:
'
bb
'
},
{
'
date
'
:
'
2013-02-03
'
,
'
identifier
'
:
'
bbb
'
}
],
'
Key Schema: date_month
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
'
date_month
'
,
value
:
'
2013-02-10
'
},
key_schema
).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
date
'
:
'
2013-02-01
'
,
'
identifier
'
:
'
b
'
},
{
'
date
'
:
'
2013-02-02
'
,
'
identifier
'
:
'
bb
'
},
{
'
date
'
:
'
2013-02-03
'
,
'
identifier
'
:
'
bbb
'
}
],
'
Key Schema: date_month
'
);
})
);
doc_list
=
docList
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
type
:
'
simple
'
,
key
:
'
date_year
'
,
key
:
'
date_year
'
,
value
:
'
2013-02-10
'
value
:
'
2013-02-10
'
},
key_schema
).
exec
(
doc_list
);
},
key_schema
).
deepEqual
(
doc_list
.
length
,
6
,
'
Key Schema: date_year
'
);
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
.
length
,
6
,
'
Key Schema: date_year
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
test
(
'
Test key schema + complex queries
'
,
function
()
{
test
(
'
Test key schema + complex queries
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
},
...
@@ -189,61 +204,77 @@
...
@@ -189,61 +204,77 @@
cast_to
:
'
intType
'
cast_to
:
'
intType
'
}
}
}
}
};
}
,
promise
=
[]
;
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
complex
'
,
promise
.
push
(
operator
:
'
OR
'
,
complex_queries
.
QueryFactory
.
create
({
query_list
:
[{
type
:
'
complex
'
,
type
:
'
simple
'
,
operator
:
'
OR
'
,
key
:
'
number
'
,
query_list
:
[{
operator
:
'
<
'
,
type
:
'
simple
'
,
value
:
'
19
'
key
:
'
number
'
,
},
{
operator
:
'
<
'
,
type
:
'
simple
'
,
value
:
'
19
'
key
:
'
number
'
,
},
{
operator
:
'
=
'
,
type
:
'
simple
'
,
value
:
'
19
'
key
:
'
number
'
,
}]
operator
:
'
=
'
,
},
key_schema
).
exec
(
doc_list
);
value
:
'
19
'
deepEqual
(
doc_list
,
[
}]
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
},
key_schema
).
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
}
exec
(
docList
()).
],
'
Key schema should be propagated from complex to simple queries
'
);
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
}
],
'
Key schema should be propagated from complex to simple queries
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
test
(
'
Key Schema with translation lookup
'
,
function
()
{
test
(
'
Key Schema with translation lookup
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
},
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
},
{
'
identifier
'
:
'
2
'
,
'
state
'
:
'
closed
'
}
{
'
identifier
'
:
'
2
'
,
'
state
'
:
'
closed
'
}
];
];
};
},
promise
=
[];
stop
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
'
translated_state
'
,
value
:
'
ouvert
'
},
key_schema
).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
Key Schema: It should be possible to look for a translated string
'
);
})
);
doc_list
=
docList
();
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
type
:
'
simple
'
,
key
:
'
translated_state
'
,
key
:
'
translated_state
'
,
value
:
'
ouvert
'
operator
:
'
=
'
,
},
key_schema
).
exec
(
doc_list
);
value
:
'
ouvert
'
deepEqual
(
doc_list
,
[
},
key_schema
).
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
exec
(
docList
()).
],
'
Key Schema: It should be possible to look for a translated string
'
);
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
doc_list
=
docList
();
],
'
Key Schema: It should be possible to look for a translated string with operator =
'
);
complex_queries
.
QueryFactory
.
create
({
})
type
:
'
simple
'
,
);
key
:
'
translated_state
'
,
operator
:
'
=
'
,
value
:
'
ouvert
'
},
key_schema
).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
Key Schema: It should be possible to look for a translated string with operator =
'
);
// XXX not implemented yet
// XXX not implemented yet
...
@@ -258,6 +289,7 @@
...
@@ -258,6 +289,7 @@
// {'identifier': '2', 'state': 'closed'}
// {'identifier': '2', 'state': 'closed'}
// ], 'Key Schema: It should be possible to look for a translated string with operator !=');
// ], 'Key Schema: It should be possible to look for a translated string with operator !=');
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
}));
}));
test/queries/key.tests.js
View file @
1ebfd26d
/*jslint indent: 2, maxlen: 120, nomen: true, vars: true */
/*jslint indent: 2, maxlen: 120, nomen: true, vars: true */
/*global define, exports, require, module, complex_queries, window, test, ok,
/*global define, exports, require, module, complex_queries, window, test, ok,
equal, deepEqual, sinon */
equal, deepEqual, sinon
, stop, start, RSVP
*/
// define([module_name], [dependencies], module);
// define([module_name], [dependencies], module);
(
function
(
dependencies
,
module
)
{
(
function
(
dependencies
,
module
)
{
...
@@ -17,9 +17,13 @@
...
@@ -17,9 +17,13 @@
module
(
'
Custom Key Queries
'
);
module
(
'
Custom Key Queries
'
);
var
noop
=
function
()
{
return
;
// use with RSVP.all
};
test
(
'
Simple Key with read_from
'
,
function
()
{
test
(
'
Simple Key with read_from
'
,
function
()
{
/*jslint unparam: true*/
/*jslint unparam: true*/
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
A
'
},
{
'
identifier
'
:
'
A
'
},
...
@@ -35,29 +39,41 @@
...
@@ -35,29 +39,41 @@
return
(
object_value
.
toLowerCase
()
===
value
.
toLowerCase
());
return
(
object_value
.
toLowerCase
()
===
value
.
toLowerCase
());
}
}
}
}
};
}
,
promise
=
[]
;
/*jslint unparam: false*/
/*jslint unparam: false*/
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
promise
.
push
(
key
:
keys
.
title
,
complex_queries
.
QueryFactory
.
create
({
value
:
'
a
'
type
:
'
simple
'
,
}).
exec
(
doc_list
);
key
:
keys
.
title
,
deepEqual
(
doc_list
,
[
value
:
'
a
'
{
'
identifier
'
:
'
a
'
}
}).
],
'
It should be possible to query with an alias key
'
);
exec
(
docList
()).
then
(
function
(
dl
)
{
doc_list
=
docList
();
deepEqual
(
dl
,
[
complex_queries
.
QueryFactory
.
create
({
{
'
identifier
'
:
'
a
'
}
type
:
'
simple
'
,
],
'
It should be possible to query with an alias key
'
);
key
:
keys
.
case_insensitive_identifier
,
})
value
:
'
A
'
);
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
promise
.
push
(
{
'
identifier
'
:
'
a
'
},
complex_queries
.
QueryFactory
.
create
({
{
'
identifier
'
:
'
A
'
}
type
:
'
simple
'
,
],
'
It should be possible to query with a case-insensitive alias key
'
);
key
:
keys
.
case_insensitive_identifier
,
value
:
'
A
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
a
'
},
{
'
identifier
'
:
'
A
'
}
],
'
It should be possible to query with a case-insensitive alias key
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
...
@@ -71,7 +87,7 @@
...
@@ -71,7 +87,7 @@
test
(
'
Simple Key with date casting
'
,
function
()
{
test
(
'
Simple Key with date casting
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
a
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
a
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
b
'
,
'
date
'
:
'
2013-02-01
'
},
{
'
identifier
'
:
'
b
'
,
'
date
'
:
'
2013-02-01
'
},
...
@@ -80,7 +96,7 @@
...
@@ -80,7 +96,7 @@
{
'
identifier
'
:
'
c
'
,
'
date
'
:
'
2013-03-03
'
},
{
'
identifier
'
:
'
c
'
,
'
date
'
:
'
2013-03-03
'
},
{
'
identifier
'
:
'
d
'
,
'
date
'
:
'
2013-04-04
'
}
{
'
identifier
'
:
'
d
'
,
'
date
'
:
'
2013-04-04
'
}
];
];
};
}
,
promise
=
[]
;
var
sameDay
=
function
(
a
,
b
)
{
var
sameDay
=
function
(
a
,
b
)
{
return
(
return
(
...
@@ -119,53 +135,57 @@
...
@@ -119,53 +135,57 @@
}
}
};
};
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
day
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
bb
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to compare dates with sameDay
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
month
,
value
:
'
2013-02-10
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
date
'
:
'
2013-02-01
'
,
'
identifier
'
:
'
b
'
},
{
'
date
'
:
'
2013-02-02
'
,
'
identifier
'
:
'
bb
'
},
{
'
date
'
:
'
2013-02-03
'
,
'
identifier
'
:
'
bbb
'
}
],
'
It should be possible to compare dates with sameMonth
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
year
,
value
:
'
2013-02-10
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
.
length
,
6
,
'
It should be possible to compare dates with sameYear
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
day
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
bb
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to compare dates with sameDay
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
month
,
value
:
'
2013-02-10
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
date
'
:
'
2013-02-01
'
,
'
identifier
'
:
'
b
'
},
{
'
date
'
:
'
2013-02-02
'
,
'
identifier
'
:
'
bb
'
},
{
'
date
'
:
'
2013-02-03
'
,
'
identifier
'
:
'
bbb
'
}
],
'
It should be possible to compare dates with sameMonth
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
year
,
value
:
'
2013-02-10
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
.
length
,
6
,
'
It should be possible to compare dates with sameYear
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
test
(
'
Simple Key with date casting and <=> operators
'
,
function
()
{
test
(
'
Simple Key with date casting and <=> operators
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
...
@@ -176,82 +196,109 @@
...
@@ -176,82 +196,109 @@
read_from
:
'
date
'
,
read_from
:
'
date
'
,
cast_to
:
dateCast
cast_to
:
dateCast
}
}
};
}
,
promise
=
[]
;
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to search for dates with operator =
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
!=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator !=
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
<=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to search for dates with operator <=
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
<
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
}
],
'
It should be possible to search for dates with operator <
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator >
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator >=
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
=
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to search for dates with operator =
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
!=
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator !=
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
<=
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
'
It should be possible to search for dates with operator <=
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
<
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
}
],
'
It should be possible to search for dates with operator <
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator >
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>=
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to search for dates with operator >=
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
test
(
'
Simple Key with both equal_match and operator attributes
'
,
function
()
{
test
(
'
Simple Key with both equal_match and operator attributes
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
...
@@ -261,123 +308,148 @@
...
@@ -261,123 +308,148 @@
mydate
:
{
mydate
:
{
read_from
:
'
date
'
,
read_from
:
'
date
'
,
cast_to
:
dateCast
,
cast_to
:
dateCast
,
equal_match
:
function
alwaysTrue
()
{
return
true
;
}
equal_match
:
function
alwaysTrue
(
o1
)
{
/*, o2*/
return
o1
.
getDate
()
===
2
;
}
}
}
};
},
promise
=
[];
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
It should be possible to use a catch-all filter
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
date
'
:
'
2013-01-01
'
},
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
"
The catch-all filter overrides the default '=' operator
"
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>=
'
,
value
:
'
2013-02-02
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
'
An explicit operator should override the catch-all filter
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
"
'equal_match' with no 'operator'
"
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
=
'
,
value
:
'
2013-01-01
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
}
],
"
'equal_match' overrides '=' operator
"
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
mydate
,
operator
:
'
>=
'
,
value
:
'
2013-02-02
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
2
'
,
'
date
'
:
'
2013-02-02
'
},
{
'
identifier
'
:
'
3
'
,
'
date
'
:
'
2013-03-03
'
}
],
"
'equal_match' does not override '>' operator
"
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
var
intType
=
function
(
value
)
{
if
(
typeof
value
===
'
string
'
)
{
return
parseInt
(
value
,
10
);
}
return
value
;
};
test
(
'
Test overriding operators and compound query
'
,
function
()
{
test
(
'
Test overriding operators and compound query
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
},
{
'
identifier
'
:
'
100
'
,
'
number
'
:
'
100
'
}
{
'
identifier
'
:
'
100
'
,
'
number
'
:
'
100
'
}
];
];
};
},
intType
=
function
(
value
)
{
if
(
typeof
value
===
'
string
'
)
{
return
parseInt
(
value
,
10
);
}
return
value
;
},
promise
=
[];
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
promise
.
push
(
key
:
{
complex_queries
.
QueryFactory
.
create
({
read_from
:
'
number
'
,
cast_to
:
intType
},
operator
:
'
>
'
,
value
:
'
19
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
100
'
,
'
number
'
:
'
100
'
}
],
'
Numbers are correctly compared (>) after casting
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
{
read_from
:
'
number
'
,
cast_to
:
intType
},
operator
:
'
<
'
,
value
:
'
19
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
}
],
'
Numbers are correctly compared (<) after casting
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
complex
'
,
operator
:
'
OR
'
,
query_list
:
[{
type
:
'
simple
'
,
type
:
'
simple
'
,
key
:
{
key
:
{
read_from
:
'
number
'
,
read_from
:
'
number
'
,
cast_to
:
intType
cast_to
:
intType
},
},
operator
:
'
<
'
,
operator
:
'
>
'
,
value
:
'
19
'
value
:
'
19
'
},
{
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
100
'
,
'
number
'
:
'
100
'
}
],
'
Numbers are correctly compared (>) after casting
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
type
:
'
simple
'
,
key
:
{
key
:
{
read_from
:
'
number
'
,
read_from
:
'
number
'
,
cast_to
:
intType
cast_to
:
intType
},
},
operator
:
'
=
'
,
operator
:
'
<
'
,
value
:
'
19
'
value
:
'
19
'
}]
}).
}).
exec
(
doc_list
);
exec
(
docList
()).
deepEqual
(
doc_list
,
[
then
(
function
(
dl
)
{
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
}
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
}
],
'
Custom keys should also work within compound queries
'
);
],
'
Numbers are correctly compared (<) after casting
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
complex
'
,
operator
:
'
OR
'
,
query_list
:
[{
type
:
'
simple
'
,
key
:
{
read_from
:
'
number
'
,
cast_to
:
intType
},
operator
:
'
<
'
,
value
:
'
19
'
},
{
type
:
'
simple
'
,
key
:
{
read_from
:
'
number
'
,
cast_to
:
intType
},
operator
:
'
=
'
,
value
:
'
19
'
}]
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
10
'
,
'
number
'
:
'
10
'
},
{
'
identifier
'
:
'
19
'
,
'
number
'
:
'
19
'
}
],
'
Custom keys should also work within compound queries
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
...
@@ -390,7 +462,7 @@
...
@@ -390,7 +462,7 @@
test
(
'
Simple Key with translation lookup
'
,
function
()
{
test
(
'
Simple Key with translation lookup
'
,
function
()
{
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
},
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
},
{
'
identifier
'
:
'
2
'
,
'
state
'
:
'
closed
'
}
{
'
identifier
'
:
'
2
'
,
'
state
'
:
'
closed
'
}
...
@@ -402,31 +474,39 @@
...
@@ -402,31 +474,39 @@
read_from
:
'
state
'
,
read_from
:
'
state
'
,
equal_match
:
equalState
equal_match
:
equalState
}
}
};
},
promise
=
[];
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
translated_state
,
value
:
'
ouvert
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
It should be possible to look for a translated string with a custom match function
'
);
doc_list
=
docList
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
translated_state
,
operator
:
'
=
'
,
value
:
'
ouvert
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
It should be possible to look for a translated string with operator =
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
translated_state
,
value
:
'
ouvert
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
It should be possible to look for a translated string with a custom match function
'
);
})
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
translated_state
,
operator
:
'
=
'
,
value
:
'
ouvert
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
1
'
,
'
state
'
:
'
open
'
}
],
'
It should be possible to look for a translated string with operator =
'
);
})
);
// XXX not implemented yet
// XXX not implemented yet
// doc_list = docList();
// doc_list = docList();
...
@@ -440,7 +520,7 @@
...
@@ -440,7 +520,7 @@
// {'identifier': '2', 'state': 'closed'}
// {'identifier': '2', 'state': 'closed'}
// ], 'It should be possible to look for a translated string with operator !=');
// ], 'It should be possible to look for a translated string with operator !=');
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
...
@@ -483,7 +563,7 @@
...
@@ -483,7 +563,7 @@
test
(
'
Query with accent folding and wildcard
'
,
function
()
{
test
(
'
Query with accent folding and wildcard
'
,
function
()
{
/*jslint unparam: true*/
/*jslint unparam: true*/
var
doc
_list
,
doc
List
=
function
()
{
var
docList
=
function
()
{
return
[
return
[
{
'
identifier
'
:
'
àéîöùç
'
},
{
'
identifier
'
:
'
àéîöùç
'
},
{
'
identifier
'
:
'
âèî ôùc
'
},
{
'
identifier
'
:
'
âèî ôùc
'
},
...
@@ -495,21 +575,27 @@
...
@@ -495,21 +575,27 @@
read_from
:
'
identifier
'
,
read_from
:
'
identifier
'
,
cast_to
:
accentFold
cast_to
:
accentFold
}
}
};
}
,
promise
=
[]
;
/*jslint unparam: false*/
/*jslint unparam: false*/
doc_list
=
docList
();
stop
();
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
identifier
,
value
:
'
aei%
'
}).
exec
(
doc_list
);
deepEqual
(
doc_list
,
[
{
'
identifier
'
:
'
àéîöùç
'
},
{
'
identifier
'
:
'
âèî ôùc
'
}
],
'
It should be possible to query regardless of accents
'
);
promise
.
push
(
complex_queries
.
QueryFactory
.
create
({
type
:
'
simple
'
,
key
:
keys
.
identifier
,
value
:
'
aei%
'
}).
exec
(
docList
()).
then
(
function
(
dl
)
{
deepEqual
(
dl
,
[
{
'
identifier
'
:
'
àéîöùç
'
},
{
'
identifier
'
:
'
âèî ôùc
'
}
],
'
It should be possible to query regardless of accents
'
);
})
);
RSVP
.
all
(
promise
).
then
(
noop
).
always
(
start
);
});
});
}));
}));
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment