motiro 0.6.6 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. data/README +1 -1
  2. data/app/controllers/wiki_controller.rb +14 -1
  3. data/app/core/version.rb +1 -1
  4. data/app/core/wiki_reporter.rb +4 -17
  5. data/app/helpers/application_helper.rb +33 -0
  6. data/app/helpers/report_helper.rb +39 -0
  7. data/app/helpers/report_helper.rb.rej +46 -0
  8. data/app/helpers/wiki_helper.rb +1 -1
  9. data/app/models/change.rb +12 -41
  10. data/app/models/chunk.rb +56 -0
  11. data/app/models/page.rb +17 -0
  12. data/app/models/revision.rb +31 -0
  13. data/app/reporters/events_reporter.rb +0 -2
  14. data/app/views/report/show.rhtml +2 -2
  15. data/app/views/wiki/diff.rhtml +4 -0
  16. data/app/views/wiki/history.rhtml +32 -21
  17. data/app/views/wiki/history.rhtml.rej +63 -0
  18. data/config/motiro.yml +1 -1
  19. data/config/routes.rb +3 -0
  20. data/db/motirodb.sqlite.initial +0 -0
  21. data/db/translation/pt-BR.rb +6 -1
  22. data/db/translation/pt-BR.rb.rej +26 -0
  23. data/lib/diff_chunk_builder.rb +98 -0
  24. data/lib/tasks/packaging.rake +2 -1
  25. data/public/stylesheets/motiro.css +49 -18
  26. data/public/stylesheets/motiro.css.rej +37 -0
  27. data/public/wiki/history/OtherPage-en-us.xml +40 -0
  28. data/test/fixtures/pages.yml +1 -1
  29. data/test/fixtures/revisions.yml +15 -4
  30. data/test/functional/report_features_test.rb +7 -1
  31. data/test/functional/root_controller_test.rb +1 -1
  32. data/test/functional/wiki_controller_test.rb +44 -4
  33. data/test/unit/change_test.rb +29 -56
  34. data/test/unit/diff_chunk_builder_test.rb +269 -0
  35. data/test/unit/page_test.rb +46 -0
  36. data/test/unit/revision_test.rb +160 -0
  37. data/test/unit/wiki_reporter_test.rb +2 -1
  38. metadata +301 -283
  39. data/app/models/diff_table_builder.rb +0 -285
  40. data/test/unit/diff_table_builder_test.rb +0 -602
@@ -1,602 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
- require 'diff_table_builder'
3
-
4
- class DiffTableBuilderTest < Test::Unit::TestCase
5
-
6
- def setup
7
- @builder = DiffTableBuilder.new
8
- end
9
-
10
- def test_renders_addition_only
11
- @builder.push_addition 'I have added this'
12
-
13
- expected_diff_table =
14
- "<table class='diff 'cellspacing='0'>\n" +
15
- " <tr style='background: #FFF'>\n" +
16
- " <td class='line_number'>&nbsp;</td>\n" +
17
- " <td class='left' " +
18
- "style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
19
- " <td class='right changed' " +
20
- "style='border-width: 1px 1px 1px 0;'>" +
21
- "<pre>I have added this</pre>" +
22
- "</td>\n" +
23
- " <td class='line_number'>1</td>\n" +
24
- " </tr>\n" +
25
- "</table>"
26
-
27
- assert_equal expected_diff_table, @builder.render_diff_table
28
- end
29
-
30
- def test_renders_deletion_only
31
- @builder.push_deletion 'I have removed this'
32
-
33
- expected_diff_table =
34
- "<table class='diff 'cellspacing='0'>\n" +
35
- " <tr style='background: #FFF'>\n" +
36
- " <td class='line_number'>1</td>\n" +
37
- " <td class='left changed' " +
38
- "style='border-width: 1px 1px 1px 1px;'>" +
39
- "<pre>I have removed this</pre>" +
40
- "</td>\n" +
41
- " <td class='right' " +
42
- "style='border-width: 1px 1px 1px 0;'>&nbsp;</td>\n" +
43
- " <td class='line_number'>&nbsp;</td>\n" +
44
- " </tr>\n" +
45
- "</table>"
46
-
47
- assert_equal expected_diff_table, @builder.render_diff_table
48
- end
49
-
50
- def test_matches_alterning_addition_and_deletion
51
- @builder.push_deletion 'I have removed this'
52
- @builder.push_addition 'I have added this'
53
-
54
- expected_diff_table =
55
- "<table class='diff 'cellspacing='0'>\n" +
56
- " <tr style='background: #FFF'>\n" +
57
- " <td class='line_number'>1</td>\n" +
58
- " <td class='left changed' " +
59
- "style='border-width: 1px 1px 1px 1px;'>" +
60
- "<pre>I have removed this</pre>" +
61
- "</td>\n" +
62
- " <td class='right changed' " +
63
- "style='border-width: 1px 1px 1px 0;'>" +
64
- "<pre>I have added this</pre>" +
65
- "</td>\n" +
66
- " <td class='line_number'>1</td>\n" +
67
- " </tr>\n" +
68
- "</table>"
69
-
70
- assert_equal expected_diff_table, @builder.render_diff_table
71
- end
72
-
73
- def test_multiline_modification
74
- @builder.push_deletion 'This is the first old line'
75
- @builder.push_deletion 'This is the second old line'
76
- @builder.push_addition 'This is the first new line'
77
- @builder.push_addition 'This is the second new line'
78
-
79
- expected_diff_table =
80
- "<table class='diff 'cellspacing='0'>\n" +
81
- " <tr style='background: #FFF'>\n" +
82
- " <td class='line_number'>1</td>\n" +
83
- " <td class='left changed' " +
84
- "style='border-width: 1px 1px 0 1px;'>" +
85
- "<pre>This is the first old line</pre>" +
86
- "</td>\n" +
87
- " <td class='right changed' " +
88
- "style='border-width: 1px 1px 0 0;'>" +
89
- "<pre>This is the first new line</pre>" +
90
- "</td>\n" +
91
- " <td class='line_number'>1</td>\n" +
92
- " </tr>\n" +
93
- " <tr style='background: #FFF'>\n" +
94
- " <td class='line_number'>2</td>\n" +
95
- " <td class='left changed' " +
96
- "style='border-width: 0 1px 1px 1px;'>" +
97
- "<pre>This is the second old line</pre>" +
98
- "</td>\n" +
99
- " <td class='right changed' " +
100
- "style='border-width: 0 1px 1px 0;'>" +
101
- "<pre>This is the second new line</pre>" +
102
- "</td>\n" +
103
- " <td class='line_number'>2</td>\n" +
104
- " </tr>\n" +
105
- "</table>"
106
-
107
- assert_equal expected_diff_table, @builder.render_diff_table
108
- end
109
-
110
- def test_more_adds_than_deletes
111
- @builder.push_deletion 'This is the first old line'
112
- @builder.push_addition 'This is the first new line'
113
- @builder.push_addition 'This is the second new line'
114
- @builder.push_unchanged 'This line remains the same'
115
-
116
- expected_diff_table =
117
- "<table class='diff 'cellspacing='0'>\n" +
118
- " <tr style='background: #FFF'>\n" +
119
- " <td class='line_number'>1</td>\n" +
120
- " <td class='left changed' " +
121
- "style='border-width: 1px 1px 1px 1px;'>" +
122
- "<pre>This is the first old line</pre>" +
123
- "</td>\n" +
124
- " <td class='right changed' " +
125
- "style='border-width: 1px 1px 0 0;'>" +
126
- "<pre>This is the first new line</pre>" +
127
- "</td>\n" +
128
- " <td class='line_number'>1</td>\n" +
129
- " </tr>\n" +
130
- " <tr style='background: #FFF'>\n" +
131
- " <td class='line_number'>&nbsp;</td>\n" +
132
- " <td class='left' " +
133
- "style='border-width: 0 1px 0 0;'>&nbsp;" +
134
- "</td>\n" +
135
- " <td class='right changed' " +
136
- "style='border-width: 0 1px 1px 1px;'>" +
137
- "<pre>This is the second new line</pre>" +
138
- "</td>\n" +
139
- " <td class='line_number'>2</td>\n" +
140
- " </tr>\n" +
141
- " <tr style='background: #FFF'>\n" +
142
- " <td class='line_number'>2</td>\n" +
143
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
144
- "<pre>This line remains the same</pre>" +
145
- "</td>\n" +
146
- " <td class='right' style='border-width: 0 0 0 0;'>" +
147
- "<pre>This line remains the same</pre>" +
148
- "</td>\n" +
149
- " <td class='line_number'>3</td>\n" +
150
- " </tr>\n" +
151
- "</table>"
152
-
153
- assert_equal expected_diff_table, @builder.render_diff_table
154
- end
155
-
156
- def test_less_adds_than_deletes
157
- @builder.push_deletion 'This is the first old line'
158
- @builder.push_deletion 'This is the second old line'
159
- @builder.push_addition 'This is the first new line'
160
- @builder.push_unchanged 'This line remains the same'
161
-
162
- expected_diff_table =
163
- "<table class='diff 'cellspacing='0'>\n" +
164
- " <tr style='background: #FFF'>\n" +
165
- " <td class='line_number'>1</td>\n" +
166
- " <td class='left changed' " +
167
- "style='border-width: 1px 1px 0 1px;'>" +
168
- "<pre>This is the first old line</pre>" +
169
- "</td>\n" +
170
- " <td class='right changed' " +
171
- "style='border-width: 1px 1px 1px 0;'>" +
172
- "<pre>This is the first new line</pre>" +
173
- "</td>\n" +
174
- " <td class='line_number'>1</td>\n" +
175
- " </tr>\n" +
176
- " <tr style='background: #FFF'>\n" +
177
- " <td class='line_number'>2</td>\n" +
178
- " <td class='left changed' " +
179
- "style='border-width: 0 1px 1px 1px;'>" +
180
- "<pre>This is the second old line</pre>" +
181
- "</td>\n" +
182
- " <td class='right' " +
183
- "style='border-width: 0 0 0 1px;'>&nbsp;</td>\n" +
184
- " <td class='line_number'>&nbsp;</td>\n" +
185
- " </tr>\n" +
186
- " <tr style='background: #FFF'>\n" +
187
- " <td class='line_number'>3</td>\n" +
188
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
189
- "<pre>This line remains the same</pre>" +
190
- "</td>\n" +
191
- " <td class='right' style='border-width: 0 0 0 0;'>" +
192
- "<pre>This line remains the same</pre>" +
193
- "</td>\n" +
194
- " <td class='line_number'>2</td>\n" +
195
- " </tr>\n" +
196
- "</table>"
197
-
198
- assert_equal expected_diff_table, @builder.render_diff_table
199
- end
200
-
201
- def test_some_code_kept
202
- @builder.start_line 6
203
-
204
- @builder.push_unchanged 'div.channel-title {'
205
- @builder.push_deletion ' font: normal 8pt Verdana,sans-serif;'
206
- @builder.push_addition ' font: bold 10pt Verdana,sans-serif;'
207
- @builder.push_unchanged ' margin:0 0 0 0;'
208
-
209
- expected_diff_table =
210
- "<table class='diff 'cellspacing='0'>\n" +
211
- " <tr style='background: #FFF'>\n" +
212
- " <td class='line_number'>6</td>\n" +
213
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
214
- "<pre>div.channel-title {</pre>" +
215
- "</td>\n" +
216
- " <td class='right' style='border-width: 0 0 0 0;'>" +
217
- "<pre>div.channel-title {</pre>" +
218
- "</td>\n" +
219
- " <td class='line_number'>6</td>\n" +
220
- " </tr>\n" +
221
- " <tr style='background: #FFF'>\n" +
222
- " <td class='line_number'>7</td>\n" +
223
- " <td class='left changed' " +
224
- "style='border-width: 1px 1px 1px 1px;'>" +
225
- "<pre> font: normal 8pt Verdana,sans-serif;</pre>" +
226
- "</td>\n" +
227
- " <td class='right changed' " +
228
- "style='border-width: 1px 1px 1px 0;'>" +
229
- "<pre> font: bold 10pt Verdana,sans-serif;</pre>" +
230
- "</td>\n" +
231
- " <td class='line_number'>7</td>\n" +
232
- " </tr>\n" +
233
- " <tr style='background: #FFF'>\n" +
234
- " <td class='line_number'>8</td>\n" +
235
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
236
- "<pre> margin:0 0 0 0;</pre>" +
237
- "</td>\n" +
238
- " <td class='right' style='border-width: 0 0 0 0;'>" +
239
- "<pre> margin:0 0 0 0;</pre>" +
240
- "</td>\n" +
241
- " <td class='line_number'>8</td>\n" +
242
- " </tr>\n" +
243
- "</table>"
244
-
245
- assert_equal expected_diff_table, @builder.render_diff_table
246
- end
247
-
248
- def test_esparse_changes
249
- @builder.start_line 6
250
-
251
- @builder.push_unchanged 'div.channel-title {'
252
- @builder.push_deletion ' font: normal 8pt Verdana,sans-serif;'
253
- @builder.push_addition ' font: bold 10pt Verdana,sans-serif;'
254
- @builder.push_unchanged ' margin:0 0 0 0;'
255
-
256
- @builder.start_line 13
257
-
258
- @builder.push_unchanged 'div.channel-body-outer {'
259
- @builder.push_deletion ' padding: 0 9px 0 9px;'
260
- @builder.push_addition ' padding: 0 8px 0 8px;'
261
- @builder.push_unchanged '}'
262
-
263
- expected_diff_table =
264
- "<table class='diff 'cellspacing='0'>\n" +
265
- " <tr style='background: #FFF'>\n" +
266
- " <td class='line_number'>6</td>\n" +
267
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
268
- "<pre>div.channel-title {</pre>" +
269
- "</td>\n" +
270
- " <td class='right' style='border-width: 0 0 0 0;'>" +
271
- "<pre>div.channel-title {</pre>" +
272
- "</td>\n" +
273
- " <td class='line_number'>6</td>\n" +
274
- " </tr>\n" +
275
- " <tr style='background: #FFF'>\n" +
276
- " <td class='line_number'>7</td>\n" +
277
- " <td class='left changed' " +
278
- "style='border-width: 1px 1px 1px 1px;'>" +
279
- "<pre> font: normal 8pt Verdana,sans-serif;</pre>" +
280
- "</td>\n" +
281
- " <td class='right changed' " +
282
- "style='border-width: 1px 1px 1px 0;'>" +
283
- "<pre> font: bold 10pt Verdana,sans-serif;</pre>" +
284
- "</td>\n" +
285
- " <td class='line_number'>7</td>\n" +
286
- " </tr>\n" +
287
- " <tr style='background: #FFF'>\n" +
288
- " <td class='line_number'>8</td>\n" +
289
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
290
- "<pre> margin:0 0 0 0;</pre>" +
291
- "</td>\n" +
292
- " <td class='right' style='border-width: 0 0 0 0;'>" +
293
- "<pre> margin:0 0 0 0;</pre>" +
294
- "</td>\n" +
295
- " <td class='line_number'>8</td>\n" +
296
- " </tr>\n" +
297
- " <tr>\n" +
298
- " <td style='border:solid gray; " +
299
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
300
- " <td style='border:solid gray; " +
301
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
302
- " <td style='border:solid gray; " +
303
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
304
- " <td style='border:solid gray; " +
305
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
306
- " </tr>\n" +
307
- " <tr style='background: #FFF'>\n" +
308
- " <td class='line_number'>13</td>\n" +
309
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
310
- "<pre>div.channel-body-outer {</pre>" +
311
- "</td>\n" +
312
- " <td class='right' style='border-width: 0 0 0 0;'>" +
313
- "<pre>div.channel-body-outer {</pre>" +
314
- "</td>\n" +
315
- " <td class='line_number'>13</td>\n" +
316
- " </tr>\n" +
317
- " <tr style='background: #FFF'>\n" +
318
- " <td class='line_number'>14</td>\n" +
319
- " <td class='left changed' " +
320
- "style='border-width: 1px 1px 1px 1px;'>" +
321
- "<pre> padding: 0 9px 0 9px;</pre>" +
322
- "</td>\n" +
323
- " <td class='right changed' " +
324
- "style='border-width: 1px 1px 1px 0;'>" +
325
- "<pre> padding: 0 8px 0 8px;</pre>" +
326
- "</td>\n" +
327
- " <td class='line_number'>14</td>\n" +
328
- " </tr>\n" +
329
- " <tr style='background: #FFF'>\n" +
330
- " <td class='line_number'>15</td>\n" +
331
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
332
- "<pre>}</pre>" +
333
- "</td>\n" +
334
- " <td class='right' style='border-width: 0 0 0 0;'>" +
335
- "<pre>}</pre>" +
336
- "</td>\n" +
337
- " <td class='line_number'>15</td>\n" +
338
- " </tr>\n" +
339
- "</table>"
340
-
341
- assert_equal expected_diff_table, @builder.render_diff_table
342
- end
343
-
344
- def test_unmatching_line_numbers
345
- @builder.start_line(6, 6)
346
-
347
- @builder.push_unchanged 'div.channel-title {'
348
- @builder.push_deletion ' font: normal 8pt Verdana,sans-serif;'
349
- @builder.push_addition ' font: bold 10pt Verdana,sans-serif;'
350
- @builder.push_addition ' margin:0 0 0 0;'
351
-
352
- @builder.start_line(13, 14)
353
-
354
- @builder.push_unchanged 'div.channel-body-outer {'
355
- @builder.push_deletion ' padding: 0 9px 0 9px;'
356
- @builder.push_addition ' padding: 0 8px 0 8px;'
357
- @builder.push_unchanged '}'
358
-
359
- expected_diff_table =
360
- "<table class='diff 'cellspacing='0'>\n" +
361
- " <tr style='background: #FFF'>\n" +
362
- " <td class='line_number'>6</td>\n" +
363
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
364
- "<pre>div.channel-title {</pre>" +
365
- "</td>\n" +
366
- " <td class='right' style='border-width: 0 0 0 0;'>" +
367
- "<pre>div.channel-title {</pre>" +
368
- "</td>\n" +
369
- " <td class='line_number'>6</td>\n" +
370
- " </tr>\n" +
371
- " <tr style='background: #FFF'>\n" +
372
- " <td class='line_number'>7</td>\n" +
373
- " <td class='left changed' " +
374
- "style='border-width: 1px 1px 1px 1px;'>" +
375
- "<pre> font: normal 8pt Verdana,sans-serif;</pre>" +
376
- "</td>\n" +
377
- " <td class='right changed' " +
378
- "style='border-width: 1px 1px 0 0;'>" +
379
- "<pre> font: bold 10pt Verdana,sans-serif;</pre>" +
380
- "</td>\n" +
381
- " <td class='line_number'>7</td>\n" +
382
- " </tr>\n" +
383
- " <tr style='background: #FFF'>\n" +
384
- " <td class='line_number'>&nbsp;</td>\n" +
385
- " <td class='left' style='border-width: 0 1px 0 0;'>&nbsp;" +
386
- "</td>\n" +
387
- " <td class='right changed' " +
388
- "style='border-width: 0 1px 1px 1px;'>" +
389
- "<pre> margin:0 0 0 0;</pre>" +
390
- "</td>\n" +
391
- " <td class='line_number'>8</td>\n" +
392
- " </tr>\n" +
393
- " <tr>\n" +
394
- " <td style='border:solid gray; " +
395
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
396
- " <td style='border:solid gray; " +
397
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
398
- " <td style='border:solid gray; " +
399
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
400
- " <td style='border:solid gray; " +
401
- "border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
402
- " </tr>\n" +
403
- " <tr style='background: #FFF'>\n" +
404
- " <td class='line_number'>13</td>\n" +
405
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
406
- "<pre>div.channel-body-outer {</pre>" +
407
- "</td>\n" +
408
- " <td class='right' style='border-width: 0 0 0 0;'>" +
409
- "<pre>div.channel-body-outer {</pre>" +
410
- "</td>\n" +
411
- " <td class='line_number'>14</td>\n" +
412
- " </tr>\n" +
413
- " <tr style='background: #FFF'>\n" +
414
- " <td class='line_number'>14</td>\n" +
415
- " <td class='left changed' " +
416
- "style='border-width: 1px 1px 1px 1px;'>" +
417
- "<pre> padding: 0 9px 0 9px;</pre>" +
418
- "</td>\n" +
419
- " <td class='right changed' " +
420
- "style='border-width: 1px 1px 1px 0;'>" +
421
- "<pre> padding: 0 8px 0 8px;</pre>" +
422
- "</td>\n" +
423
- " <td class='line_number'>15</td>\n" +
424
- " </tr>\n" +
425
- " <tr style='background: #FFF'>\n" +
426
- " <td class='line_number'>15</td>\n" +
427
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
428
- "<pre>}</pre>" +
429
- "</td>\n" +
430
- " <td class='right' style='border-width: 0 0 0 0;'>" +
431
- "<pre>}</pre>" +
432
- "</td>\n" +
433
- " <td class='line_number'>16</td>\n" +
434
- " </tr>\n" +
435
- "</table>"
436
-
437
- assert_equal expected_diff_table, @builder.render_diff_table
438
- end
439
-
440
- def test_escapes_html
441
- @builder.push_unchanged ' <h1><%= h(@headline.title) -%></h1>'
442
- expected_diff_table =
443
- "<table class='diff 'cellspacing='0'>\n" +
444
- " <tr style='background: #FFF'>\n" +
445
- " <td class='line_number'>1</td>\n" +
446
- " <td class='left' style='border-width: 0 1px 0 0;'>" +
447
- "<pre> &lt;h1&gt;&lt;%= h(@headline.title) -%&gt;&lt;/h1&gt;</pre>" +
448
- "</td>\n" +
449
- " <td class='right' style='border-width: 0 0 0 0;'>" +
450
- "<pre> &lt;h1&gt;&lt;%= h(@headline.title) -%&gt;&lt;/h1&gt;</pre>" +
451
- "</td>\n" +
452
- " <td class='line_number'>1</td>\n" +
453
- " </tr>\n" +
454
- "</table>"
455
-
456
- assert_equal expected_diff_table, @builder.render_diff_table
457
- end
458
-
459
- def test_escapes_empty_lines
460
- @builder.push_addition ''
461
- @builder.push_addition ' def test_escapes_empty_lines'
462
- expected_diff_table =
463
- expected_diff_table =
464
- "<table class='diff 'cellspacing='0'>\n" +
465
- " <tr style='background: #FFF'>\n" +
466
- " <td class='line_number'>&nbsp;</td>\n" +
467
- " <td class='left' " +
468
- "style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
469
- " <td class='right changed' " +
470
- "style='border-width: 1px 1px 0 0;'>&nbsp;</td>\n" +
471
- " <td class='line_number'>1</td>\n" +
472
- " </tr>\n" +
473
- " <tr style='background: #FFF'>\n" +
474
- " <td class='line_number'>&nbsp;</td>\n" +
475
- " <td class='left' " +
476
- "style='border-width: 0 1px 0 0;'>&nbsp;</td>\n" +
477
- " <td class='right changed' " +
478
- "style='border-width: 0 1px 1px 1px;'>" +
479
- "<pre> def test_escapes_empty_lines</pre>" +
480
- "</td>\n" +
481
- " <td class='line_number'>2</td>\n" +
482
- " </tr>\n" +
483
- "</table>"
484
-
485
- assert_equal expected_diff_table, @builder.render_diff_table
486
- end
487
-
488
- def test_inserts_break_between_addition_and_unchanged_starting_from_top
489
- @builder.start_line(1, 1)
490
- @builder.push_unchanged ""
491
- @builder.push_addition "import java.io.IOException;"
492
- @builder.start_line(51, 62)
493
- @builder.push_unchanged "\t\t}"
494
-
495
- expected_diff_table =
496
- "<table class='diff 'cellspacing='0'>\n" +
497
- " <tr style='background: #FFF'>\n" +
498
- " <td class='line_number'>1</td>\n" +
499
- " <td class='left' style='border-width: 0 1px 0 0;'>&nbsp;</td>\n" +
500
- " <td class='right' style='border-width: 0 0 0 0;'>&nbsp;</td>\n" +
501
- " <td class='line_number'>1</td>\n" +
502
- " </tr>\n" +
503
- " <tr style='background: #FFF'>\n" +
504
- " <td class='line_number'>&nbsp;</td>\n" +
505
- " <td class='left' style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
506
- " <td class='right changed' style='border-width: 1px 1px 1px 0;'><pre>import java.io.IOException;</pre></td>\n" +
507
- " <td class='line_number'>2</td>\n" +
508
- " </tr>\n" +
509
- " <tr>\n" +
510
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
511
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
512
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
513
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
514
- " </tr>\n" +
515
- " <tr style='background: #FFF'>\n" +
516
- " <td class='line_number'>51</td>\n" +
517
- " <td class='left' style='border-width: 0 1px 0 0;'><pre>\t\t}</pre></td>\n" +
518
- " <td class='right' style='border-width: 0 0 0 0;'><pre>\t\t}</pre></td>\n" +
519
- " <td class='line_number'>62</td>\n" +
520
- " </tr>\n" +
521
- "</table>"
522
-
523
- assert_equal expected_diff_table, @builder.render_diff_table
524
- end
525
-
526
- def test_inserts_break_between_unchanged_and_addition_starting_from_top
527
- @builder.start_line(1, 1)
528
- @builder.push_addition "added line"
529
- @builder.push_unchanged "old line number 1"
530
- @builder.start_line(51, 62)
531
- @builder.push_addition "new line 62"
532
-
533
- expected_diff_table =
534
- "<table class='diff 'cellspacing='0'>\n" +
535
- " <tr style='background: #FFF'>\n" +
536
- " <td class='line_number'>&nbsp;</td>\n" +
537
- " <td class='left' style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
538
- " <td class='right changed' style='border-width: 1px 1px 1px 0;'><pre>added line</pre></td>\n" +
539
- " <td class='line_number'>1</td>\n" +
540
- " </tr>\n" +
541
- " <tr style='background: #FFF'>\n" +
542
- " <td class='line_number'>1</td>\n" +
543
- " <td class='left' style='border-width: 0 1px 0 0;'><pre>old line number 1</pre></td>\n" +
544
- " <td class='right' style='border-width: 0 0 0 0;'><pre>old line number 1</pre></td>\n" +
545
- " <td class='line_number'>2</td>\n" +
546
- " </tr>\n" +
547
- " <tr>\n" +
548
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
549
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
550
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
551
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
552
- " </tr>\n" +
553
- " <tr style='background: #FFF'>\n" +
554
- " <td class='line_number'>&nbsp;</td>\n" +
555
- " <td class='left' style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
556
- " <td class='right changed' style='border-width: 1px 1px 1px 0;'><pre>new line 62</pre></td>\n" +
557
- " <td class='line_number'>62</td>\n" +
558
- " </tr>\n" +
559
- "</table>"
560
-
561
- assert_equal expected_diff_table, @builder.render_diff_table
562
- end
563
-
564
- def test_inserts_break_between_two_unchangeds_starting_from_top
565
- @builder.start_line(1, 1)
566
- @builder.push_addition "added line"
567
- @builder.push_unchanged "old line number 1"
568
- @builder.start_line(50, 56)
569
- @builder.push_unchanged "\t\t"
570
-
571
- expected_diff_table =
572
- "<table class='diff 'cellspacing='0'>\n" +
573
- " <tr style='background: #FFF'>\n" +
574
- " <td class='line_number'>&nbsp;</td>\n" +
575
- " <td class='left' style='border-width: 1px 1px 1px 1px;'>&nbsp;</td>\n" +
576
- " <td class='right changed' style='border-width: 1px 1px 1px 0;'><pre>added line</pre></td>\n" +
577
- " <td class='line_number'>1</td>\n" +
578
- " </tr>\n" +
579
- " <tr style='background: #FFF'>\n" +
580
- " <td class='line_number'>1</td>\n" +
581
- " <td class='left' style='border-width: 0 1px 0 0;'><pre>old line number 1</pre></td>\n" +
582
- " <td class='right' style='border-width: 0 0 0 0;'><pre>old line number 1</pre></td>\n" +
583
- " <td class='line_number'>2</td>\n" +
584
- " </tr>\n" +
585
- " <tr>\n" +
586
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
587
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
588
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
589
- " <td style='border:solid gray; border-width: 1px 0 1px 0;'>&nbsp;</td>\n" +
590
- " </tr>\n" +
591
- " <tr style='background: #FFF'>\n" +
592
- " <td class='line_number'>50</td>\n" +
593
- " <td class='left' style='border-width: 0 1px 0 0;'><pre>\t\t</pre></td>\n" +
594
- " <td class='right' style='border-width: 0 0 0 0;'><pre>\t\t</pre></td>\n" +
595
- " <td class='line_number'>56</td>\n" +
596
- " </tr>\n" +
597
- "</table>"
598
-
599
- assert_equal expected_diff_table, @builder.render_diff_table
600
- end
601
-
602
- end