|
1 | 1 | var expect = require('chai').expect;
|
| 2 | +var json1 = require('ot-json1'); |
2 | 3 | var ShareDbMongo = require('../index');
|
3 | 4 |
|
4 | 5 | describe('skipPoll', function() {
|
@@ -111,6 +112,51 @@ describe('skipPoll', function() {
|
111 | 112 | assertNotSkips({op: [{p: ['a'], dummyOp: 1}, {p: [], dummyOp: 1}]}, query);
|
112 | 113 | assertNotSkips({op: [{p: [], dummyOp: 1}, {p: ['x'], dummyOp: 1}]}, query);
|
113 | 114 | });
|
| 115 | + |
| 116 | + it('json1 root-level changes', function() { |
| 117 | + // Root-level doc changes should always cause a query poll. |
| 118 | + assertNotSkips({op: json1.insertOp('', {brandNew: 'value'})}, query); |
| 119 | + assertNotSkips({op: json1.removeOp('')}, query); |
| 120 | + }); |
| 121 | + |
| 122 | + it('json1 ops not affecting queried fields', function() { |
| 123 | + assertSkips({op: json1.insertOp(['notQueried'], 'hello')}, query); |
| 124 | + assertSkips({op: json1.moveOp(['notQueried'], ['alsoNotQueried'])}, query); |
| 125 | + assertSkips({op: json1.removeOp(['notQueried'], 'hello')}, query); |
| 126 | + }); |
| 127 | + |
| 128 | + it('json1 insert ops', function() { |
| 129 | + assertIfSkips({op: json1.insertOp(['a'], 'hello')}, query, !has(fields, 'a')); |
| 130 | + assertIfSkips({op: json1.insertOp(['a', 'b'], 'hello')}, query, !has(fields, 'a')); |
| 131 | + assertIfSkips({op: json1.insertOp(['a', 0], 'hello')}, query, !has(fields, 'a')); |
| 132 | + }); |
| 133 | + |
| 134 | + it('json1 remove ops', function() { |
| 135 | + assertIfSkips({op: json1.removeOp(['a'], 'hello')}, query, !has(fields, 'a')); |
| 136 | + assertIfSkips({op: json1.removeOp(['a', 'b'], 'hello')}, query, !has(fields, 'a')); |
| 137 | + assertIfSkips({op: json1.removeOp(['a', 0], 'hello')}, query, !has(fields, 'a')); |
| 138 | + }); |
| 139 | + |
| 140 | + it('json1 move ops', function() { |
| 141 | + assertIfSkips({op: json1.moveOp(['a'], ['x'])}, query, !has(fields, 'a') && !has(fields, 'x')); |
| 142 | + assertIfSkips({op: json1.moveOp(['x'], ['a'])}, query, !has(fields, 'x') && !has(fields, 'a')); |
| 143 | + assertIfSkips({op: json1.moveOp(['a'], ['notQueried'])}, query, !has(fields, 'a')); |
| 144 | + assertIfSkips({op: json1.moveOp(['notQueried'], ['a'])}, query, !has(fields, 'a')); |
| 145 | + assertSkips({op: json1.moveOp(['notQueried'], ['alsoNotQueried'])}, query); |
| 146 | + }); |
| 147 | + |
| 148 | + it('json1 composed ops', function() { |
| 149 | + var compositeNotQueried = json1.type.compose( |
| 150 | + json1.insertOp(['notQueried1'], 'hello'), |
| 151 | + json1.moveOp(['notQueried2'], ['notQueried3']) |
| 152 | + ); |
| 153 | + assertSkips({op: compositeNotQueried}, query); |
| 154 | + var compositeQueried = json1.type.compose( |
| 155 | + json1.insertOp(['notQueried1'], 'hello'), |
| 156 | + json1.moveOp(['notQueried2'], ['a']) |
| 157 | + ); |
| 158 | + assertIfSkips({op: compositeQueried}, query, !has(fields, 'a')); |
| 159 | + }); |
114 | 160 | });
|
115 | 161 | }
|
116 | 162 | });
|
|
0 commit comments