Issues (791)

test/request.js (3 issues)

1
var chai = require('chai');
2
var path = require('path');
3
4
var config = require('../src/cli').config
5
config.set({root: path.join(__dirname,'fixtures')})
6
7
var cmsData = require('../src/cli').cmsData
8
var Manager = require('../src/cli').Manager;
9
var fse = require('fs-extra');
10
11
describe('Request', function() {
12
  before( function(done) {
13
    Manager.instance.init()
14
      .then(function () {
15
        Manager.instance._whereKeys = ['title', 'priority', 'abe_meta', 'articles']
16
        Manager.instance.updateList()
17
18
        this.fixture = {
19
          tag: fse.readFileSync(path.join(__dirname, 'fixtures', 'templates', 'article.html'), 'utf8'),
20
          jsonArticle: fse.readJsonSync(path.join(__dirname, 'fixtures', 'data', 'article-1.json')),
21
          jsonHomepage: fse.readJsonSync(path.join(__dirname, 'fixtures', 'data', 'homepage-1.json'))
22
        }
23
        done()
24
        
25
      }.bind(this))
26
  });
27
28
  /**
29
   * cmsData.sql.executeQuery
30
   * 
31
   */
32
  it('cmsData.sql.executeQuery()', function(done) {
33
    try {
34
      var match = 'select * from ../'
35
      var jsonPage = {}
36
      var res = cmsData.sql.handleSqlRequest(match, {})
37
38
      chai.assert.equal(res.string, 'select ["*"] from ["___abe_dot______abe_dot______abe___"] ', 'select not well formatted')
39
      done();
40
    } catch (x) {
41
      done(x);
42
    }
43
  });
44
45
  /**
46
   * cmsData.sql.keepOnlyPublishedPost
47
   * 
48
   */
49
  it('cmsData.sql.keepOnlyPublishedPost()', function() {
50
    var res = cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList())
51
    chai.expect(res).to.have.length(2);
52
  });
53
54
  /**
55
   * cmsData.sql.executeFromClause
56
   * 
57
   */
58
  it('cmsData.sql.executeFromClause()', function() {
59
    var res = cmsData.sql.executeFromClause(cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()), ['/'], ['/'])
60
    chai.expect(res).to.have.length(2);
61
  });
62
63
  it('cmsData.sql.executeWhereClause() =', function() {
64
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`article`', {})
65
    var res = cmsData.sql.executeWhereClause(
66
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
67
      request.where,
68
      request.limit,
69
      request.columns, {}
70
    )
71
    chai.expect(res, '`abe_meta.template`=`article`').to.have.length(1);
72
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
73
74
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
75
    res = cmsData.sql.executeWhereClause(
76
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
77
      request.where,
78
      request.limit,
79
      request.columns,
80
      this.fixture.jsonHomepage
81
    )
82
    chai.expect(res, '`abe_meta.template`=`{{abe_meta.template}}`').to.have.length(1);
83
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
84
85
    request = cmsData.sql.handleSqlRequest('select title from ./ where `{{abe_meta.template}}`=`{{abe_meta.template}}`', this.fixture.jsonHomepage)
86
    res = cmsData.sql.executeWhereClause(
87
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
88
      request.where,
89
      request.limit,
90
      request.columns,
91
      this.fixture.jsonHomepage
92
    )
93
    chai.expect(res, '`{{abe_meta.template}}`=`{{abe_meta.template}}`').to.have.length(1);
94
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
95
  });
96
  it('cmsData.sql.executeWhereClause() !=', function() {
97
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`!=`homepage`', {})
98
    var res = cmsData.sql.executeWhereClause(
99
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
100
      request.where,
101
      request.limit,
102
      request.columns, {}
103
    )
104
    chai.expect(res, '`abe_meta.template`!=`homepage`').to.have.length(1);
105
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
106
  });
107
  it('cmsData.sql.executeWhereClause() >', function() {
108
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>`1`', {})
109
    var res = cmsData.sql.executeWhereClause(
110
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
111
      request.where,
112
      request.limit,
113
      request.columns,
114
      {}
115
    )
116
    chai.expect(res, '`priority`>`1`').to.have.length(1);
117
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
118
  });
119
  it('cmsData.sql.executeWhereClause() >=', function() {
120
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`>=`1`', {})
121
    var res = cmsData.sql.executeWhereClause(
122
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
123
      request.where,
124
      request.limit,
125
      request.columns,
126
      {}
127
    )
128
    chai.expect(res, '`priority`>=`1`').to.have.length(2);
129
  });
130
  it('cmsData.sql.executeWhereClause() <', function() {
131
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<`1`', {})
132
    var res = cmsData.sql.executeWhereClause(
133
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
134
      request.where,
135
      request.limit,
136
      request.columns,
137
      {}
138
    )
139
    chai.expect(res, '`priority`<`1`').to.have.length(0);
140
  });
141
  it('cmsData.sql.executeWhereClause() <=', function() {
142
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `priority`<=`1`', {})
143
    var res = cmsData.sql.executeWhereClause(
144
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
145
      request.where,
146
      request.limit,
147
      request.columns,
148
      {}
149
    )
150
    chai.expect(res, ' `priority`<=`1`').to.have.length(1);
151
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
152
  });
153
  it('cmsData.sql.executeWhereClause() LIKE', function() {
154
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` LIKE `home`', {})
155
    var res = cmsData.sql.executeWhereClause(
156
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
157
      request.where,
158
      request.limit,
159
      request.columns,
160
      {}
161
    )
162
    chai.expect(res, '`abe_meta.template` LIKE `home`').to.have.length(1);
163
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
164
  });
165
  it('cmsData.sql.executeWhereClause() NOT LIKE', function() {
166
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT LIKE `home`', {})
167
    var res = cmsData.sql.executeWhereClause(
168
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
169
      request.where,
170
      request.limit,
171
      request.columns,
172
      {}
173
    )
174
    chai.expect(res, '`abe_meta.template` NOT LIKE `home`').to.have.length(1);
175
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
176
  });
177
  it('cmsData.sql.executeWhereClause() AND', function() {
178
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` AND title=`homepage`', {})
179
    var res = cmsData.sql.executeWhereClause(
180
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
181
      request.where,
182
      request.limit,
183
      request.columns,
184
      {}
185
    )
186
    chai.expect(res, '`abe_meta.template`=`homepage` AND title=`homepage`').to.have.length(1);
187
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
188
  });
189
  it('cmsData.sql.executeWhereClause() OR', function() {
190
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template`=`homepage` OR `abe_meta.template`=`article`', {})
191
    var res = cmsData.sql.executeWhereClause(
192
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
193
      request.where,
194
      request.limit,
195
      request.columns,
196
      {}
197
    )
198
    chai.expect(res, '`abe_meta.template`=`homepage` OR `abe_meta.template`=`article`').to.have.length(2);
199
  });
200
  it('cmsData.sql.executeWhereClause() IN', function() {
201
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`homepage`,`test`)', {})
202
    var res = cmsData.sql.executeWhereClause(
203
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
204
      request.where,
205
      request.limit,
206
      request.columns,
207
      {}
208
    )
209
    chai.expect(res, '`abe_meta.template` IN (`homepage`,`test`)').to.have.length(1);
210
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
211
212
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` IN (`{{articles}}`)', this.fixture.jsonHomepage)
213
    res = cmsData.sql.executeWhereClause(
214
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
215
      request.where,
216
      request.limit,
217
      request.columns,
218
      this.fixture.jsonHomepage
219
    )
220
    chai.expect(res, '`abe_meta.template` IN (`{{articles}}`').to.have.length(1);
221
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
222
223
    request = cmsData.sql.handleSqlRequest('select title from ./ where `articles[].title` IN (`{{articles}}`)', this.fixture.jsonHomepage)
224
    res = cmsData.sql.executeWhereClause(
225
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
226
      request.where,
227
      request.limit,
228
      request.columns,
229
      this.fixture.jsonHomepage
230
    )
231
    chai.expect(res, '`articles[].title` IN (`{{articles}}`').to.have.length(1);
232
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find article but found ' + res[0].title);
233
234
    request = cmsData.sql.handleSqlRequest('select title from ./ where `articles.title` IN (`{{articles}}`)', this.fixture.jsonHomepage)
235
    res = cmsData.sql.executeWhereClause(
236
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
237
      request.where,
238
      request.limit,
239
      request.columns,
240
      this.fixture.jsonHomepage
241
    )
242
    chai.expect(res, '`articles.title` IN (`{{articles}}`').to.have.length(1);
243
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find article but found ' + res[0].title);
244
245
    request = cmsData.sql.handleSqlRequest('select title from ./ where `articles.fakeAttribute` IN (`{{articles}}`)', this.fixture.jsonHomepage)
246
    res = cmsData.sql.executeWhereClause(
247
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
248
      request.where,
249
      request.limit,
250
      request.columns,
251
      this.fixture.jsonHomepage
252
    )
253
    chai.expect(res, '`articles.fakeAttribute` IN (`{{articles}}`').to.have.length(0);
254
255
    request = cmsData.sql.handleSqlRequest('select title from ./ where `fakekey.fakeAttribute` IN (`{{articles}}`)', this.fixture.jsonHomepage)
256
    res = cmsData.sql.executeWhereClause(
257
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
258
      request.where,
259
      request.limit,
260
      request.columns,
261
      this.fixture.jsonHomepage
262
    )
263
    chai.expect(res, '`fakekey.fakeAttribute` IN (`{{articles}}`').to.have.length(0);
264
  });
265
  it('cmsData.sql.executeWhereClause() NOT IN', function() {
266
    var request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`homepage`,`test`)', {})
267
    var res = cmsData.sql.executeWhereClause(
268
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
269
      request.where,
270
      request.limit,
271
      request.columns,
272
      {}
273
    )
274
    chai.expect(res, '`abe_meta.template` NOT IN (`homepage`,`test`)').to.have.length(1);
275
    chai.assert.equal(res[0].title, 'article', 'expected select to find article but found ' + res[0].title);
276
277
    request = cmsData.sql.handleSqlRequest('select title from ./ where `abe_meta.template` NOT IN (`{{articles}}`)', this.fixture.jsonHomepage)
278
    res = cmsData.sql.executeWhereClause(
279
      cmsData.sql.keepOnlyPublishedPost(Manager.instance.getList()),
280
      request.where,
281
      request.limit,
282
      request.columns,
283
      this.fixture.jsonHomepage
284
    )
285
    chai.expect(res, '`abe_meta.template` NOT IN (`{{articles}}`)').to.have.length(1);
286
    chai.assert.equal(res[0].title, 'homepage', 'expected select to find homepage but found ' + res[0].title);
287
  });
288
289
  it('cmsData.sql.getSourceType()', function() {
290
    chai.expect(cmsData.sql.getSourceType('http://google.com')).to.equal('url');
291
    chai.expect(cmsData.sql.getSourceType('select * from test')).to.equal('request');
292
    chai.expect(cmsData.sql.getSourceType('{"test":"test"}')).to.equal('value');
293
    chai.expect(cmsData.sql.getSourceType('references.json')).to.equal('file');
294
    chai.expect(cmsData.sql.getSourceType('test')).to.equal('other');
295
  });
296
297
  it('cmsData.source.requestList()', function(done) {
298
    var matches = cmsData.regex.getTagAbeTypeRequest(this.fixture.tag)
299
300
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
301
302
    var attributes = cmsData.attributes.getAll(matches[0][0], {})
303
    chai.expect(matches[0][0]).to.not.be.null
0 ignored issues
show
The result of the property access to chai.expect(matches.0.0).to.not.be.null is not used.
Loading history...
304
305
    var jsonPage = {}
306
    cmsData.source.requestList(attributes, '', matches[0][0], jsonPage)
307
      .then(function () {
308
        chai.expect(jsonPage.abe_source).to.not.be.undefined
0 ignored issues
show
The result of the property access to chai.expect(jsonPage.abe...ce).to.not.be.undefined is not used.
Loading history...
309
        done()
310
      })
311
  });
312
313
  it('cmsData.sql.isInStatementCorrect()', function() {
314
    var values = {
315
      "left":"ok",
316
      "right":["ok","fok"]
317
    }
318
319
    var res = cmsData.sql.isInStatementCorrect(values, false)
320
    chai.assert.equal(res, true, 'expected to find true found ' + res);
321
322
    res = cmsData.sql.isInStatementCorrect(values, true)
323
    chai.assert.equal(res, false, 'expected to find false found ' + res);
324
325
    values = {
326
      "left":[
327
        "nok",
328
        "ok"
329
      ],
330
      "right":["ok","fok"]
331
    }
332
333
    res = cmsData.sql.isInStatementCorrect(values, false)
334
    chai.assert.equal(res, true, 'expected to find true found ' + res);
335
336
    res = cmsData.sql.isInStatementCorrect(values, true)
337
    chai.assert.equal(res, false, 'expected to find false found ' + res);
338
339
    var values = {
340
      "left":"nok",
341
      "right":["ok","fok"]
342
    }
343
344
    var res = cmsData.sql.isInStatementCorrect(values, false)
345
    chai.assert.equal(res, false, 'expected to find false found ' + res);
346
347
    res = cmsData.sql.isInStatementCorrect(values, true)
348
    chai.assert.equal(res, true, 'expected to find true found ' + res);
349
350
    values = {
351
      "left":[
352
        "nok",
353
        "nok2"
354
      ],
355
      "right":["ok","fok"]
356
    }
357
358
    res = cmsData.sql.isInStatementCorrect(values, false)
359
    chai.assert.equal(res, false, 'expected to find false found ' + res);
360
361
    res = cmsData.sql.isInStatementCorrect(values, true)
362
    chai.assert.equal(res, true, 'expected to find true found ' + res);
363
  });
364
});
365