viewdb 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test/cursor.js CHANGED
@@ -1,101 +1,101 @@
1
- var Cursor = require('../lib/cursor');
2
- var ViewDB = require('..');
3
-
4
- describe('Cursor', () => {
5
- it('#toArray', (done) => {
6
- var cursor = new Cursor(null, {}, null, function (query, callback) {
7
- callback(null, [1, 2, 3, 4]);
8
- });
9
- cursor.toArray(function (err, result) {
10
- expect(result.length).toBe(4);
11
- done();
12
- });
13
- });
14
- it('#forEach', (done) => {
15
- var cursor = new Cursor(null, {}, null, function (query, callback) {
16
- callback(null, [1, 2, 3, 4]);
17
- });
18
- var calls = 0;
19
- cursor.forEach(function (result) {
20
- expect(result).toBeTruthy();
21
- calls++;
22
- });
23
- setTimeout(function () {
24
- expect(calls).toBe(4);
25
- done();
26
- }, 0);
27
- });
28
- it('#skip', (done) => {
29
- var db = new ViewDB();
30
- var collection = db.collection('documents');
31
- for (var i = 0; i < 10; i++) {
32
- collection.insert({ a: 'a', id: i });
33
- }
34
- collection
35
- .find({ a: 'a' })
36
- .skip(5)
37
- .toArray(function (err, res) {
38
- expect(res.length).toBe(5);
39
- done();
40
- });
41
- });
42
- it('#limit', (done) => {
43
- var db = new ViewDB();
44
- var collection = db.collection('documents');
45
- for (var i = 0; i < 10; i++) {
46
- collection.insert({ a: 'a', id: i });
47
- }
48
- collection
49
- .find({ a: 'a' })
50
- .limit(9)
51
- .toArray(function (err, res) {
52
- expect(res[8].id).toBe(8);
53
- expect(res.length).toBe(9);
54
- done();
55
- });
56
- });
57
- it('#sort', (done) => {
58
- var db = new ViewDB();
59
- var collection = db.collection('documents');
60
- for (var i = 0; i < 10; i++) {
61
- collection.insert({ a: 'a', id: i });
62
- }
63
- collection
64
- .find({})
65
- .sort({ id: 1 })
66
- .toArray(function (err, res) {
67
- expect(res[0].id).toBe(0);
68
- done();
69
- });
70
- });
71
- it('#sort desc', (done) => {
72
- var db = new ViewDB();
73
- var collection = db.collection('documents');
74
- for (var i = 0; i < 10; i++) {
75
- collection.insert({ a: 'a', id: i });
76
- }
77
- collection
78
- .find({})
79
- .sort({ id: -1 })
80
- .toArray(function (err, res) {
81
- expect(res[0].id).toBe(9);
82
- done();
83
- });
84
- });
85
- it('#skip/limit', (done) => {
86
- var db = new ViewDB();
87
- var collection = db.collection('documents');
88
- for (var i = 0; i < 10; i++) {
89
- collection.insert({ a: 'a', id: i });
90
- }
91
- collection
92
- .find({ a: 'a' })
93
- .skip(8)
94
- .limit(10)
95
- .toArray(function (err, res) {
96
- expect(res[1].id).toBe(9);
97
- expect(res.length).toBe(2); // only 2 left after skipping 8/10
98
- done();
99
- });
100
- });
101
- });
1
+ var Cursor = require('../lib/cursor');
2
+ var ViewDB = require('..');
3
+
4
+ describe('Cursor', () => {
5
+ it('#toArray', (done) => {
6
+ var cursor = new Cursor(null, {}, null, function (query, callback) {
7
+ callback(null, [1, 2, 3, 4]);
8
+ });
9
+ cursor.toArray(function (err, result) {
10
+ expect(result.length).toBe(4);
11
+ done();
12
+ });
13
+ });
14
+ it('#forEach', (done) => {
15
+ var cursor = new Cursor(null, {}, null, function (query, callback) {
16
+ callback(null, [1, 2, 3, 4]);
17
+ });
18
+ var calls = 0;
19
+ cursor.forEach(function (result) {
20
+ expect(result).toBeTruthy();
21
+ calls++;
22
+ });
23
+ setTimeout(function () {
24
+ expect(calls).toBe(4);
25
+ done();
26
+ }, 0);
27
+ });
28
+ it('#skip', (done) => {
29
+ var db = new ViewDB();
30
+ var collection = db.collection('documents');
31
+ for (var i = 0; i < 10; i++) {
32
+ collection.insert({ a: 'a', id: i });
33
+ }
34
+ collection
35
+ .find({ a: 'a' })
36
+ .skip(5)
37
+ .toArray(function (err, res) {
38
+ expect(res.length).toBe(5);
39
+ done();
40
+ });
41
+ });
42
+ it('#limit', (done) => {
43
+ var db = new ViewDB();
44
+ var collection = db.collection('documents');
45
+ for (var i = 0; i < 10; i++) {
46
+ collection.insert({ a: 'a', id: i });
47
+ }
48
+ collection
49
+ .find({ a: 'a' })
50
+ .limit(9)
51
+ .toArray(function (err, res) {
52
+ expect(res[8].id).toBe(8);
53
+ expect(res.length).toBe(9);
54
+ done();
55
+ });
56
+ });
57
+ it('#sort', (done) => {
58
+ var db = new ViewDB();
59
+ var collection = db.collection('documents');
60
+ for (var i = 0; i < 10; i++) {
61
+ collection.insert({ a: 'a', id: i });
62
+ }
63
+ collection
64
+ .find({})
65
+ .sort({ id: 1 })
66
+ .toArray(function (err, res) {
67
+ expect(res[0].id).toBe(0);
68
+ done();
69
+ });
70
+ });
71
+ it('#sort desc', (done) => {
72
+ var db = new ViewDB();
73
+ var collection = db.collection('documents');
74
+ for (var i = 0; i < 10; i++) {
75
+ collection.insert({ a: 'a', id: i });
76
+ }
77
+ collection
78
+ .find({})
79
+ .sort({ id: -1 })
80
+ .toArray(function (err, res) {
81
+ expect(res[0].id).toBe(9);
82
+ done();
83
+ });
84
+ });
85
+ it('#skip/limit', (done) => {
86
+ var db = new ViewDB();
87
+ var collection = db.collection('documents');
88
+ for (var i = 0; i < 10; i++) {
89
+ collection.insert({ a: 'a', id: i });
90
+ }
91
+ collection
92
+ .find({ a: 'a' })
93
+ .skip(8)
94
+ .limit(10)
95
+ .toArray(function (err, res) {
96
+ expect(res[1].id).toBe(9);
97
+ expect(res.length).toBe(2); // only 2 left after skipping 8/10
98
+ done();
99
+ });
100
+ });
101
+ });
package/test/merger.js CHANGED
@@ -1,196 +1,196 @@
1
- var _ = require('lodash');
2
- var merge = require('../lib/merger');
3
-
4
- describe('Merger', () => {
5
- it('#merge with remove element', (done) => {
6
- var l1 = [{ a: 1 }, 'b', 'd'];
7
- var l2 = [{ a: 1 }, 'b'];
8
-
9
- var res = merge(l1, l2, {
10
- removed: function (e) {
11
- expect(e).toBe('d');
12
- done();
13
- },
14
- comparatorId: _.isEqual,
15
- comparator: _.isEqual
16
- });
17
- expect(_.isEqual(l2, res)).toBe(true);
18
-
19
- // console.log(_.difference(l1,l2));
20
- });
21
- it('#merge with remove complex element', (done) => {
22
- var l1 = [{ a: 1 }, 'b', 'd', { e: 1 }];
23
- var l2 = [{ a: 1 }, 'b'];
24
- var removed = [];
25
- var res = merge(l1, l2, {
26
- removed: function (e) {
27
- removed.push(e);
28
- },
29
- comparatorId: _.isEqual,
30
- comparator: _.isEqual
31
- });
32
- expect(removed.length).toBe(2);
33
- expect(_.isEqual(l2, res)).toBe(true);
34
- done();
35
-
36
- // console.log(_.difference(l1,l2));
37
- });
38
-
39
- it('#merge with objects instead of arrays', (done) => {
40
- var l1 = { 0: { a: 1 }, 1: 'b', 2: 'd', 3: { e: 1 } };
41
- var l2 = [{ a: 1 }, 'b'];
42
- var removed = [];
43
- var res = merge(l1, l2, {
44
- removed: function (e) {
45
- removed.push(e);
46
- },
47
- comparatorId: _.isEqual,
48
- comparator: _.isEqual
49
- });
50
- expect(removed.length).toBe(2);
51
- expect(_.isEqual(l2, res)).toBe(true);
52
- done();
53
-
54
- // console.log(_.difference(l1,l2));
55
- });
56
-
57
- it('#merge with one add element', (done) => {
58
- var l1 = [{ a: 1 }, 'b'];
59
- var l2 = [{ a: 1 }, 'b', 'c'];
60
-
61
- var res = merge(l1, l2, {
62
- added: function (e) {
63
- expect(e).toBe('c');
64
- done();
65
- },
66
- removed: function () {
67
- done(new Error('should not be called'));
68
- }
69
- });
70
- expect(_.isEqual(l2, res)).toBe(true);
71
- });
72
- it('#merge with one complex add element', (done) => {
73
- var l1 = [{ a: 1 }, 'b'];
74
- var l2 = [{ a: 1 }, 'b', { c: 1 }];
75
-
76
- var res = merge(l1, l2, {
77
- added: function (e) {
78
- expect(_.isEqual(e, { c: 1 })).toBe(true);
79
- done();
80
- },
81
- removed: function () {
82
- done(new Error('should not be called'));
83
- }
84
- });
85
- expect(_.isEqual(l2, res)).toBe(true);
86
- });
87
- it('#merge with one move element', (done) => {
88
- var l1 = [{ a: 1 }, 'b', { c: 1 }];
89
- var l2 = [{ a: 1 }, { c: 1 }, 'b'];
90
- var moved = [];
91
- var res = merge(l1, l2, {
92
- added: function () {
93
- done(new Error('should not be called'));
94
- },
95
- removed: function () {
96
- done(new Error('should not be called'));
97
- },
98
- moved: function (e, oldIndex, newIndex) {
99
- moved.push(arguments);
100
- }
101
- });
102
- expect(moved.length).toBe(1);
103
-
104
- expect(_.isEqual(l2, res)).toBe(true);
105
-
106
- done();
107
- });
108
- it('#merge with one changing elements', (done) => {
109
- var l1 = [{ _id: 1, a: 'Hello' }];
110
- var l2 = [{ _id: 1, a: 'Hej' }];
111
- var res = merge(l1, l2, {
112
- added: function () {
113
- done(new Error('should not be called'));
114
- },
115
- removed: function () {
116
- done(new Error('should not be called'));
117
- },
118
- moved: function () {
119
- done(new Error('should not be called'));
120
- },
121
- changed: function (o, n, index) {},
122
- comparatorId: function (a, b) {
123
- return a._id === b._id;
124
- }
125
- });
126
- expect(_.isEqual(l2, res)).toBe(true);
127
- done();
128
- });
129
-
130
- it('#merge true and false array', (done) => {
131
- var l1 = [true, false];
132
- var l2 = [false, true];
133
- var res = merge(l1, l2);
134
- expect(_.isEqual(l2, res)).toBe(true);
135
- done();
136
- });
137
- it('#merge complex moves', (done) => {
138
- var l1 = [
139
- { _id: 1, a: 'Hello1' },
140
- { _id: 2, a: 'Hello2' },
141
- { _id: 3, a: 'Hello3' },
142
- { _id: 4, a: 'Hello4' }
143
- ];
144
- var l2 = [
145
- { _id: 4, a: 'Hej4' },
146
- { _id: 3, a: 'Hej3' },
147
- { _id: 2, a: 'Hej2' },
148
- { _id: 1, a: 'Hej1' }
149
- ];
150
-
151
- var res = merge(
152
- l1,
153
- l2,
154
- _.defaults(
155
- {
156
- comparatorId: function (a, b) {
157
- return a._id === b._id;
158
- }
159
- },
160
- {}
161
- )
162
- );
163
- expect(_.isEqual(l2, res)).toBe(true);
164
- done();
165
- });
166
- it('#merge complex moves and add and remove', (done) => {
167
- var l1 = [
168
- { _id: 1, a: 'Hello1' },
169
- { _id: 2, a: 'Hello2' },
170
- { _id: 3, a: 'Hello3' },
171
- { _id: 4, a: 'Hello4' }
172
- ];
173
- var l2 = [
174
- { _id: 4, a: 'Hej4' },
175
- { _id: 99, a: 'Hej99' },
176
- { _id: 2, a: 'Hej2' },
177
- { _id: 1, a: 'Hej1' },
178
- { _id: 100, a: 'Hej100' }
179
- ];
180
-
181
- var res = merge(
182
- l1,
183
- l2,
184
- _.defaults(
185
- {
186
- comparatorId: function (a, b) {
187
- return a._id === b._id;
188
- }
189
- },
190
- {}
191
- )
192
- );
193
- expect(_.isEqual(l2, res)).toBe(true);
194
- done();
195
- });
196
- });
1
+ var _ = require('lodash');
2
+ var merge = require('../lib/merger');
3
+
4
+ describe('Merger', () => {
5
+ it('#merge with remove element', (done) => {
6
+ var l1 = [{ a: 1 }, 'b', 'd'];
7
+ var l2 = [{ a: 1 }, 'b'];
8
+
9
+ var res = merge(l1, l2, {
10
+ removed: function (e) {
11
+ expect(e).toBe('d');
12
+ done();
13
+ },
14
+ comparatorId: _.isEqual,
15
+ comparator: _.isEqual
16
+ });
17
+ expect(_.isEqual(l2, res)).toBe(true);
18
+
19
+ // console.log(_.difference(l1,l2));
20
+ });
21
+ it('#merge with remove complex element', (done) => {
22
+ var l1 = [{ a: 1 }, 'b', 'd', { e: 1 }];
23
+ var l2 = [{ a: 1 }, 'b'];
24
+ var removed = [];
25
+ var res = merge(l1, l2, {
26
+ removed: function (e) {
27
+ removed.push(e);
28
+ },
29
+ comparatorId: _.isEqual,
30
+ comparator: _.isEqual
31
+ });
32
+ expect(removed.length).toBe(2);
33
+ expect(_.isEqual(l2, res)).toBe(true);
34
+ done();
35
+
36
+ // console.log(_.difference(l1,l2));
37
+ });
38
+
39
+ it('#merge with objects instead of arrays', (done) => {
40
+ var l1 = { 0: { a: 1 }, 1: 'b', 2: 'd', 3: { e: 1 } };
41
+ var l2 = [{ a: 1 }, 'b'];
42
+ var removed = [];
43
+ var res = merge(l1, l2, {
44
+ removed: function (e) {
45
+ removed.push(e);
46
+ },
47
+ comparatorId: _.isEqual,
48
+ comparator: _.isEqual
49
+ });
50
+ expect(removed.length).toBe(2);
51
+ expect(_.isEqual(l2, res)).toBe(true);
52
+ done();
53
+
54
+ // console.log(_.difference(l1,l2));
55
+ });
56
+
57
+ it('#merge with one add element', (done) => {
58
+ var l1 = [{ a: 1 }, 'b'];
59
+ var l2 = [{ a: 1 }, 'b', 'c'];
60
+
61
+ var res = merge(l1, l2, {
62
+ added: function (e) {
63
+ expect(e).toBe('c');
64
+ done();
65
+ },
66
+ removed: function () {
67
+ done(new Error('should not be called'));
68
+ }
69
+ });
70
+ expect(_.isEqual(l2, res)).toBe(true);
71
+ });
72
+ it('#merge with one complex add element', (done) => {
73
+ var l1 = [{ a: 1 }, 'b'];
74
+ var l2 = [{ a: 1 }, 'b', { c: 1 }];
75
+
76
+ var res = merge(l1, l2, {
77
+ added: function (e) {
78
+ expect(_.isEqual(e, { c: 1 })).toBe(true);
79
+ done();
80
+ },
81
+ removed: function () {
82
+ done(new Error('should not be called'));
83
+ }
84
+ });
85
+ expect(_.isEqual(l2, res)).toBe(true);
86
+ });
87
+ it('#merge with one move element', (done) => {
88
+ var l1 = [{ a: 1 }, 'b', { c: 1 }];
89
+ var l2 = [{ a: 1 }, { c: 1 }, 'b'];
90
+ var moved = [];
91
+ var res = merge(l1, l2, {
92
+ added: function () {
93
+ done(new Error('should not be called'));
94
+ },
95
+ removed: function () {
96
+ done(new Error('should not be called'));
97
+ },
98
+ moved: function (e, oldIndex, newIndex) {
99
+ moved.push(arguments);
100
+ }
101
+ });
102
+ expect(moved.length).toBe(1);
103
+
104
+ expect(_.isEqual(l2, res)).toBe(true);
105
+
106
+ done();
107
+ });
108
+ it('#merge with one changing elements', (done) => {
109
+ var l1 = [{ _id: 1, a: 'Hello' }];
110
+ var l2 = [{ _id: 1, a: 'Hej' }];
111
+ var res = merge(l1, l2, {
112
+ added: function () {
113
+ done(new Error('should not be called'));
114
+ },
115
+ removed: function () {
116
+ done(new Error('should not be called'));
117
+ },
118
+ moved: function () {
119
+ done(new Error('should not be called'));
120
+ },
121
+ changed: function (o, n, index) {},
122
+ comparatorId: function (a, b) {
123
+ return a._id === b._id;
124
+ }
125
+ });
126
+ expect(_.isEqual(l2, res)).toBe(true);
127
+ done();
128
+ });
129
+
130
+ it('#merge true and false array', (done) => {
131
+ var l1 = [true, false];
132
+ var l2 = [false, true];
133
+ var res = merge(l1, l2);
134
+ expect(_.isEqual(l2, res)).toBe(true);
135
+ done();
136
+ });
137
+ it('#merge complex moves', (done) => {
138
+ var l1 = [
139
+ { _id: 1, a: 'Hello1' },
140
+ { _id: 2, a: 'Hello2' },
141
+ { _id: 3, a: 'Hello3' },
142
+ { _id: 4, a: 'Hello4' }
143
+ ];
144
+ var l2 = [
145
+ { _id: 4, a: 'Hej4' },
146
+ { _id: 3, a: 'Hej3' },
147
+ { _id: 2, a: 'Hej2' },
148
+ { _id: 1, a: 'Hej1' }
149
+ ];
150
+
151
+ var res = merge(
152
+ l1,
153
+ l2,
154
+ _.defaults(
155
+ {
156
+ comparatorId: function (a, b) {
157
+ return a._id === b._id;
158
+ }
159
+ },
160
+ {}
161
+ )
162
+ );
163
+ expect(_.isEqual(l2, res)).toBe(true);
164
+ done();
165
+ });
166
+ it('#merge complex moves and add and remove', (done) => {
167
+ var l1 = [
168
+ { _id: 1, a: 'Hello1' },
169
+ { _id: 2, a: 'Hello2' },
170
+ { _id: 3, a: 'Hello3' },
171
+ { _id: 4, a: 'Hello4' }
172
+ ];
173
+ var l2 = [
174
+ { _id: 4, a: 'Hej4' },
175
+ { _id: 99, a: 'Hej99' },
176
+ { _id: 2, a: 'Hej2' },
177
+ { _id: 1, a: 'Hej1' },
178
+ { _id: 100, a: 'Hej100' }
179
+ ];
180
+
181
+ var res = merge(
182
+ l1,
183
+ l2,
184
+ _.defaults(
185
+ {
186
+ comparatorId: function (a, b) {
187
+ return a._id === b._id;
188
+ }
189
+ },
190
+ {}
191
+ )
192
+ );
193
+ expect(_.isEqual(l2, res)).toBe(true);
194
+ done();
195
+ });
196
+ });