UNPKG

12.6 kBJavaScriptView Raw
1var should = require('should'),
2 util = require('./test'),
3 uuid = require('uuid'),
4 async = require('async'),
5 annotext = require('../annotext'),
6 diff_match_patch = require('googlediff'),
7 path = require('path'),
8 moment = require('moment');
9
10
11var sampleFolders = [
12 path.join(__dirname, '/samples/markdown'),
13 path.join(__dirname, '/samples/gutenberg')
14];
15
16describe('AnnoText Integration tests', function() {
17 describe('api.exportToHtml', function() {
18 var samplesWithoutAttribution, samplesWithAttribution;
19
20 beforeEach(function(done) {
21 var nonAttributionSamplesFolder = path.join(__dirname, "/samples/export_html_without_attribution");
22 var attributionSamplesFolder = path.join(__dirname, "/samples/export_html_with_attribution");
23
24 util.loadSamples(nonAttributionSamplesFolder,
25 function(err, resp) {
26 samplesWithoutAttribution = util.groupFilesByName(resp);
27 util.loadSamples(attributionSamplesFolder,
28 function(err, resp) {
29 samplesWithAttribution = util.groupFilesByName(resp);
30 done(err);
31 });
32 });
33 });
34
35 it('Standard case - with single user attribution', function(done) {
36 var user_key = 'd8eb9a26-cb9c-4342-8548-6d6f5750a914';
37 var revision_key = '4e183537-8b5d-48b4-9905-52b8e2d60686';
38 var revision_date = new moment('2013-12-23T14:33:52.761Z').toDate();
39
40 async.eachSeries(samplesWithAttribution,
41 function(sample, sample_callback) {
42 var annotext_instance = new annotext();
43
44 var annoTextDoc = annotext_instance.update({
45 content: sample.markdown,
46 user_key: user_key,
47 revision_key: revision_key,
48 edit_date: revision_date
49 });
50
51 annotext_instance.exportToHtml({},
52 function(err, htmlExport) {
53 var exportClean = cleanseContent(htmlExport.replace(/\n/g, '<LF>'));
54 var sampleClean = cleanseContent(sample.html.replace(/\n/g, '<LF>'));
55 exportClean.trim().should.equal(sampleClean.trim());
56 return sample_callback();
57 });
58 },
59 function(err) {
60 done(err);
61 });
62 });
63 });
64 var cleanseContent = function(src) {
65 src = src.replace(/(\<LF\>)+/g, "<LF>");
66 return src;
67 }
68
69
70 describe('api.getRevisionsByUser', function() {
71 var samples = {}
72 beforeEach(function(done) {
73 util.loadSamples(sampleFolders,
74 function(err, resp) {
75 if (err)
76 done(err);
77
78 resp.forEach(function(item) {
79 samples[item.name] = item.data;
80 });
81 done();
82 });
83 });
84
85 it('large document', function(done) {
86 var user_key = uuid.v4();
87 var revision_key = uuid.v4();
88 for (var key in samples) {
89 var annotext_instance = new annotext();
90 var sample = samples[key];
91 annotext_instance.update({
92 content: sample,
93 user_key: user_key,
94 revision_key: revision_key
95 });
96
97 var results = annotext_instance.getRevisionsByUser(user_key);
98 should.exist(results);
99 results.length.should.equal(1);
100 }
101 done();
102 });
103 });
104
105 describe('api.getDistinctRevisionDates', function() {
106 var samples = {}
107 beforeEach(function(done) {
108 util.loadSamples(sampleFolders,
109 function(err, resp) {
110 if (err)
111 done(err);
112
113 resp.forEach(function(item) {
114 samples[item.name] = item.data;
115 });
116 done();
117 });
118 });
119
120 it('large document', function(done) {
121 var user_key = uuid.v4();
122 var revision_key = uuid.v4();
123 for (var key in samples) {
124 var annotext_instance = new annotext();
125 var sample = samples[key];
126 annotext_instance.update({
127 content: sample,
128 user_key: user_key,
129 revision_key: revision_key
130 });
131
132 var results = annotext_instance.getDistinctRevisionDates();
133 should.exist(results);
134 results.length.should.equal(1);
135 }
136 done();
137 });
138 });
139
140 describe('api.getDistinctRevisionKeys', function() {
141 var samples = {}
142 beforeEach(function(done) {
143 util.loadSamples(sampleFolders,
144 function(err, resp) {
145 if (err)
146 done(err);
147
148 resp.forEach(function(item) {
149 samples[item.name] = item.data;
150 });
151 done();
152 });
153 });
154
155 it('large document', function(done) {
156 var user_key = uuid.v4();
157 var revision_key = uuid.v4();
158 for (var key in samples) {
159 var annotext_instance = new annotext();
160 var sample = samples[key];
161 annotext_instance.update({
162 content: sample,
163 user_key: user_key,
164 revision_key: revision_key
165 });
166
167 var results = annotext_instance.getDistinctRevisionKeys();
168 should.exist(results);
169 results.length.should.equal(1);
170 }
171 done();
172 });
173 });
174
175 describe('api.getDistinctUserKeys', function() {
176 var samples = {}
177 beforeEach(function(done) {
178 util.loadSamples(sampleFolders,
179 function(err, resp) {
180 if (err)
181 done(err);
182
183 resp.forEach(function(item) {
184 samples[item.name] = item.data;
185 });
186 done();
187 });
188 });
189
190 it('large document', function(done) {
191 var user_key = uuid.v4();
192 var revision_key = uuid.v4();
193 for (var key in samples) {
194 var annotext_instance = new annotext();
195 var sample = samples[key];
196 annotext_instance.update({
197 content: sample,
198 user_key: user_key,
199 revision_key: revision_key
200 });
201
202 var results = annotext_instance.getDistinctUserKeys();
203 should.exist(results);
204 results.length.should.equal(1);
205 }
206 done();
207 });
208 });
209
210 describe('api.getDistinctRevisions', function() {
211 var samples = {}
212 beforeEach(function(done) {
213 util.loadSamples(sampleFolders,
214 function(err, resp) {
215 if (err)
216 done(err);
217
218 resp.forEach(function(item) {
219 samples[item.name] = item.data;
220 });
221 done();
222 });
223 });
224
225 it('large document', function(done) {
226 var user_key = uuid.v4();
227 var revision_key = uuid.v4();
228 for (var key in samples) {
229 var annotext_instance = new annotext();
230 var sample = samples[key];
231 annotext_instance.update({
232 content: sample,
233 user_key: user_key,
234 revision_key: revision_key
235 });
236
237 var results = annotext_instance.getDistinctRevisions();
238 should.exist(results);
239 results.length.should.equal(1);
240 }
241 done();
242 });
243
244 it('large document - expanded', function(done) {
245 var user_key = uuid.v4();
246 var revision_key = uuid.v4();
247 for (var key in samples) {
248 var annotext_instance = new annotext();
249 var sample = samples[key];
250 annotext_instance.update({
251 content: sample,
252 user_key: user_key,
253 revision_key: revision_key
254 });
255
256 var results = annotext_instance.getDistinctRevisions();
257 results.length.should.equal(1);
258 }
259 done();
260 });
261 });
262
263 describe('api.update', function() {
264 var samples = {}
265 beforeEach(function(done) {
266 util.loadSamples(sampleFolders,
267 function(err, resp) {
268 if (err)
269 done(err);
270
271 resp.forEach(function(item) {
272 samples[item.name] = item.data;
273 });
274 done();
275 });
276 });
277
278 it('large document', function(done) {
279 var user_key = uuid.v4();
280 var revision_key = uuid.v4();
281 for (var key in samples) {
282 var annotext_instance = new annotext();
283 var sample = samples[key];
284 annotext_instance.update({
285 user_key: user_key,
286 revision_key: revision_key,
287 content: sample
288 });
289
290 var parsed = annotext_instance.parse();
291
292 should.exist(parsed);
293 }
294 done();
295 });
296 });
297
298 describe('api.update', function() {
299 var samples = {}
300
301 beforeEach(function(done) {
302 util.loadSamples(sampleFolders,
303 function(err, resp) {
304 if (err)
305 done(err);
306
307 resp.forEach(function(item) {
308 samples[item.name] = item.data;
309 });
310 done();
311 });
312 });
313
314 it('all docs - add word', function(done) {
315 var user_key = uuid.v4();
316 var revision_key = uuid.v4();
317 var edit_date = new Date();
318 for (var key in samples) {
319 var annotext_instance = new annotext();
320 var sample = samples[key];
321 annotext_instance.update({
322 content: sample,
323 user_key: user_key,
324 revision_key: revision_key,
325 edit_date: edit_date
326 });
327
328 // alter source
329 annotext_instance.update({
330 content: sample + "new-word",
331 user_key: user_key,
332 revision_key: revision_key,
333 edit_date: edit_date
334 });
335
336
337 var parsed = annotext_instance.parse();
338 should.exist(parsed);
339 }
340 done();
341 });
342
343 it('all-docs - remove word', function(done) {
344 var user_key = uuid.v4();
345 var revision_key = uuid.v4();
346 var edit_date = new Date();
347 for (var key in samples) {
348 var annotext_instance = new annotext();
349 var sample = samples[key];
350 annotext_instance.update({
351 content: sample,
352 user_key: user_key,
353 revision_key: revision_key,
354 edit_date: edit_date
355 });
356
357 var upper = 5; //sample.length-1;
358 for (var i = 0; i <= upper; i++) {
359 // alter source
360 annotext_instance.update({
361 content: sample.substr(0, i) + sample.substr(i + 1, sample.length),
362 user_key: user_key,
363 revision_key: revision_key,
364 edit_date: edit_date
365 });
366
367 var parsed = annotext_instance.parse();
368 should.exist(parsed);
369 }
370 }
371 return done();
372 });
373
374 });
375});