UNPKG

2.97 kBJavaScriptView Raw
1$(function () {
2 var $b = $('#builder');
3
4 QUnit.module('plugins.not-group', {
5 afterEach: function () {
6 $b.queryBuilder('destroy');
7 }
8 });
9
10 QUnit.test('Not checkbox', function (assert) {
11 $b.queryBuilder({
12 filters: basic_filters,
13 rules: basic_rules,
14 plugins: ['not-group']
15 });
16
17 assert.ok(
18 $b.find('[data-not=group]').length > 0,
19 'Should add "not" buttons"'
20 );
21
22 $('#builder_group_0>.rules-group-header [data-not=group]').trigger('click');
23
24 assert.ok(
25 $b.queryBuilder('getModel').not,
26 'The root group should have "not" flag set to true'
27 );
28
29 assert.ok(
30 $b.queryBuilder('getRules').not,
31 'The root json should have "not" flag set to true'
32 );
33 });
34
35 QUnit.test('SQL export', function (assert) {
36 $b.queryBuilder({
37 filters: basic_filters,
38 rules: rules,
39 plugins: ['not-group']
40 });
41
42 assert.equal(
43 $b.queryBuilder('getSQL').sql,
44 sql,
45 'Should export SQL with NOT function'
46 );
47
48 $b.queryBuilder('reset');
49
50 $b.queryBuilder('setRulesFromSQL', sql);
51
52 assert.rulesMatch(
53 $b.queryBuilder('getRules'),
54 rules,
55 'Should parse NOT SQL function'
56 );
57 });
58
59 QUnit.test('Mongo export', function (assert) {
60 $b.queryBuilder({
61 filters: basic_filters,
62 rules: rules,
63 plugins: ['not-group']
64 });
65
66 assert.deepEqual(
67 $b.queryBuilder('getMongo'),
68 mongo,
69 'Should export MongoDB with $nor function'
70 );
71
72 $b.queryBuilder('reset');
73
74 $b.queryBuilder('setRulesFromMongo', mongo);
75
76 assert.rulesMatch(
77 $b.queryBuilder('getRules'),
78 rules,
79 'Should parse $nor MongoDB function'
80 );
81 });
82
83 var rules = {
84 condition: 'OR',
85 rules: [{
86 id: 'name',
87 operator: 'equal',
88 value: 'Mistic'
89 }, {
90 condition: 'AND',
91 not: true,
92 rules: [{
93 id: 'price',
94 operator: 'less',
95 value: 10.25
96 }, {
97 id: 'category',
98 field: 'category',
99 operator: 'in',
100 value: ['mo', 'mu']
101 }]
102 }]
103 };
104
105 var sql = 'name = \'Mistic\' OR ( NOT ( price < 10.25 AND category IN(\'mo\', \'mu\') ) ) ';
106
107 var mongo = {
108 "$or": [{
109 "name": "Mistic"
110 },
111 {
112 "$nor": [{
113 "$and": [{
114 "price": {"$lt": 10.25}
115 }, {
116 "category": {"$in": ["mo", "mu"]}
117 }]
118 }]
119 }]
120 };
121
122});