greenpepper-ruby 0.0.1

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 (120) hide show
  1. data/bin/greenpepperize +71 -0
  2. data/bin/greenpepperrails +33 -0
  3. data/bin/greenpepperruby +15 -0
  4. data/data/greenpepper.rake +37 -0
  5. data/data/helper.rb +32 -0
  6. data/data/tags +6 -0
  7. data/lib/greenpepper/argumentparser.rb +161 -0
  8. data/lib/greenpepper/common/loadpath.rb +7 -0
  9. data/lib/greenpepper/context/htmlcontext.rb +26 -0
  10. data/lib/greenpepper/converter.rb +347 -0
  11. data/lib/greenpepper/core.rb +152 -0
  12. data/lib/greenpepper/example/collectionexample.rb +305 -0
  13. data/lib/greenpepper/example/dowithexample.rb +192 -0
  14. data/lib/greenpepper/example/exampleheader.rb +41 -0
  15. data/lib/greenpepper/example/examplewithfixture.rb +73 -0
  16. data/lib/greenpepper/example/executionresults.rb +160 -0
  17. data/lib/greenpepper/example/fieldaccessor.rb +36 -0
  18. data/lib/greenpepper/example/freetextexample.rb +51 -0
  19. data/lib/greenpepper/example/importexample.rb +39 -0
  20. data/lib/greenpepper/example/nameresolver.rb +69 -0
  21. data/lib/greenpepper/example/ruleforexample.rb +117 -0
  22. data/lib/greenpepper/example/setupexample.rb +79 -0
  23. data/lib/greenpepper/example/silentexample.rb +14 -0
  24. data/lib/greenpepper/example/unknownexample.rb +17 -0
  25. data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
  26. data/lib/greenpepper/executionunit.rb +39 -0
  27. data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
  28. data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
  29. data/lib/greenpepper/factory/examplefactory.rb +14 -0
  30. data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
  31. data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
  32. data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
  33. data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
  34. data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
  35. data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
  36. data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
  37. data/lib/greenpepper/freetext.rb +164 -0
  38. data/lib/greenpepper/grammar/array.treetop +51 -0
  39. data/lib/greenpepper/grammar/arrayparser.rb +14 -0
  40. data/lib/greenpepper/greenpepperconfig.rb +19 -0
  41. data/lib/greenpepper/greenpeppertask.rb +60 -0
  42. data/lib/greenpepper/logger.rb +45 -0
  43. data/lib/greenpepper/parser/freetextparser.rb +96 -0
  44. data/lib/greenpepper/parser/htmlparser.rb +70 -0
  45. data/lib/greenpepper/parser/scenario.rb +25 -0
  46. data/lib/greenpepper/parser/table.rb +37 -0
  47. data/lib/greenpepper/parser/wikiparser.rb +26 -0
  48. data/lib/greenpepper/pass/freetextpass.rb +24 -0
  49. data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
  50. data/lib/greenpepper/pass/tablepass.rb +38 -0
  51. data/lib/greenpepper/railsargumentparser.rb +46 -0
  52. data/lib/greenpepper/redpeppertask.rb +89 -0
  53. data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
  54. data/lib/greenpepper/writer/consolewriter.rb +21 -0
  55. data/lib/greenpepper/writer/freetextresult.rb +233 -0
  56. data/lib/greenpepper/writer/freetextwriter.rb +44 -0
  57. data/lib/greenpepper/writer/html.rb +14 -0
  58. data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
  59. data/lib/greenpepper/writer/htmlresult.rb +192 -0
  60. data/lib/greenpepper/writer/htmlwriter.rb +112 -0
  61. data/lib/greenpepper/writer/output.rb +26 -0
  62. data/lib/greenpepper/writer/result.rb +35 -0
  63. data/lib/greenpepper/writer/xmlwriter.rb +32 -0
  64. data/test/coreseedstest.rb +39 -0
  65. data/test/greenpepper/argumentparsertest.rb +162 -0
  66. data/test/greenpepper/common/loadpathtest.rb +24 -0
  67. data/test/greenpepper/common/stattest.rb +186 -0
  68. data/test/greenpepper/convertertest.rb +371 -0
  69. data/test/greenpepper/coretest.rb +159 -0
  70. data/test/greenpepper/example/collectionexampletest.rb +484 -0
  71. data/test/greenpepper/example/dowithexampletest.rb +148 -0
  72. data/test/greenpepper/example/exampletest.rb +28 -0
  73. data/test/greenpepper/example/freetextexampletest.rb +151 -0
  74. data/test/greenpepper/example/importexampletest.rb +79 -0
  75. data/test/greenpepper/example/nameresolvertest.rb +56 -0
  76. data/test/greenpepper/example/ruleforexampletest.rb +225 -0
  77. data/test/greenpepper/example/setupexampletest.rb +140 -0
  78. data/test/greenpepper/example/silentexampletest.rb +17 -0
  79. data/test/greenpepper/example/unknownexampletest.rb +17 -0
  80. data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
  81. data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
  82. data/test/greenpepper/factory/examplefactorytest.rb +88 -0
  83. data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
  84. data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
  85. data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
  86. data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
  87. data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
  88. data/test/greenpepper/freetexttest.rb +222 -0
  89. data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
  90. data/test/greenpepper/loggertest.rb +26 -0
  91. data/test/greenpepper/parser/freetextparsertest.rb +124 -0
  92. data/test/greenpepper/parser/htmlparsertest.rb +77 -0
  93. data/test/greenpepper/parser/wikiparsertest.rb +21 -0
  94. data/test/greenpepper/pass/freetextpasstest.rb +54 -0
  95. data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
  96. data/test/greenpepper/pass/tablepasstest.rb +23 -0
  97. data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
  98. data/test/greenpepper/writer/freetextwritertest.rb +301 -0
  99. data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
  100. data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
  101. data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
  102. data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
  103. data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
  104. data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
  105. data/test/greenpepper/writer/writertest.rb +33 -0
  106. data/test/greenpepper/writer/xmlwritertest.rb +34 -0
  107. data/test/integration/collectionexampleintegrationtest.rb +64 -0
  108. data/test/integration/errorhandlingintegrationtest.rb +68 -0
  109. data/test/integration/freetextexampleintegrationtest.rb +75 -0
  110. data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
  111. data/test/integration/importexampleintegrationtest.rb +41 -0
  112. data/test/integration/interpretationordertest.rb +48 -0
  113. data/test/integration/ruleforexampleintegrationtest.rb +102 -0
  114. data/test/integration/securityintegrationtest.rb +30 -0
  115. data/test/integration/setupexampleintegrationtest.rb +31 -0
  116. data/test/integration/silentexampleintegrationtest.rb +29 -0
  117. data/test/task/greenpeppertasktest.rb +96 -0
  118. data/test/task/redpeppertasktest.rb +120 -0
  119. data/vendor/accents.rb +85 -0
  120. metadata +234 -0
@@ -0,0 +1,147 @@
1
+ =begin
2
+ author: Martin Provencher (martin.provencher@usherbrooke.ca)
3
+ date: Februrary 24, 2009
4
+ =end
5
+
6
+ require 'rubygems'
7
+ require 'libxml'
8
+ require 'test/unit'
9
+ require 'greenpepper/writer/htmlwriter'
10
+ require 'greenpepper/example/ruleforexample'
11
+ require 'greenpepper/context/htmlcontext'
12
+
13
+ require 'test/fixtures/fixture'
14
+ require 'test/helper/assertion'
15
+ require 'test/helper/html'
16
+
17
+ include GreenPepper
18
+
19
+ class HtmlRuleForWriterTest < Test::Unit::TestCase
20
+
21
+ def test_for_example_three_inputs_two_outputs_two_rows
22
+ base_html = "<table><tr><td>Rule for</td><td>RuleForExampleAddSubFixtureThreeOperand</td></tr>"
23
+ base_html += "<tr><td>operand1</td><td>operand2</td><td>sum</td><td>operand3</td><td>sub</td></tr>"
24
+ base_html += "<tr><td>9</td><td>8</td><td>6</td><td>5</td><td>4</td></tr>"
25
+ base_html += "<tr><td>-1</td><td>0</td><td>1</td><td>2</td><td>3</td></tr></table>"
26
+
27
+ html_ex = "<table><tr><td>Rule for</td><td>RuleForExampleAddSubFixtureThreeOperand</td></tr><tr><td>operand1</td><td>operand2</td><td>sum</td><td>operand3</td><td>sub</td></tr><tr><td>9</td><td>8</td><td style=\"background-color: #F08080\"><b>Expected: </b>6<b> Received: </b>17</td><td>5</td><td style=\"background-color: #F08080\"><b>Expected: </b>4<b> Received: </b>-4</td></tr><tr><td>-1</td><td>0</td><td style=\"background-color: #F08080\"><b>Expected: </b>1<b> Received: </b>-1</td><td>2</td><td style=\"background-color: #F08080\"><b>Expected: </b>3<b> Received: </b>-3</td></tr></table>"
28
+ expected = HtmlHelper.create_expected html_ex
29
+
30
+ ex = RuleForExample.new "RuleForExampleAddSubFixtureThreeOperand", NameResolver
31
+ ex.add_input_header "operand1"
32
+ ex.add_input_header "operand2"
33
+ ex.add_output_header "sum"
34
+ ex.add_input_header "operand3"
35
+ ex.add_output_header "sub"
36
+ ex.add_row ["9","8","6","5","4"]
37
+ ex.add_row ["-1","0","1","2","3"]
38
+
39
+ result = HtmlHelper.test_x_html_table(1, ex, base_html)
40
+ assert_equal expected, result
41
+ end
42
+
43
+ def test_example_1i_1o_rewrote_on_html_with_font
44
+ base_html = "<table><tr><td>Rule for</td><td>RuleForExampleEqualityPlusOneFixture</td></tr>"
45
+ base_html += "<tr><td>value</td><td>equality</td></tr>"
46
+ base_html += "<tr><td><font color='#F08080'>3</font></td><td><b>4</b></td></tr></table>"
47
+
48
+ html_ex = "<table><tr><td>Rule for</td><td>RuleForExampleEqualityPlusOneFixture</td></tr><tr><td>value</td><td>equality</td></tr><tr><td><font color=\"#F08080\">3</font></td><td style=\"background-color: #98FB98\"><b>4</b></td></tr></table>"
49
+ expected = HtmlHelper.create_expected html_ex
50
+
51
+ ex = RuleForExample.new "RuleForExampleEqualityPlusOneFixture", NameResolver
52
+ ex.add_input_header "value"
53
+ ex.add_output_header "equality"
54
+ ex.add_row ["3","4"]
55
+
56
+ result = HtmlHelper.test_x_html_table 1, ex, base_html
57
+ assert_equal expected, result
58
+ end
59
+
60
+ def test_bad_results_return_expected_and_received_value_with_parse_and_format_in_fixture
61
+ base_html = "<table><tr><td>Rule for</td><td>RuleForExampleSumFixture</td></tr><tr><td>operand1</td><td>operand2</td><td>sum</td></tr>"
62
+ base_html += "<tr><td>3</td><td>5</td><td>9</td></tr></table>"
63
+
64
+ html_ex = "<table><tr><td>Rule for</td><td>RuleForExampleSumFixture</td></tr><tr><td>operand1</td><td>operand2</td><td>sum</td></tr><tr><td>3</td><td>5</td><td style=\"background-color: #F08080\"><b>Expected: </b>test=9.0<b> Received: </b>test=8.0</td></tr></table>"
65
+ expected = HtmlHelper.create_expected html_ex
66
+
67
+ bad_sum_example = RuleForExample.new(
68
+ "RuleForExampleSumFixtureParseFormat", NameResolver)
69
+ bad_sum_example.add_input_header "operand1"
70
+ bad_sum_example.add_input_header "operand2"
71
+ bad_sum_example.add_output_header "sum"
72
+ bad_sum_example.add_row ["3","5","9"]
73
+
74
+ result = HtmlHelper.test_x_html_table(1, bad_sum_example, base_html)
75
+ assert_equal expected, result
76
+ end
77
+
78
+ def test_for_example_displays_exception_html_generation
79
+ base_html = "<table border=\"1\"><tr><td>Rule for</td><td>RaiseErrorFixture</td></tr><tr><td>operand 1</td><td>raise_error?</td></tr>"
80
+ base_html += "<tr><td>3</td><td>5</td></tr></table>"
81
+
82
+ html_ex = "<table border=\"1\"><tr><td>Rule for</td><td>RaiseErrorFixture</td></tr><tr><td>operand 1</td><td>raise_error?</td></tr><tr><td>3</td><td style=\"background-color: #F0E68C\">RuntimeError: Somme Error</td></tr></table>"
83
+ expected = HtmlHelper.create_expected html_ex
84
+
85
+ ex = RuleForExample.new "RaiseErrorFixture", NameResolver
86
+ ex.add_input_header "operand 1"
87
+ ex.add_output_header "raise_error"
88
+ ex.add_row ["3","5"]
89
+
90
+ result = HtmlHelper.test_x_html_table 1, ex, base_html,
91
+ {:no_exception_stack => true}
92
+
93
+ assert_equal expected, result
94
+ end
95
+
96
+ def test_for_example_html_writer_non_existing_fixture
97
+ base_html = "<table border=\"1\"><tr><th>Rule for</th><th>non existing fixture test</th></tr><tr><td>operand1</td><td>raise_error?</td></tr>"
98
+ base_html += "<tr><td>3</td><td>5</td></tr></table>"
99
+
100
+ html_ex = "<table border=\"1\"><tr><th>Rule for</th><th style=\"background-color: #F0E68C\">non existing fixture test</th></tr><tr><td>operand1</td><td>raise_error?</td></tr><tr><td>3</td><td>5</td></tr></table>"
101
+ expected = HtmlHelper.create_expected html_ex
102
+
103
+ ex = RuleForExample.new "Non existing fixture test", NameResolver
104
+ ex.add_input_header "operand1"
105
+ ex.add_output_header "raise_error"
106
+ ex.add_row ["3","5"]
107
+
108
+ result = HtmlHelper.test_x_html_table(1, ex, base_html)
109
+ assert_equal expected, result
110
+ end
111
+
112
+ class MoneyTypeDollarAtEnd < TypeBase
113
+ def self.regex
114
+ /^\d+\.\d+\$$/
115
+ end
116
+
117
+ def self.convert
118
+ Proc.new {|s| s[0..-2].to_f }
119
+ end
120
+
121
+ def self.format
122
+ Proc.new { |money,expected_format|
123
+ money = money.to_s.split(".")
124
+ money[0] + "." + money[1].ljust(2,'0') + "\$"
125
+ }
126
+ end
127
+ end
128
+
129
+ def test_bad_results_return_expected_and_received_value_with_parse_and_format_in_type_converter
130
+ base_html = "<table><tr><td>Rule for</td><td>RuleForExampleSumFixture</td></tr><tr><td>operand1</td><td>operand2</td><td>sum</td></tr>"
131
+ base_html += "<tr><td>3.00$</td><td>5.00$</td><td>9.00$</td></tr></table>"
132
+
133
+ html_ex = "<table><tr><td>Rule for</td><td>RuleForExampleSumFixture</td></tr><tr><td>operand1</td><td>operand2</td><td>sum</td></tr><tr><td>3.00$</td><td>5.00$</td><td style=\"background-color: #F08080\"><b>Expected: </b>9.00$<b> Received: </b>8.00$</td></tr></table>"
134
+ expected = HtmlHelper.create_expected html_ex
135
+
136
+ ex = RuleForExample.new(
137
+ "RuleForExampleSumFixture", NameResolver)
138
+ ex.add_input_header "operand1"
139
+ ex.add_input_header "operand2"
140
+ ex.add_output_header "sum"
141
+ ex.add_row ["3.00$","5.00$","9.00$"]
142
+
143
+ result = HtmlHelper.test_x_html_table(1, ex, base_html)
144
+ assert_equal expected, result
145
+ end
146
+
147
+ end
@@ -0,0 +1,107 @@
1
+ =begin
2
+ author: Simon Mathieu
3
+ date: March 24, 2009
4
+ =end
5
+
6
+ require 'rubygems'
7
+ require 'libxml'
8
+ require 'test/unit'
9
+ require 'greenpepper/writer/htmlwriter'
10
+ require 'greenpepper/example/setupexample'
11
+ require 'greenpepper/parser/table'
12
+ require 'greenpepper/factory/setupexamplefactory'
13
+
14
+ require 'test/fixtures/fixture'
15
+ require 'test/fixtures/setupfixture'
16
+ require 'test/helper/assertion'
17
+ require 'test/helper/html'
18
+
19
+ include GreenPepper
20
+
21
+ class HtmlSetupWriterTest < Test::Unit::TestCase
22
+
23
+ def test_setup_writer_multiple_lines
24
+ base_html = '
25
+ <table border="1">
26
+ <tr><td>Setup</td>
27
+ <td>setup multiple lines</td></tr>
28
+
29
+ <tr><td>a</td><td>b</td></tr>
30
+ <tr><td>1</td><td>2</td></tr>
31
+ <tr><td>3</td><td>4</td></tr>
32
+ <tr><td>5</td><td>6</td></tr>
33
+ </table>'
34
+
35
+ expected = "<table border=\"1\">\n <tr><td>Setup</td>\n <td>setup multiple lines</td></tr>\n\n <tr><td>a</td><td>b</td></tr>\n <tr><td>1</td><td>2</td><td style=\"background-color: #98FB98\">Success</td></tr>\n <tr><td>3</td><td>4</td><td style=\"background-color: #F08080\">Fail</td></tr>\n <tr><td>5</td><td>6</td><td style=\"background-color: #F0E68C\">RuntimeError: SetupError</td></tr>\n </table>"
36
+ expected = HtmlHelper.create_expected expected
37
+
38
+ table = Table.new
39
+ table.push_row ['setup', 'SetupMultipleLines']
40
+ table.push_row ['a', 'b']
41
+ table.push_row ['1', '2']
42
+ table.push_row ['3', '4']
43
+ table.push_row ['3', '4']
44
+
45
+ factory = SetupExampleFactory.new
46
+ ex = factory.create_example table
47
+
48
+ result = HtmlHelper.test_x_html_table(1, ex, base_html,
49
+ {:no_exception_stack => true})
50
+
51
+ assert_equal expected, result
52
+ end
53
+
54
+ def test_setup_example_writer_fixture_not_found
55
+
56
+ base_html = '
57
+ <table border="1">
58
+ <tr><td>Setup</td>
59
+ <td>Fixture Not Found</td></tr>
60
+ <tr><td>a</td><td>b</td></tr>
61
+ </table>'
62
+ expected = "<table border=\"1\">\n <tr><td>Setup</td>\n <td style=\"background-color: #F0E68C\">Fixture Not Found</td></tr> <tr><td>a</td><td>b</td></tr>\n </table>"
63
+ expected = HtmlHelper.create_expected expected
64
+
65
+ table = Table.new
66
+ table.push_row ['Setup', 'Fixture Not Found']
67
+ table.push_row ['a', 'b']
68
+
69
+ factory = SetupExampleFactory.new
70
+ ex = factory.create_example table
71
+
72
+ result = HtmlHelper.test_x_html_table(1, ex, base_html)
73
+ assert_equal expected, result
74
+ end
75
+
76
+ def test_setup_writer_exception_in_function
77
+ base_html = '<table border="1">
78
+ <tr><td>Setup</td>
79
+ <td>setup raise error in setter</td></tr>
80
+
81
+ <tr><td>h1</td><td>h2</td></tr>
82
+ <tr><td>2</td><td>4</td></tr>
83
+ </table>'
84
+ expected ='<table border="1">
85
+ <tr><td>Setup</td>
86
+ <td>setup raise error in setter</td></tr>
87
+
88
+ <tr><td>h1</td><td>h2</td></tr>
89
+ <tr><td style="background-color: #F0E68C">StandardError: Bob error</td><td>4</td><td style="background-color: #F08080">Fail</td></tr>
90
+ </table>'
91
+ expected = HtmlHelper.create_expected expected
92
+
93
+ table = Table.new
94
+ table.push_row ['setup', 'SetupRaiseErrorInSetter']
95
+ table.push_row ['h1', 'h2']
96
+ table.push_row [RuntimeError.new, '2']
97
+
98
+ factory = SetupExampleFactory.new
99
+ ex = factory.create_example table
100
+
101
+ result = HtmlHelper.test_x_html_table(1, ex, base_html,
102
+ {:no_exception_stack => true})
103
+
104
+ assert_equal expected, result
105
+ end
106
+
107
+ end
@@ -0,0 +1,118 @@
1
+ =begin
2
+ author: Geoffrey Vanstaen (gvanstaen@hotmail.com)
3
+ date: September 4, 2009
4
+ =end
5
+
6
+ require 'rubygems'
7
+ require 'libxml'
8
+ require 'test/unit'
9
+ require 'greenpepper/writer/htmlwriter'
10
+ require 'greenpepper/example/ruleforexample'
11
+ require 'greenpepper/context/htmlcontext'
12
+
13
+ require 'test/fixtures/fixture'
14
+ require 'test/helper/assertion'
15
+ require 'test/helper/html'
16
+
17
+ include GreenPepper
18
+
19
+ class HtmlStatResultWriteTest < Test::Unit::TestCase
20
+
21
+ def setup
22
+ base_html = "<td>3</td>"
23
+ @cell_root = (LibXML::XML::Parser.string base_html).parse.root
24
+ end
25
+
26
+ def teardown
27
+ assert_equal @expected, @result.write(@cell_root).to_s
28
+ end
29
+
30
+ def test_success_result_write_green
31
+ @expected = "<td style=\"background-color: #98FB98\">3</td>"
32
+ @result = SuccessExampleResult.new
33
+ end
34
+
35
+ def test_none_result_do_nothing
36
+ @expected = "<td>3</td>"
37
+ @result = NoExampleResult.new
38
+ end
39
+
40
+ def test_fail_result_write_red
41
+ @expected = "<td style=\"background-color: #F08080\">3</td>"
42
+ @result = FailureExampleResult.new
43
+ end
44
+
45
+ def test_nil_result_write_yellow
46
+ @expected = "<td style=\"background-color: #F0E68C\">3</td>"
47
+ @result = ErrorExampleResult.new
48
+ end
49
+
50
+ def test_ignore_result_write_grey
51
+ base_html = "<td></td>"
52
+ @cell_root = (LibXML::XML::Parser.string base_html).parse.root
53
+ @expected = "<td style=\"background-color: #D3D3D3\">2</td>"
54
+ @result = WriteIgnoredExampleResult.new(2)
55
+ end
56
+
57
+ def test_result_success_write_is_green
58
+ @expected = "<td style=\"background-color: #98FB98\">3Success</td>"
59
+ @result = WriteSucessExampleResult.new
60
+ end
61
+
62
+ def test_result_fail_write_is_red
63
+ @expected = "<td style=\"background-color: #F08080\">3Fail</td>"
64
+ @result = WriteFailExampleResult.new
65
+ end
66
+
67
+ def test_result_exception_is_yellow_and_have_exception_label
68
+ @expected = "<td style=\"background-color: #F0E68C\">Exception: Exception</td>"
69
+ exception = Exception.new
70
+ @result = WriteExceptionExampleResult.new exception
71
+ end
72
+
73
+
74
+ def test_result_excepted_is_red_and_have_expected_received
75
+ @expected = "<td style=\"background-color: #F08080\"><b>Expected: </b>2<b>"+
76
+ " Received: </b>3</td>"
77
+ @result = WriteExpectedExampleResult.new 2, 3
78
+ end
79
+
80
+ def test_result_missing_is_red_and_have_missing_label
81
+ @expected = "<td style=\"background-color: #F08080\"><i>Missing </i>3</td>"
82
+ @result = WriteMissingExampleResult.new
83
+ end
84
+
85
+ def test_result_surplus_is_red_and_have_surplus_label_with_value
86
+ @expected = "<td style=\"background-color: #F08080\"><i>Surplus </i>4</td>"
87
+ @result = WriteSurplusExampleResult.new 4
88
+ end
89
+ end
90
+
91
+ class HtmlresultResultOptionTest < Test::Unit::TestCase
92
+ def setup
93
+ base_html = "<td>3</td>"
94
+ @cell_root = (LibXML::XML::Parser.string base_html).parse.root
95
+ end
96
+
97
+ def test_result_exception_should_print_stack_by_default
98
+ @expected = "<td style=\"background-color: #F0E68C\">Exception: Exception"+
99
+ "<hr/>a<br/>b<br/></td>"
100
+ exception = Exception.new
101
+ exception.set_backtrace ["a", "b"]
102
+
103
+ @result = WriteExceptionExampleResult.new exception
104
+
105
+ assert_equal @expected, @result.write(@cell_root).to_s
106
+ end
107
+
108
+ def test_result_exception_should_not_print_stack_when_no_exception_stack
109
+ @expected = "<td style=\"background-color: #F0E68C\">Exception: Exception</td>"
110
+ exception = Exception.new
111
+ exception.set_backtrace ["a", "b"]
112
+
113
+ @result = WriteExceptionExampleResult.new exception
114
+
115
+ assert_equal @expected,
116
+ @result.write(@cell_root, {:no_exception_stack => true}).to_s
117
+ end
118
+ end
@@ -0,0 +1,53 @@
1
+ =begin
2
+ author: Geoffrey Vanstaen (gvanstaen@hotmail.com)
3
+ date: September 22, 2009
4
+ =end
5
+
6
+ require 'rubygems'
7
+ require 'libxml'
8
+ require 'test/unit'
9
+ require 'lib/greenpepper/writer/htmlwriter'
10
+ require 'lib/greenpepper/context/htmlcontext'
11
+ require 'lib/greenpepper/executionunit'
12
+
13
+ require 'test/fixtures/fixture'
14
+ require 'test/helper/assertion'
15
+ require 'test/helper/html'
16
+ require 'test/helper/commonhelper'
17
+
18
+ include GreenPepper
19
+
20
+ class HtmlWriterPositionTest < Test::Unit::TestCase
21
+ include CommonHelper
22
+
23
+ def setup
24
+ @base_html = load_file('test/seeds/html_test_simple_table_multiple_argument_check_position.html')
25
+ end
26
+
27
+ def test_writer_write_success_at_asked_position
28
+ expected = load_file('test/expected/html_test_simple_table_multiple_argument_check_position_success.html')
29
+ assert_write(exampleResult = SuccessExampleResult.new, expected, 2, 2)
30
+ end
31
+
32
+ def test_writer_write_fail_at_asked_position
33
+ expected = load_file('test/expected/html_test_simple_table_multiple_argument_check_position_failure.html')
34
+ assert_write(exampleResult = FailureExampleResult.new, expected, 2, 1)
35
+ end
36
+
37
+ def test_writer_write_in_an_existing_cell
38
+ expected = load_file('test/expected/html_test_simple_table_multiple_argument_check_position_empty_cell.html')
39
+ assert_write(exampleResult = SuccessExampleResult.new, expected, 2, 3)
40
+ end
41
+
42
+ def assert_write(exampleResult, expected, row, column)
43
+ results = HtmlTableExecutionResults.new
44
+ results.add row, column, exampleResult
45
+
46
+ ex_unit = ExecutionUnit.new(nil, HtmlContext.new, nil, results)
47
+
48
+ writer = HtmlWriter.new
49
+ received = writer.write(@base_html, [ex_unit])
50
+
51
+ assert_equal expected, received
52
+ end
53
+ end
@@ -0,0 +1,33 @@
1
+ =begin
2
+ author: Martin Provencher (martin.provencher@usherbrooke.ca)
3
+ date: Februrary 24, 2009
4
+ =end
5
+
6
+ require 'rubygems'
7
+ require 'libxml'
8
+ require 'test/unit'
9
+ require 'greenpepper/writer/htmlwriter'
10
+ require 'greenpepper/example/ruleforexample'
11
+ require 'greenpepper/context/htmlcontext'
12
+
13
+ require 'test/fixtures/fixture'
14
+ require 'test/helper/assertion'
15
+ require 'test/helper/html'
16
+
17
+ include GreenPepper
18
+
19
+ class WriterTest < Test::Unit::TestCase
20
+ def setup
21
+ end
22
+
23
+ def test_success_stat_write_green
24
+ base_html = "<td>3</td>"
25
+ expected = "<td style=\"background-color: #98FB98\">3</td>"
26
+
27
+ result = SuccessExampleResult.new
28
+ cell_root = (LibXML::XML::Parser.string base_html).parse.root
29
+
30
+ assert_equal expected, result.write(cell_root).to_s
31
+ end
32
+
33
+ end