UNPKG

7.53 kBJavaScriptView Raw
1describe('unit', function () {
2
3 this.timeout(5000);
4
5 var expect = require('expect.js');
6
7 var shortid = require('shortid');
8
9 var random = require('./__fixtures/random');
10
11 var PareTree = require('..');
12
13 function getTree(){
14 return PareTree.create();
15 }
16
17 it('tests adding and finding a PR subscription', function (done) {
18
19 var pareTree = getTree();
20
21 pareTree.add('test*', {key:'testKey1', data:{test:'data'}});
22
23 pareTree.add('precise', {key:'testKey1', data:{test:'data'}});
24
25 expect(pareTree.search('testprecise').length).to.be(1);
26
27 done();
28 });
29
30 it('tests adding and finding a PP subscription', function (done) {
31
32 var pareTree = getTree();
33
34 pareTree.add('test', {key:'testKey1', data:{test:'data'}});
35
36 pareTree.add('precise', {key:'testKey1', data:{test:'data'}});
37
38 expect(pareTree.search('test').length).to.be(1);
39
40 done();
41 });
42
43 it('tests adding and finding subscriptions', function (done) {
44
45 var pareTree = getTree();
46
47 pareTree.add('test/*', {key:'testKey1', data:{test:'data'}});
48 pareTree.add('test/', {key:'testKey1', data:{test:'data'}});
49 pareTree.add('tes*/**', {key:'testKey1', data:{test:'data'}});
50 pareTree.add('test/', {key:'testKey1', data:{test:'data'}});
51 pareTree.add('*', {key:'testKey1', data:{test:'data'}});
52
53 expect(pareTree.search('test/1').length).to.be(3);
54 expect(pareTree.search('tester/').length).to.be(2);
55
56 done();
57 });
58
59 it('tests wildcard matching', function (done) {
60
61 var pareTree = getTree();
62
63 expect(pareTree.__wildcardMatch('/something/like/that', '/*/*/that')).to.be(true);
64 expect(pareTree.__wildcardMatch('/test/1', '/te*/*')).to.be(true);
65 expect(pareTree.__wildcardMatch('/test/match', '/test/mat*')).to.be(true);
66 expect(pareTree.__wildcardMatch('/test/complex/and/short','/test/complex/*/short')).to.be(true);
67 expect(pareTree.__wildcardMatch('/test/complex/and/short','/test/complex/**')).to.be(true);
68 expect(pareTree.__wildcardMatch('/test/complex/and/short', '/test/*/*/short')).to.be(true);
69 expect(pareTree.__wildcardMatch('/test/complex/and/short', '/test/**')).to.be(true);
70 expect(pareTree.__wildcardMatch('/test/complex/and/short','/test/**/short')).to.be(true);
71 expect(pareTree.__wildcardMatch('/test/complex/and/long','/test/complex/*/short')).to.be(false);
72 expect(pareTree.__wildcardMatch('/blah/complex/and/short', '/test/complex/*')).to.be(false);
73 expect(pareTree.__wildcardMatch('/test/complex/and/long', '/test/*/*/short')).to.be(false);
74 expect(pareTree.__wildcardMatch('/tes/complex/and/short', '/test*')).to.be(false);
75 expect(pareTree.__wildcardMatch('/test/complex/and/short/', '/test/**/short*')).to.be(true);
76 expect(pareTree.__wildcardMatch('/test/comp/**', '/test/**')).to.be(true);
77
78 done();
79 });
80
81 it('tests removing subscriptions by id', function (done) {
82
83 var pareTree = getTree();
84
85 pareTree.add('test', {key:'testKey1', data:{test:'data'}});
86
87 var toRemoveRef = pareTree.add('test', {key:'testKey2', data:{test:'data'}});
88
89 var found = pareTree.search('test');
90
91 expect(found.length).to.be(2);
92
93 expect(pareTree.remove(toRemoveRef).length).to.be(1);
94
95 found = pareTree.search('test');
96
97 expect(found.length).to.be(1);
98
99 done();
100
101 });
102
103 it('tests removing subscriptions by none-wild-card path', function (done) {
104
105 var pareTree = getTree();
106
107 pareTree.add('test1', {key:'testKey1', data:{test:'data'}});
108
109 pareTree.add('tes*', {key:'testKey2', data:{test:'data'}});
110
111 var found = pareTree.search('test1');
112
113 expect(found.length).to.be(2);
114
115 expect(pareTree.remove('test1').length).to.be(1);
116
117 found = pareTree.search('test');
118
119 expect(found.length).to.be(1);
120
121 done();
122 });
123
124 it('tests removing subscriptions by wild-card path', function (done) {
125
126 var pareTree = getTree();
127
128 pareTree.add('test', {key:'testKey1', data:{test:'data'}});
129
130 pareTree.add('tes*', {key:'testKey2', data:{test:'data'}});
131
132 var found = pareTree.search('test');
133
134 expect(found.length).to.be(2);
135
136 expect(pareTree.remove('tes*').length).to.be(1);
137
138 found = pareTree.search('test');
139
140 expect(found.length).to.be(1);
141
142 done();
143 });
144
145 it('tests removing subscriptions by subscriber', function (done) {
146
147 var pareTree = getTree();
148
149 pareTree.add('tes*', {key:'testKey1', data:{test:'data'}});
150
151 pareTree.add('te*', {key:'testKey2', data:{test:'data'}});
152
153 pareTree.add('t*', {key:'testKey3', data:{test:'data'}});
154
155 var found = pareTree.search('test');
156
157 expect(found.length).to.be(3);
158
159 expect(pareTree.remove({key:'testKey3'}).length).to.be(1);
160
161 found = pareTree.search('test');
162
163 expect(found.length).to.be(2);
164
165 done();
166 });
167
168 it('tests removing subscriptions by path and subscriber', function (done) {
169
170 var pareTree = getTree();
171
172 pareTree.add('te*', {key:'testKey1', data:{test:'data'}});
173
174 pareTree.add('test*', {key:'testKey2', data:{test:'data'}});
175
176 pareTree.add('test*', {key:'testKey3', data:{test:'data'}});
177
178 pareTree.add('test1', {key:'testKey3', data:{test:'data'}});
179
180 var found = pareTree.search('test1');
181
182 expect(found.length).to.be(4);
183
184 expect(pareTree.remove({key:'testKey3', path:'test*'}).length).to.be(1);
185
186 found = pareTree.search('test1');
187
188 expect(found.length).to.be(3);
189
190 done();
191
192 });
193
194 it('tests filtering a search for subscriptions', function (done) {
195
196 var pareTree = getTree();
197
198 pareTree.add('test1', {key:'testKey1', data:{test:'data'}});
199
200 pareTree.add('test*', {key:'testKey2', data:{test:'data'}});
201
202 pareTree.add('te*', {key:'testKey3', data:{test:'data'}});
203
204 pareTree.add('t*', {key:'testKey3', data:{test:'data'}});
205
206 var found = pareTree.search('test1', {filter:{key:'testKey3'}});
207
208 expect(found.length).to.be(2);
209
210 found = pareTree.search('test1');
211
212 expect(found.length).to.be(4);
213
214 pareTree.add('t*', {key:'testKey3', data:{test:'data', value:3}});
215
216 found = pareTree.search('test1', {filter:{'data.value':{'$gte':3}}});
217
218 expect(found.length).to.be(1);
219
220 done();
221 });
222
223 it('tests adding and finding and removing subscriptions', function (done) {
224
225 var pareTree = getTree();
226
227 pareTree.add('test/*', {key:'testKey1', data:{test:'data'}});
228 pareTree.add('test/', {key:'testKey1', data:{test:'data'}});
229 pareTree.add('tes*/**', {key:'testKey1', data:{test:'data'}});
230 pareTree.add('test/', {key:'testKey1', data:{test:'data'}});
231 pareTree.add('*', {key:'testKey1', data:{test:'data'}});
232
233 expect(pareTree.search('test/1').length).to.be(3);
234 expect(pareTree.search('tester/').length).to.be(2);
235
236 pareTree.remove({key:'testKey1', path:'*'});
237
238 expect(pareTree.search('test/1').length).to.be(2);
239 expect(pareTree.search('tester/').length).to.be(1);
240
241 pareTree.remove({path:'test/*'});
242
243 expect(pareTree.search('test/1').length).to.be(1);
244
245 done();
246 });
247
248 it('tests adding and finding and removing subscriptions on 2 trees', function (done) {
249
250 var pareTree1 = getTree();
251 var pareTree2 = getTree();
252
253 pareTree1.add('test/*', {key:'testKey1', data:{test:'data'}});
254 pareTree2.add('test/*', {key:'testKey1', data:{test:'data'}});
255
256 expect(pareTree1.search('test/1').length).to.be(1);
257 expect(pareTree2.search('test/1').length).to.be(1);
258
259 pareTree1.remove({key:'testKey1', path:'test/*'});
260
261 expect(pareTree1.search('test/1').length).to.be(0);
262 expect(pareTree2.search('test/1').length).to.be(1);
263
264 done();
265
266 });
267
268});