1 | 'use strict';
|
2 |
|
3 | module.exports = function (dbType, context) {
|
4 |
|
5 | describe(dbType + ': $and', function () {
|
6 |
|
7 | it('does and for _id', function () {
|
8 | var db = context.db;
|
9 | return db.bulkDocs([
|
10 | { name: 'mario', _id: 'mario', rank: 5, series: 'mario', debut: 1981 },
|
11 | { name: 'jigglypuff', _id: 'puff', rank: 8, series: 'pokemon', debut: 1996 },
|
12 | { name: 'link', rank: 10, _id: 'link', series: 'zelda', debut: 1986 },
|
13 | { name: 'donkey kong', rank: 7, _id: 'dk', series: 'mario', debut: 1981 },
|
14 | { name: 'pikachu', series: 'pokemon', _id: 'pikachu', rank: 1, debut: 1996 },
|
15 | { name: 'captain falcon', _id: 'falcon', rank: 4, series: 'f-zero', debut: 1990 },
|
16 | { name: 'luigi', rank: 11, _id: 'luigi', series: 'mario', debut: 1983 },
|
17 | { name: 'fox', _id: 'fox', rank: 3, series: 'star fox', debut: 1993 },
|
18 | { name: 'ness', rank: 9, _id: 'ness', series: 'earthbound', debut: 1994 },
|
19 | { name: 'samus', rank: 12, _id: 'samus', series: 'metroid', debut: 1986 },
|
20 | { name: 'yoshi', _id: 'yoshi', rank: 6, series: 'mario', debut: 1990 },
|
21 | { name: 'kirby', _id: 'kirby', series: 'kirby', rank: 2, debut: 1992 }
|
22 | ]).then(function () {
|
23 | return db.find({
|
24 | selector: {$and: [
|
25 | {_id: {$in: ['pikachu', 'puff']}},
|
26 | {_id: {$gt: null}}
|
27 | ]},
|
28 | fields: ["_id"],
|
29 | });
|
30 | }).then(function (resp) {
|
31 | resp.should.deep.equal({
|
32 | docs: [
|
33 | {_id: 'pikachu'},
|
34 | {_id: 'puff'},
|
35 | ]
|
36 | });
|
37 | });
|
38 | });
|
39 |
|
40 | it('does and for index', function () {
|
41 | var db = context.db;
|
42 | var index = {
|
43 | "index": {
|
44 | "fields": ["debut"]
|
45 | }
|
46 | };
|
47 | return db.createIndex(index).then(function () {
|
48 | return db.bulkDocs([
|
49 | { name: 'mario', _id: 'mario', rank: 5, series: 'mario', debut: 1981 },
|
50 | { name: 'jigglypuff', _id: 'puff', rank: 8, series: 'pokemon', debut: 1996 },
|
51 | { name: 'link', rank: 10, _id: 'link', series: 'zelda', debut: 1986 },
|
52 | { name: 'donkey kong', rank: 7, _id: 'dk', series: 'mario', debut: 1981 },
|
53 | { name: 'pikachu', series: 'pokemon', _id: 'pikachu', rank: 1, debut: 1996 },
|
54 | { name: 'captain falcon', _id: 'falcon', rank: 4, series: 'f-zero', debut: 1990 },
|
55 | { name: 'luigi', rank: 11, _id: 'luigi', series: 'mario', debut: 1983 },
|
56 | { name: 'fox', _id: 'fox', rank: 3, series: 'star fox', debut: 1993 },
|
57 | { name: 'ness', rank: 9, _id: 'ness', series: 'earthbound', debut: 1994 },
|
58 | { name: 'samus', rank: 12, _id: 'samus', series: 'metroid', debut: 1986 },
|
59 | { name: 'yoshi', _id: 'yoshi', rank: 6, series: 'mario', debut: 1990 },
|
60 | { name: 'kirby', _id: 'kirby', series: 'kirby', rank: 2, debut: 1992 }
|
61 | ]);}).then(function () {
|
62 | return db.find({
|
63 | selector: {$and: [
|
64 | {debut: {$in: [1996]}},
|
65 | {debut: {$gt: null}}
|
66 | ]},
|
67 | fields: ["_id"],
|
68 | });
|
69 | }).then(function (resp) {
|
70 | resp.should.deep.equal({
|
71 | docs: [
|
72 | {_id: 'pikachu'},
|
73 | {_id: 'puff'},
|
74 | ]
|
75 | });
|
76 | });
|
77 | });
|
78 |
|
79 | });
|
80 | };
|