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 = {} |
||
0 ignored issues
–
show
Unused Code
introduced
by
![]() |
|||
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
|
|||
301 | |||
302 | var attributes = cmsData.attributes.getAll(matches[0][0], {}) |
||
303 | chai.expect(matches[0][0]).to.not.be.null |
||
0 ignored issues
–
show
|
|||
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
|
|||
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 = { |
||
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
values already seems to be declared on line 314 . Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. ![]() |
|||
340 | "left":"nok", |
||
341 | "right":["ok","fok"] |
||
342 | } |
||
343 | |||
344 | var res = cmsData.sql.isInStatementCorrect(values, false) |
||
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
res already seems to be declared on line 319 . Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. ![]() |
|||
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 |