UNPKG

21.8 kBJavaScriptView Raw
1var fs = require('fs');
2var path = require('path');
3var chai = require('chai');
4var JSDOM = require('jsdom').JSDOM;
5const expect = chai.expect;
6var app = require('../lib/anychart-node');
7
8function partial(fn, var_args) {
9 var args = Array.prototype.slice.call(arguments, 1);
10 return function() {
11 var newArgs = args.slice();
12 newArgs.push.apply(newArgs, arguments);
13 return fn.apply(this, newArgs);
14 };
15}
16
17function createWindow() {
18 return (new JSDOM('', {runScripts: 'dangerously'})).window;
19}
20
21function createAnychart() {
22 return require('anychart')(createWindow());
23}
24
25describe('Method', function() {
26 describe('\'exportTo\' with', function() {
27 describe('second param as string (output type) | to pdf', function() {
28 var outputType = 'pdf';
29
30 it('check promise', function(done) {
31 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
32
33 app.exportTo(data, outputType).then(function(image) {
34 expect(image).to.be.instanceof(Buffer);
35
36 done();
37 }, function(err) {
38 console.log(err);
39 });
40 });
41
42 it('javascript -> pdf', function(done) {
43 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.labels(false).legend(false).title(false); chart.container('container').draw();});";
44
45 app.exportTo(data, outputType, function(err, image) {
46 expect(image).to.be.instanceof(Buffer);
47 expect(err).to.be.null;
48
49 done();
50 });
51 });
52
53 it('xml -> pdf', function(done) {
54 var data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
55
56 app.exportTo(data, outputType, function(err, image) {
57 expect(image).to.be.instanceof(Buffer);
58 expect(err).to.be.null;
59
60 done();
61 });
62 });
63
64 it('json -> pdf', function(done) {
65 var data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
66
67 app.exportTo(data, outputType, function(err, image) {
68 expect(image).to.be.instanceof(Buffer);
69 expect(err).to.be.null;
70
71 done();
72 });
73 });
74
75 it('object -> pdf', function(done) {
76 var anychart = createAnychart();
77
78 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
79 chart.container('container').draw();
80
81 app.exportTo(chart, outputType, function(err, image) {
82 expect(image).to.be.instanceof(Buffer);
83 expect(err).to.be.null;
84
85 done();
86 });
87 });
88
89 });
90
91 describe('second param as string (output type) | to png', function() {
92 var outputType = 'png';
93
94 it('check promise', function(done) {
95 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
96
97 app.exportTo(data, outputType).then(function(image) {
98 expect(image).to.be.instanceof(Buffer);
99
100 done();
101 }, function(err) {
102 console.log(err);
103 });
104 });
105
106 it('javascript -> pdf', function(done) {
107 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.labels(false).legend(false).title(false); chart.container('container').draw();});";
108
109 app.exportTo(data, outputType, function(err, image) {
110 expect(image).to.be.instanceof(Buffer);
111 expect(err).to.be.null;
112
113 done();
114 });
115 });
116
117 it('xml -> pdf', function(done) {
118 var data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
119
120 app.exportTo(data, outputType, function(err, image) {
121 expect(image).to.be.instanceof(Buffer);
122 expect(err).to.be.null;
123
124 done();
125 });
126 });
127
128 it('json -> pdf', function(done) {
129 var data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
130
131 app.exportTo(data, outputType, function(err, image) {
132 expect(image).to.be.instanceof(Buffer);
133 expect(err).to.be.null;
134
135 done();
136 });
137 });
138
139 it('object -> pdf', function(done) {
140 var anychart = createAnychart();
141
142 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
143 chart.container('container').draw();
144
145 app.exportTo(chart, outputType, function(err, image) {
146 expect(image).to.be.instanceof(Buffer);
147 expect(err).to.be.null;
148
149 done();
150 });
151 });
152
153 });
154
155 describe('second param as object | to png', function() {
156 it('check promise', function(done) {
157 var params = {
158 outputType: 'png'
159 };
160
161 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
162
163 app.exportTo(data, params).then(function(image) {
164 expect(image).to.be.instanceof(Buffer);
165
166 done();
167 }, function(err) {
168 console.log(err);
169 });
170 });
171
172 it('javascript -> png', function(done) {
173 var params = {
174 outputType: 'png'
175 };
176
177 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
178 app.exportTo(data, params, function(err, image) {
179 expect(image).to.be.instanceof(Buffer);
180 expect(err).to.be.null;
181
182 done();
183 });
184 });
185
186 it('xml -> png', function(done) {
187 var params = {
188 outputType: 'png'
189 };
190
191 var data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
192 app.exportTo(data, params, function(err, image) {
193 expect(image).to.be.instanceof(Buffer);
194 expect(err).to.be.null;
195
196 done();
197 });
198 });
199
200 it('json -> png', function(done) {
201 var params = {
202 outputType: 'png'
203 };
204
205 var data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
206 app.exportTo(data, params, function(err, image) {
207 expect(image).to.be.instanceof(Buffer);
208 expect(err).to.be.null;
209
210 done();
211 });
212 });
213
214 it('chart -> png | without defined document', function(done) {
215 var params = {
216 outputType: 'png'
217 };
218
219 var anychart = createAnychart();
220
221 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
222 chart.container('container').draw();
223
224 app.exportTo(chart, params, function(err, image) {
225 expect(image).to.be.instanceof(Buffer);
226 expect(err).to.be.null;
227
228 done();
229 });
230 });
231
232 it('chart -> png | with defined document', function(done) {
233 var params = {
234 outputType: 'png'
235 };
236
237 var doc = createWindow().document;
238 var anychart = require('anychart')(doc.defaultView);
239
240 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
241 chart.container('container').draw();
242
243 params.containerId = 'container';
244 params.document = doc;
245
246 app.exportTo(chart, params, function(err, image) {
247 expect(image).to.be.instanceof(Buffer);
248 expect(err).to.be.null;
249
250 done();
251 });
252 });
253
254 it('stage -> png | without defined document', function(done) {
255 var params = {
256 outputType: 'png'
257 };
258
259 var doc = createWindow().document;
260 var anychart = require('anychart')(doc.defaultView);
261
262 app.anychartify(doc);
263
264 var stage = anychart.graphics.create('container');
265 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
266 chart.container(stage).draw();
267
268 app.exportTo(stage, params, function(err, image) {
269 expect(image).to.be.null;
270 expect(err).to.be.instanceOf(Error);
271
272 done();
273 });
274 });
275
276 it('stage -> png | with defined document', function(done) {
277 var params = {
278 outputType: 'png'
279 };
280
281 var doc = (new (require('jsdom').JSDOM)('<div id="container"></div>', {runScripts: 'dangerously'})).window.document;
282 var anychart = require('anychart')(doc.defaultView);
283
284 app.anychartify(doc);
285
286 var stage = anychart.graphics.create('container');
287 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
288 chart.container(stage).draw();
289
290 params.containerId = 'container';
291 params.document = doc;
292
293 app.exportTo(stage, params, function(err, image) {
294 expect(image).to.be.instanceof(Buffer);
295 expect(err).to.be.null;
296
297 done();
298 });
299 });
300 });
301
302 describe('second param as undefined | default - jpg', function() {
303 it('check promise', function(done) {
304 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
305
306 app.exportTo(data).then(function(image) {
307 expect(image).to.be.instanceof(Buffer);
308
309 done();
310 }, function(err) {
311 console.log(err);
312 });
313 });
314
315 it('javascript', function(done) {
316 var data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
317
318 app.exportTo(data, function(err, image) {
319 expect(image).to.be.instanceof(Buffer);
320 expect(err).to.be.null;
321
322 done();
323 });
324 });
325
326 it('xml', function(done) {
327 var data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
328
329 app.exportTo(data, function(err, image) {
330 expect(image).to.be.instanceof(Buffer);
331 expect(err).to.be.null;
332
333 done();
334 });
335 });
336
337 it('json', function(done) {
338 var data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
339
340 app.exportTo(data, function(err, image) {
341 expect(image).to.be.instanceof(Buffer);
342 expect(err).to.be.null;
343
344 done();
345 });
346 });
347
348 it('chart', function(done) {
349 var anychart = createAnychart();
350
351 var chart = anychart.pie([10, 20, 8, 5, 12, 9]);
352 chart.container('container').draw();
353
354 app.exportTo(chart, function(err, image) {
355 expect(image).to.be.instanceof(Buffer);
356 expect(err).to.be.null;
357
358 done();
359 });
360 });
361
362
363 });
364
365 describe('parallels', function() {
366 it('mix', function(done) {
367 this.timeout(10000);
368
369 var data;
370
371 var i = 0;
372 var exit = function() {
373 i++;
374 if (i === 17)
375 done();
376 };
377
378 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
379 app.exportTo(data, function(err, image) {
380 expect(image).to.be.instanceof(Buffer);
381 expect(err).to.be.null;
382
383 console.log(1);
384
385 exit();
386 });
387
388 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
389 app.exportTo(data, 'pdf', function(err, image) {
390 expect(image).to.be.instanceof(Buffer);
391 expect(err).to.be.null;
392
393 console.log(2);
394
395 exit();
396 });
397
398 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
399 app.exportTo(data, {outputType: 'png'}, function(err, image) {
400 expect(image).to.be.instanceof(Buffer);
401 expect(err).to.be.null;
402
403 console.log(3);
404
405 exit();
406 });
407
408 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
409 app.exportTo(data, function(err, image) {
410 expect(image).to.be.instanceof(Buffer);
411 expect(err).to.be.null;
412
413 console.log(4);
414
415 exit();
416 });
417
418 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
419 app.exportTo(data, 'pdf', function(err, image) {
420 expect(image).to.be.instanceof(Buffer);
421 expect(err).to.be.null;
422
423 console.log(5);
424
425 exit();
426 });
427
428 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
429 app.exportTo(data, {outputType: 'png'}, function(err, image) {
430 expect(image).to.be.instanceof(Buffer);
431 expect(err).to.be.null;
432 });
433
434 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
435 app.exportTo(data, function(err, image) {
436 expect(image).to.be.instanceof(Buffer);
437 expect(err).to.be.null;
438
439 console.log(6);
440
441 exit();
442 });
443
444 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
445 app.exportTo(data, 'pdf', function(err, image) {
446 expect(image).to.be.instanceof(Buffer);
447 expect(err).to.be.null;
448
449
450 console.log(7);
451
452 exit();
453 });
454
455 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
456 app.exportTo(data, {outputType: 'png'}, function(err, image) {
457 expect(image).to.be.instanceof(Buffer);
458 expect(err).to.be.null;
459
460 console.log(8);
461
462 exit();
463 });
464
465 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
466 app.exportTo(data, function(err, image) {
467 expect(image).to.be.instanceof(Buffer);
468 expect(err).to.be.null;
469
470 console.log(9);
471
472 exit();
473 });
474
475 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
476 app.exportTo(data, 'pdf', function(err, image) {
477 expect(image).to.be.instanceof(Buffer);
478 expect(err).to.be.null;
479
480
481 console.log(10);
482
483 exit();
484 });
485
486 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
487 app.exportTo(data, {outputType: 'png'}, function(err, image) {
488 expect(image).to.be.instanceof(Buffer);
489 expect(err).to.be.null;
490
491
492 console.log(11);
493
494 exit();
495 });
496
497 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
498 app.exportTo(data, function(err, image) {
499 expect(image).to.be.instanceof(Buffer);
500 expect(err).to.be.null;
501
502 console.log(12);
503
504 exit();
505 });
506
507 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
508 app.exportTo(data, 'pdf', function(err, image) {
509 expect(image).to.be.instanceof(Buffer);
510 expect(err).to.be.null;
511
512 console.log(13);
513
514 exit();
515 });
516
517 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
518 app.exportTo(data, {outputType: 'png'}, function(err, image) {
519 expect(image).to.be.instanceof(Buffer);
520 expect(err).to.be.null;
521
522 console.log(14);
523
524 exit();
525 });
526
527 data = '{"chart":{"enabled":true,"credits":{"enabled":false},"type":"pie","data":[10,20,8,5,12,9],"normal":{"labels":{"enabled":true,"disablePointerEvents":true}}}}';
528 app.exportTo(data, function(err, image) {
529 expect(image).to.be.instanceof(Buffer);
530 expect(err).to.be.null;
531
532
533 console.log(15);
534
535 exit();
536 });
537
538 data = '<anychart xmlns="http://anychart.com/schemas/8.1.0/xml-schema.xsd"><chart enabled="true" type="pie"><credits enabled="false"/><data><point><![CDATA[10]]></point><point><![CDATA[20]]></point><point><![CDATA[8]]></point><point><![CDATA[5]]></point><point><![CDATA[12]]></point><point><![CDATA[9]]></point></data><normal><labels enabled="true" disable_pointer_events="true"/></normal></chart></anychart>';
539 app.exportTo(data, 'pdf', function(err, image) {
540 expect(image).to.be.instanceof(Buffer);
541 expect(err).to.be.null;
542
543 console.log(16);
544
545 exit();
546 });
547
548 data = "anychart.onDocumentReady(function() {var chart = anychart.pie([10, 20, 8, 5, 12, 9]); chart.container('container').draw();});";
549 app.exportTo(data, {outputType: 'png'}, function(err, image) {
550 expect(image).to.be.instanceof(Buffer);
551 expect(err).to.be.null;
552
553 console.log(17);
554
555 exit();
556 });
557 });
558
559 it('different containers', function(done) {
560 this.timeout(20000);
561
562 var i = 0;
563 var chartsCount = 20;
564
565 var exit = function(index, data) {
566 var pathToImg = './test/img/'+ index + '.png';
567 var dirName = path.dirname(pathToImg);
568 if (!fs.existsSync(dirName))
569 fs.mkdirSync(dirName);
570
571 fs.writeFile(pathToImg, data, function(fsWriteError) {
572 if (fsWriteError)
573 console.log(fsWriteError);
574 });
575 console.log(index);
576
577 i++;
578 if (i === chartsCount)
579 done();
580 };
581
582 var getData = function(index) {
583 return '{"chart":{"type":"pie","data":[' + index + '], "labels":{"format":"{%value}"}}}';
584 };
585
586 var cb = function(index, err, image) {
587 expect(image).to.be.instanceof(Buffer);
588 expect(err).to.be.null;
589
590 exit(index, image);
591 };
592
593 var execUnit = function(index) {
594 var cb_ = partial(cb, index);
595 app.exportTo(getData(index), {outputType: 'png', containerId: 'container' + index}, cb_);
596 };
597
598 for (var n = 1, len = chartsCount; n <= len; n++) {
599 execUnit(n);
600 }
601 });
602 });
603 })
604});
\No newline at end of file