UNPKG

3.75 kBJavaScriptView Raw
1'use strict';
2
3module.exports = function (dbType, context) {
4
5 describe(dbType + ': $not', function () {
6
7 it('works with simple syntax', function () {
8 var db = context.db;
9 var index = {
10 "index": {
11 "fields": ["age"]
12 },
13 "name": "age-index",
14 "type": "json"
15 };
16
17 return db.createIndex(index).then(function () {
18 return db.bulkDocs([
19 { _id: '1', age: 75, name: {first: 'Nancy', surname: 'Sinatra'}},
20 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
21 { _id: '3', age: 80, name: {first: 'John', surname: 'Fogerty'}},
22 { _id: '4', age: 76, name: {first: 'Mick', surname: 'Jagger'}},
23 ]);
24 }).then(function () {
25 return db.find({
26 selector: {
27 age:{$gte: 40},
28 $not:{age: 75},
29 }
30 });
31 }).then(function (resp) {
32 var docs = resp.docs.map(function (doc) {
33 delete doc._rev;
34 return doc;
35 });
36
37 docs.should.deep.equal([
38 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
39 { _id: '4', age: 76, name: {first: 'Mick', surname: 'Jagger'}},
40 { _id: '3', age: 80, name: {first: 'John', surname: 'Fogerty'}}
41 ]);
42 });
43 });
44
45 it('works with $and', function () {
46 var db = context.db;
47 var index = {
48 "index": {
49 "fields": ["age"]
50 },
51 "name": "age-index",
52 "type": "json"
53 };
54
55 return db.createIndex(index).then(function () {
56 return db.bulkDocs([
57 { _id: '1', age: 75, name: {first: 'Nancy', surname: 'Sinatra'}},
58 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
59 { _id: '3', age: 80, name: {first: 'John', surname: 'Fogerty'}},
60 { _id: '4', age: 76, name: {first: 'Mick', surname: 'Jagger'}},
61 ]);
62 }).then(function () {
63 return db.find({
64 selector: {
65 $and: [
66 {age:{$gte: 40}},
67 {$not:{age: {$eq: 75}}},
68 ]
69 }
70 });
71 }).then(function (resp) {
72 var docs = resp.docs.map(function (doc) {
73 delete doc._rev;
74 return doc;
75 });
76
77 docs.should.deep.equal([
78 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
79 { _id: '4', age: 76, name: {first: 'Mick', surname: 'Jagger'}},
80 { _id: '3', age: 80, name: {first: 'John', surname: 'Fogerty'}}
81 ]);
82 });
83 });
84
85 it('works with another combinational field', function () {
86 var db = context.db;
87 var index = {
88 "index": {
89 "fields": ["age"]
90 },
91 "name": "age-index",
92 "type": "json"
93 };
94
95 return db.createIndex(index).then(function () {
96 return db.bulkDocs([
97 { _id: '1', age: 75, name: {first: 'Nancy', surname: 'Sinatra'}},
98 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
99 { _id: '3', age: 80, name: {first: 'John', surname: 'Fogerty'}},
100 { _id: '4', age: 76, name: {first: 'Mick', surname: 'Jagger'}},
101 ]);
102 }).then(function () {
103 return db.find({
104 selector: {
105 $and: [
106 {age:{$gte: 0}},
107 {$not:{age: {$eq: 75}}},
108 {$or: [
109 {"name.first": "Eddie"},
110 ]}
111 ]
112 }
113 });
114 }).then(function (resp) {
115 var docs = resp.docs.map(function (doc) {
116 delete doc._rev;
117 return doc;
118 });
119
120 docs.should.deep.equal([
121 { _id: '2', age: 40, name: {first: 'Eddie', surname: 'Vedder'}},
122 ]);
123 });
124 });
125 });
126};