greenpepper-ruby 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/greenpepperize +71 -0
- data/bin/greenpepperrails +33 -0
- data/bin/greenpepperruby +15 -0
- data/data/greenpepper.rake +37 -0
- data/data/helper.rb +32 -0
- data/data/tags +6 -0
- data/lib/greenpepper/argumentparser.rb +161 -0
- data/lib/greenpepper/common/loadpath.rb +7 -0
- data/lib/greenpepper/context/htmlcontext.rb +26 -0
- data/lib/greenpepper/converter.rb +347 -0
- data/lib/greenpepper/core.rb +152 -0
- data/lib/greenpepper/example/collectionexample.rb +305 -0
- data/lib/greenpepper/example/dowithexample.rb +192 -0
- data/lib/greenpepper/example/exampleheader.rb +41 -0
- data/lib/greenpepper/example/examplewithfixture.rb +73 -0
- data/lib/greenpepper/example/executionresults.rb +160 -0
- data/lib/greenpepper/example/fieldaccessor.rb +36 -0
- data/lib/greenpepper/example/freetextexample.rb +51 -0
- data/lib/greenpepper/example/importexample.rb +39 -0
- data/lib/greenpepper/example/nameresolver.rb +69 -0
- data/lib/greenpepper/example/ruleforexample.rb +117 -0
- data/lib/greenpepper/example/setupexample.rb +79 -0
- data/lib/greenpepper/example/silentexample.rb +14 -0
- data/lib/greenpepper/example/unknownexample.rb +17 -0
- data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
- data/lib/greenpepper/executionunit.rb +39 -0
- data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
- data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
- data/lib/greenpepper/factory/examplefactory.rb +14 -0
- data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
- data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
- data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
- data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
- data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
- data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
- data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
- data/lib/greenpepper/freetext.rb +164 -0
- data/lib/greenpepper/grammar/array.treetop +51 -0
- data/lib/greenpepper/grammar/arrayparser.rb +14 -0
- data/lib/greenpepper/greenpepperconfig.rb +19 -0
- data/lib/greenpepper/greenpeppertask.rb +60 -0
- data/lib/greenpepper/logger.rb +45 -0
- data/lib/greenpepper/parser/freetextparser.rb +96 -0
- data/lib/greenpepper/parser/htmlparser.rb +70 -0
- data/lib/greenpepper/parser/scenario.rb +25 -0
- data/lib/greenpepper/parser/table.rb +37 -0
- data/lib/greenpepper/parser/wikiparser.rb +26 -0
- data/lib/greenpepper/pass/freetextpass.rb +24 -0
- data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
- data/lib/greenpepper/pass/tablepass.rb +38 -0
- data/lib/greenpepper/railsargumentparser.rb +46 -0
- data/lib/greenpepper/redpeppertask.rb +89 -0
- data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
- data/lib/greenpepper/writer/consolewriter.rb +21 -0
- data/lib/greenpepper/writer/freetextresult.rb +233 -0
- data/lib/greenpepper/writer/freetextwriter.rb +44 -0
- data/lib/greenpepper/writer/html.rb +14 -0
- data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
- data/lib/greenpepper/writer/htmlresult.rb +192 -0
- data/lib/greenpepper/writer/htmlwriter.rb +112 -0
- data/lib/greenpepper/writer/output.rb +26 -0
- data/lib/greenpepper/writer/result.rb +35 -0
- data/lib/greenpepper/writer/xmlwriter.rb +32 -0
- data/test/coreseedstest.rb +39 -0
- data/test/greenpepper/argumentparsertest.rb +162 -0
- data/test/greenpepper/common/loadpathtest.rb +24 -0
- data/test/greenpepper/common/stattest.rb +186 -0
- data/test/greenpepper/convertertest.rb +371 -0
- data/test/greenpepper/coretest.rb +159 -0
- data/test/greenpepper/example/collectionexampletest.rb +484 -0
- data/test/greenpepper/example/dowithexampletest.rb +148 -0
- data/test/greenpepper/example/exampletest.rb +28 -0
- data/test/greenpepper/example/freetextexampletest.rb +151 -0
- data/test/greenpepper/example/importexampletest.rb +79 -0
- data/test/greenpepper/example/nameresolvertest.rb +56 -0
- data/test/greenpepper/example/ruleforexampletest.rb +225 -0
- data/test/greenpepper/example/setupexampletest.rb +140 -0
- data/test/greenpepper/example/silentexampletest.rb +17 -0
- data/test/greenpepper/example/unknownexampletest.rb +17 -0
- data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
- data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
- data/test/greenpepper/factory/examplefactorytest.rb +88 -0
- data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
- data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
- data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
- data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
- data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
- data/test/greenpepper/freetexttest.rb +222 -0
- data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
- data/test/greenpepper/loggertest.rb +26 -0
- data/test/greenpepper/parser/freetextparsertest.rb +124 -0
- data/test/greenpepper/parser/htmlparsertest.rb +77 -0
- data/test/greenpepper/parser/wikiparsertest.rb +21 -0
- data/test/greenpepper/pass/freetextpasstest.rb +54 -0
- data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
- data/test/greenpepper/pass/tablepasstest.rb +23 -0
- data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
- data/test/greenpepper/writer/freetextwritertest.rb +301 -0
- data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
- data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
- data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
- data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
- data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
- data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
- data/test/greenpepper/writer/writertest.rb +33 -0
- data/test/greenpepper/writer/xmlwritertest.rb +34 -0
- data/test/integration/collectionexampleintegrationtest.rb +64 -0
- data/test/integration/errorhandlingintegrationtest.rb +68 -0
- data/test/integration/freetextexampleintegrationtest.rb +75 -0
- data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
- data/test/integration/importexampleintegrationtest.rb +41 -0
- data/test/integration/interpretationordertest.rb +48 -0
- data/test/integration/ruleforexampleintegrationtest.rb +102 -0
- data/test/integration/securityintegrationtest.rb +30 -0
- data/test/integration/setupexampleintegrationtest.rb +31 -0
- data/test/integration/silentexampleintegrationtest.rb +29 -0
- data/test/task/greenpeppertasktest.rb +96 -0
- data/test/task/redpeppertasktest.rb +120 -0
- data/vendor/accents.rb +85 -0
- metadata +234 -0
@@ -0,0 +1,301 @@
|
|
1
|
+
=begin
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
date: October 3, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'test/helper/assert'
|
8
|
+
require 'test/helper/assertion'
|
9
|
+
|
10
|
+
require 'greenpepper/freetext'
|
11
|
+
require 'greenpepper/example/freetextexample'
|
12
|
+
require 'greenpepper/writer/freetextwriter'
|
13
|
+
require 'greenpepper/writer/freetextresult'
|
14
|
+
|
15
|
+
|
16
|
+
include GreenPepper
|
17
|
+
|
18
|
+
class FreeTextWriterSuccessTest < Test::Unit::TestCase
|
19
|
+
def setup
|
20
|
+
@fixture_name = "Some Fixture"
|
21
|
+
@ex = FreeTextExample.new @fixture_name
|
22
|
+
@ex.add_action "Action 1"
|
23
|
+
|
24
|
+
@results = FreeTextExecutionResults.new
|
25
|
+
@results.add_result HeaderSuccess.new(@fixture_name)
|
26
|
+
|
27
|
+
@writer = FreeTextWriter.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_write_example_with_success_in_header
|
31
|
+
ex = FreeTextExample.new @fixture_name
|
32
|
+
assert_html "<div class=\"greenpepper-freetext\">Scenario: #{@fixture_name}</div>"
|
33
|
+
assert_equal 0, ExecutionResults.get_all_results([@results]).successes
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_writer_example_with_success_in_given
|
37
|
+
@results.add_result GivenSuccess.new
|
38
|
+
assert_html '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
39
|
+
'<div class="greenpepper-freetext-indent">Action 1</div>'
|
40
|
+
assert_equal 0, ExecutionResults.get_all_results([@results]).successes
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_writer_example_with_success_in_when
|
44
|
+
@results.add_result WhenSuccess.new
|
45
|
+
assert_html '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
46
|
+
'<div class="greenpepper-freetext-indent">Action 1</div>'
|
47
|
+
assert_equal 0, ExecutionResults.get_all_results([@results]).successes
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_writer_example_with_success_in_check
|
51
|
+
@results.add_result CheckSuccess.new
|
52
|
+
assert_html '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
53
|
+
'<div class="greenpepper-freetext-indent">' +
|
54
|
+
'<font style="background-color: #98FB98;">Action 1</font></div>'
|
55
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).successes
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_writer_example_with_success_in_ask
|
59
|
+
@results.add_result AskSuccess.new('foo')
|
60
|
+
assert_html '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
61
|
+
'<div class="greenpepper-freetext-indent">Action 1' +
|
62
|
+
'<div class="greenpepper-freetext-indent">Answer: ' +
|
63
|
+
'<font style="background-color: #D3D3D3;">foo</font></div></div>'
|
64
|
+
assert_equal 0, ExecutionResults.get_all_results([@results]).successes
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_writer_example_with_success_in_then
|
68
|
+
expectation = Expectation.new('1')
|
69
|
+
expectation.received = '1'
|
70
|
+
|
71
|
+
@results.add_result ThenResults.new(/Action (1)/, [expectation])
|
72
|
+
assert_html '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
73
|
+
'<div class="greenpepper-freetext-indent">Action ' +
|
74
|
+
'<font style="background-color: #98FB98;">1</font></div>'
|
75
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).successes
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_writer_example_with_multiple_successes_in_then
|
79
|
+
ex = FreeTextExample.new @fixture_name
|
80
|
+
ex.add_action "Action 1 and 2"
|
81
|
+
|
82
|
+
expectations= [Expectation.new('1'),
|
83
|
+
Expectation.new('2')]
|
84
|
+
expectations[0].received = '1'
|
85
|
+
expectations[1].received = '2'
|
86
|
+
|
87
|
+
@results.add_result ThenResults.new(/Action (1) and (2)/, expectations)
|
88
|
+
html = @writer.example_to_html ex, @results
|
89
|
+
|
90
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
91
|
+
'<div class="greenpepper-freetext-indent">Action ' +
|
92
|
+
'<font style="background-color: #98FB98;">1</font> and ' +
|
93
|
+
'<font style="background-color: #98FB98;">2</font></div>', html
|
94
|
+
|
95
|
+
assert_equal 2, ExecutionResults.get_all_results([@results]).successes
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
def assert_html(expected)
|
100
|
+
html = @writer.example_to_html @ex, @results
|
101
|
+
assert_equal expected, html
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class FreeTextWriterErrorTest < Test::Unit::TestCase
|
106
|
+
def setup
|
107
|
+
@fixture_name = "Some Fixture"
|
108
|
+
@ex = FreeTextExample.new "Some Fixture"
|
109
|
+
@ex.add_action "Action 1"
|
110
|
+
|
111
|
+
@results = FreeTextExecutionResults.new
|
112
|
+
@results.add_result HeaderSuccess.new(@fixture_name)
|
113
|
+
|
114
|
+
@writer = FreeTextWriter.new
|
115
|
+
|
116
|
+
@error = Exception.new
|
117
|
+
@error.set_backtrace ["a", "b", "c"]
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_header
|
121
|
+
ex = FreeTextExample.new @fixture_name
|
122
|
+
results = FreeTextExecutionResults.new
|
123
|
+
results.add_result HeaderError.new(@fixture_name, @error)
|
124
|
+
|
125
|
+
html = @writer.example_to_html ex, results
|
126
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: '+
|
127
|
+
'<font style="background-color: #F0E68C;">' +
|
128
|
+
'Some Fixture</font><div class="greenpepper-freetext-indent">' +
|
129
|
+
'<div class="greenpepper-freetext-indent">' +
|
130
|
+
'<font style="background-color: #F0E68C;">Exception: Exception</font>' +
|
131
|
+
'</div><hr/><div class="greenpepper-freetext-indent2">' +
|
132
|
+
'<font style="background-color: #F0E68C;">a</font></div>' +
|
133
|
+
'<div class="greenpepper-freetext-indent2">' +
|
134
|
+
'<font style="background-color: #F0E68C;">b</font></div>' +
|
135
|
+
'<div class="greenpepper-freetext-indent2">' +
|
136
|
+
'<font style="background-color: #F0E68C;">c</font></div></div></div>', html
|
137
|
+
assert_equal 1, ExecutionResults.get_all_results([results]).errors
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_error
|
141
|
+
expected = '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
142
|
+
'<div class="greenpepper-freetext-indent"><div class="greenpepper-freetext">'+
|
143
|
+
'<font style="background-color: #F0E68C;">Action 1</font></div>' +
|
144
|
+
'<div class="greenpepper-freetext-indent">' +
|
145
|
+
'<font style="background-color: #F0E68C;">' +
|
146
|
+
'Exception: Exception</font></div><hr/>' +
|
147
|
+
'<div class="greenpepper-freetext-indent2">' +
|
148
|
+
'<font style="background-color: #F0E68C;">a</font></div>' +
|
149
|
+
'<div class="greenpepper-freetext-indent2">' +
|
150
|
+
'<font style="background-color: #F0E68C;">b</font></div>' +
|
151
|
+
'<div class="greenpepper-freetext-indent2">' +
|
152
|
+
'<font style="background-color: #F0E68C;">c</font></div></div>'
|
153
|
+
|
154
|
+
@results.add_result ActionError.new(@error)
|
155
|
+
html = @writer.example_to_html @ex, @results
|
156
|
+
assert_equal expected, html
|
157
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).errors
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_html_tags_get_escape_in_error
|
161
|
+
expected = '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
162
|
+
'<div class="greenpepper-freetext-indent">' +
|
163
|
+
'<div class="greenpepper-freetext">' +
|
164
|
+
'<font style="background-color: #F0E68C;">Action 1</font></div>' +
|
165
|
+
'<div class="greenpepper-freetext-indent">' +
|
166
|
+
'<font style="background-color: #F0E68C;">' +
|
167
|
+
'Exception: undefined method `set\' for #<Exception: Exception>' +
|
168
|
+
'</font></div></div>'
|
169
|
+
|
170
|
+
error = Exception.new("undefined method `set' for #<Exception: Exception>")
|
171
|
+
@results.add_result ActionError.new(error)
|
172
|
+
html = @writer.example_to_html @ex, @results
|
173
|
+
assert_equal expected, html
|
174
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).errors
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
class FreeTextWriterFailureTest < Test::Unit::TestCase
|
179
|
+
def setup
|
180
|
+
@fixture_name = "Some Fixture"
|
181
|
+
|
182
|
+
@ex = FreeTextExample.new "Some Fixture"
|
183
|
+
@ex.add_action "Action 1 and 2"
|
184
|
+
|
185
|
+
@results = FreeTextExecutionResults.new
|
186
|
+
@results.add_result HeaderSuccess.new(@fixture_name)
|
187
|
+
|
188
|
+
@writer = FreeTextWriter.new
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_check
|
192
|
+
@results.add_result CheckFailure.new
|
193
|
+
html = @writer.example_to_html @ex, @results
|
194
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
195
|
+
'<div class="greenpepper-freetext-indent">' +
|
196
|
+
'<font style="background-color: #F08080;">' +
|
197
|
+
'Action 1 and 2</font></div>', html
|
198
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).failures
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_then
|
202
|
+
expectations = [Expectation.new(1), Expectation.new(2)]
|
203
|
+
expectations[0].received = 7
|
204
|
+
expectations[1].received = 2
|
205
|
+
|
206
|
+
@results.add_result ThenResults.new(/Action (1) and (2)/, expectations)
|
207
|
+
html = @writer.example_to_html @ex, @results
|
208
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
209
|
+
'<div class="greenpepper-freetext-indent">Action ' +
|
210
|
+
'<font style="background-color: #F08080;">1</font> and ' +
|
211
|
+
'<font style="background-color: #98FB98;">2</font>' +
|
212
|
+
'<div class="greenpepper-freetext-indent">' +
|
213
|
+
'<font style="background-color: #F08080;">' +
|
214
|
+
'Expected value was 1, but 7 was received</font></div></div>', html
|
215
|
+
|
216
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).successes
|
217
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).failures
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_then_expected_line
|
221
|
+
expectations = [Expectation.new(1), Expectation.new(2)]
|
222
|
+
expectations[0].received = 7
|
223
|
+
expectations[1].received = 3
|
224
|
+
|
225
|
+
@results.add_result ThenResults.new(/Action (1) and (2)/, expectations)
|
226
|
+
|
227
|
+
html = @writer.example_to_html @ex, @results
|
228
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
229
|
+
'<div class="greenpepper-freetext-indent">Action ' +
|
230
|
+
'<font style="background-color: #F08080;">1</font> and ' +
|
231
|
+
'<font style="background-color: #F08080;">2</font>' +
|
232
|
+
'<div class="greenpepper-freetext-indent">' +
|
233
|
+
'<font style="background-color: #F08080;">' +
|
234
|
+
'Expected value was 1, but 7 was received</font></div>' +
|
235
|
+
'<div class="greenpepper-freetext-indent">' +
|
236
|
+
'<font style="background-color: #F08080;">' +
|
237
|
+
'Expected value was 2, but 3 was received</font></div></div>', html
|
238
|
+
|
239
|
+
assert_equal 2, ExecutionResults.get_all_results([@results]).failures
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_writer_type_conversion_in_then
|
243
|
+
ex = FreeTextExample.new @fixture_name
|
244
|
+
ex.add_action "Action [1,2,3]"
|
245
|
+
|
246
|
+
expectation = Expectation.new([1,2,3])
|
247
|
+
expectation.received = [1,2,4]
|
248
|
+
@results.add_result ThenResults.new(/Action (\[.*\])/, [expectation])
|
249
|
+
html = @writer.example_to_html ex, @results
|
250
|
+
|
251
|
+
assert_equal '<div class="greenpepper-freetext">Scenario: Some Fixture</div>' +
|
252
|
+
'<div class="greenpepper-freetext-indent">Action ' +
|
253
|
+
'<font style="background-color: #F08080;">[1,2,3]</font>' +
|
254
|
+
'<div class="greenpepper-freetext-indent">' +
|
255
|
+
'<font style="background-color: #F08080;">Expected value was [1,2,3],' +
|
256
|
+
' but [1,2,4] was received</font></div></div>', html
|
257
|
+
assert_equal 1, ExecutionResults.get_all_results([@results]).failures
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
class FreeTextWriterTest < Test::Unit::TestCase
|
262
|
+
def test_write
|
263
|
+
base_html = load_file 'test/seeds/freetextsimpleseed.html'
|
264
|
+
|
265
|
+
error = Exception.new
|
266
|
+
error.set_backtrace ['a', 'b', 'c']
|
267
|
+
|
268
|
+
fixture_name = 'free text writer test'
|
269
|
+
results = FreeTextExecutionResults.new
|
270
|
+
results.add_result HeaderSuccess.new(fixture_name)
|
271
|
+
results.add_result GivenSuccess.new
|
272
|
+
results.add_result WhenSuccess.new
|
273
|
+
results.add_result CheckFailure.new
|
274
|
+
results.add_result ActionError.new(error)
|
275
|
+
|
276
|
+
example = FreeTextExample.new fixture_name
|
277
|
+
|
278
|
+
example.add_action "This is the first line."
|
279
|
+
example.add_action "This is the second line."
|
280
|
+
example.add_action "This is the third line."
|
281
|
+
example.add_action "This is the fourth line."
|
282
|
+
|
283
|
+
ex_unit = ExecutionUnit.new nil, nil, example, results
|
284
|
+
|
285
|
+
writer = FreeTextWriter.new
|
286
|
+
document = writer.write base_html, [ex_unit]
|
287
|
+
|
288
|
+
File.open('test/results/freetextsimpleseed.html', 'w'){ |f|
|
289
|
+
f.write document
|
290
|
+
}
|
291
|
+
|
292
|
+
assert_file_equal 'test/expected/freetextsimpleseed.html',
|
293
|
+
'test/results/freetextsimpleseed.html'
|
294
|
+
end
|
295
|
+
|
296
|
+
private
|
297
|
+
def load_file path
|
298
|
+
File.open(path) {|f| f.read }
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
@@ -0,0 +1,145 @@
|
|
1
|
+
=begin
|
2
|
+
author: Sebastien Boisclair (sebboiclair@gmail.com)
|
3
|
+
date: March 31, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'libxml'
|
8
|
+
require 'test/unit'
|
9
|
+
require 'greenpepper/writer/htmlwriter'
|
10
|
+
require 'greenpepper/example/collectionexample'
|
11
|
+
|
12
|
+
require 'test/fixtures/fixture'
|
13
|
+
require 'test/fixtures/collectionfixture'
|
14
|
+
require 'test/helper/assertion'
|
15
|
+
require 'test/helper/html'
|
16
|
+
|
17
|
+
include GreenPepper
|
18
|
+
|
19
|
+
class HtmlCollectionWriterTest < Test::Unit::TestCase
|
20
|
+
def test_collection_writer_simple_case_rewrote_on_html
|
21
|
+
base_html = load_file 'test/seeds/collection_simple.html'
|
22
|
+
expected = load_file(
|
23
|
+
'test/expected/collection_output_no_missing_surplus.html')
|
24
|
+
|
25
|
+
expected = HtmlHelper.create_expected expected
|
26
|
+
|
27
|
+
example = ListOfExample.new "CollectionFixture"
|
28
|
+
example.add_headers ['first_name', 'id']
|
29
|
+
example.add_row ['Pascal', 1]
|
30
|
+
example.add_row ['Steven', 3]
|
31
|
+
result = HtmlHelper.test_x_html_table(1, example, base_html)
|
32
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_collection_writer_too_many_input
|
36
|
+
base_html = load_file 'test/seeds/collection_one_entry.html'
|
37
|
+
expected = load_file 'test/expected/collection_output_surplus.html'
|
38
|
+
expected = HtmlHelper.create_expected expected
|
39
|
+
|
40
|
+
ex = ListOfExample.new "CollectionFixture"
|
41
|
+
ex.add_headers ['first_name', 'id']
|
42
|
+
ex.add_row ['Pascal', 1]
|
43
|
+
|
44
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
45
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_collection_writer_simple_missing_elements
|
49
|
+
base_html = load_file 'test/seeds/collection_three_entry.html'
|
50
|
+
expected = load_file 'test/expected/collection_output_missing.html'
|
51
|
+
|
52
|
+
expected = HtmlHelper.create_expected expected
|
53
|
+
|
54
|
+
ex = ListOfExample.new "CollectionFixture"
|
55
|
+
ex.add_headers ['first_name', 'id']
|
56
|
+
ex.add_row ['Pascal', 1]
|
57
|
+
ex.add_row ['Steven', 2]
|
58
|
+
ex.add_row ['Bob', 3]
|
59
|
+
|
60
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
61
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_collection_non_existing_fixture
|
65
|
+
base_html = load_file 'test/seeds/collection_non_existing_fixture.html'
|
66
|
+
expected = load_file 'test/expected/collection_missing_fixture.html'
|
67
|
+
|
68
|
+
expected = HtmlHelper.create_expected expected
|
69
|
+
|
70
|
+
ex = ListOfExample.new "NonExistingFixture"
|
71
|
+
ex.add_headers ['first_name', 'id']
|
72
|
+
ex.add_row ['Pascal', 1]
|
73
|
+
|
74
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
75
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_collection_ignore_cell
|
79
|
+
base_html = load_file 'test/seeds/collection_three_entry.html'
|
80
|
+
expected = load_file 'test/expected/collection_surplus_output_ignored.html'
|
81
|
+
|
82
|
+
expected = HtmlHelper.create_expected expected
|
83
|
+
|
84
|
+
ex = SupersetOfExample.new "CollectionFixture"
|
85
|
+
ex.add_headers ['first_name', 'id']
|
86
|
+
ex.add_row ['Pascal', 1]
|
87
|
+
ex.add_row ['Steven', 2]
|
88
|
+
ex.add_row ['Bob', 3]
|
89
|
+
|
90
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
91
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_collection_error_in_header
|
95
|
+
base_html = load_file 'test/seeds/collection_simple.html'
|
96
|
+
expected = load_file 'test/expected/collection_output_header_error.html'
|
97
|
+
|
98
|
+
expected = HtmlHelper.create_expected expected
|
99
|
+
|
100
|
+
ex = ListOfExample.new "CollectionFixture"
|
101
|
+
ex.add_headers ['next_name', 'id']
|
102
|
+
ex.add_row ['Pascal', 1]
|
103
|
+
ex.add_row ['Steven', 3]
|
104
|
+
|
105
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
106
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_collection_error_in_listof_element
|
110
|
+
base_html = load_file 'test/seeds/collection_element_error.html'
|
111
|
+
expected = load_file 'test/expected/collection_listof_output_element_error.html'
|
112
|
+
|
113
|
+
expected = HtmlHelper.create_expected expected
|
114
|
+
ex = ListOfExample.new "CollectionFixtureWithExceptionInElement"
|
115
|
+
ex.add_headers ['first_name', 'last_name']
|
116
|
+
ex.add_row ['Pascal','Ouellet']
|
117
|
+
|
118
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
119
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_collection_error_in_setof_element
|
123
|
+
base_html = load_file 'test/seeds/collection_element_error.html'
|
124
|
+
expected = load_file 'test/expected/collection_setof_output_element_error.html'
|
125
|
+
|
126
|
+
expected = HtmlHelper.create_expected expected
|
127
|
+
|
128
|
+
ex = SetOfExample.new "CollectionFixtureWithExceptionInElement"
|
129
|
+
ex.add_headers ['first_name', 'last_name']
|
130
|
+
ex.add_row ['Pascal','Ouellet']
|
131
|
+
|
132
|
+
parse_and_assert base_html, expected, ex
|
133
|
+
end
|
134
|
+
|
135
|
+
private
|
136
|
+
def load_file path
|
137
|
+
File.open(path) {|f| f.read }
|
138
|
+
end
|
139
|
+
|
140
|
+
def parse_and_assert base_html, expected, example
|
141
|
+
expected[-1] = "" if expected.size > 0 && /\n/ === expected[-1].chr
|
142
|
+
result = HtmlHelper.test_x_html_table(1, example, base_html)
|
143
|
+
assert_equal HtmlHelper.remove_indent(expected), result
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
=begin
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
date: March 25, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'libxml'
|
8
|
+
require 'test/unit'
|
9
|
+
require 'greenpepper/writer/htmlwriter'
|
10
|
+
require 'greenpepper/example/dowithexample'
|
11
|
+
|
12
|
+
require 'test/fixtures/dowithfixture'
|
13
|
+
require 'test/helper/assertion'
|
14
|
+
require 'test/helper/html'
|
15
|
+
|
16
|
+
include GreenPepper
|
17
|
+
|
18
|
+
class HtmlDoWithWriterTest < Test::Unit::TestCase
|
19
|
+
def test_multiple_line_writer
|
20
|
+
base_html = ""
|
21
|
+
html_ex = "<table border=\"1\"><tr><td>Do With</td><td>Bank2</td></tr><tr><td>open account</td><td>123</td></tr><tr><td>check</td><td>that amount for account</td><td>123</td><td>is</td><td style=\"background-color: #98FB98\">0</td></tr><tr><td style=\"background-color: #98FB98\">accept</td><td>deposit in account</td><td>100</td><td>123</td></tr><tr><td style=\"background-color: #98FB98\">reject</td><td>withdraw from account</td><td>200</td><td>123</td></tr><tr><td>end</td></tr></table>"
|
22
|
+
expected = HtmlHelper.create_expected html_ex
|
23
|
+
|
24
|
+
File.open('test/seeds/dowith_single_table2.html'){|f|
|
25
|
+
base_html = f.read }
|
26
|
+
|
27
|
+
ex = DoWithExample.new 'Bank2'
|
28
|
+
ex.add_function_call 'open account', 0, '123'
|
29
|
+
ex.add_check 'that_amount_for_account_is', 4, 0, '123'
|
30
|
+
ex.add_accept 'deposit in account', 0, '100', '123'
|
31
|
+
ex.add_reject 'withdraw from account', 0, '200', '123'
|
32
|
+
|
33
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
34
|
+
assert_equal expected, result
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_single_table_missing_fixture
|
38
|
+
base_html = ""
|
39
|
+
html_ex = "<table border=\"1\"><tr><td>Do With</td><td style=\"background-color: #F0E68C\">Bank2</td></tr><tr><td>open account</td><td>123</td></tr><tr><td>check</td><td>that amount for account</td><td>123</td><td>is</td><td>0</td></tr><tr><td>accept</td><td>deposit in account</td><td>100</td><td>123</td></tr><tr><td>reject</td><td>withdraw from account</td><td>200</td><td>123</td></tr><tr><td>end</td></tr></table>"
|
40
|
+
expected = HtmlHelper.create_expected html_ex
|
41
|
+
|
42
|
+
File.open('test/seeds/dowith_single_table2.html'){|f|
|
43
|
+
base_html = f.read }
|
44
|
+
|
45
|
+
ex = DoWithExample.new 'Bankfdasl2'
|
46
|
+
ex.add_function_call 'open account', 0, '123'
|
47
|
+
ex.add_check 'that_amount_for_account_is', 4, 0, '123'
|
48
|
+
ex.add_accept 'deposit in account', 0, '100', '123'
|
49
|
+
ex.add_reject 'withdraw from account', 0, '200', '123'
|
50
|
+
|
51
|
+
result = HtmlHelper.test_x_html_table(1, ex, base_html)
|
52
|
+
assert_equal expected, result
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_multiple_table_do_with
|
56
|
+
base_html = ""
|
57
|
+
html_ex = "Some freetex 1<table border=\"1\"><tr><td>Do With</td><td>Bank2</td></tr></table>Some freetex 2<table border=\"1\"><tr><td>open account</td><td>123</td></tr></table>Some freetex 3<table border=\"1\"><tr><td>check</td><td>that ammount for account</td><td>123</td><td>is</td><td style=\"background-color: #98FB98\">0</td></tr><tr><td style=\"background-color: #98FB98\">accept</td><td>deposit</td><td>100</td><td>in account</td><td>123</td></tr></table>Some freetex 4<table border=\"1\"><tr><td style=\"background-color: #98FB98\">reject</td><td>withdraw </td><td>200</td><td>from account</td><td>123</td></tr></table>Some freetex 5<table border=\"1\"><tr><td>end</td></tr></table>"
|
58
|
+
expected = HtmlHelper.create_expected html_ex
|
59
|
+
|
60
|
+
File.open('test/seeds/dowith_multiple_tables2.html'){|f|
|
61
|
+
base_html = f.read }
|
62
|
+
|
63
|
+
ex = DoWithExample.new 'Bank2'
|
64
|
+
ex.add_function_call 'open account', 0, '123'
|
65
|
+
ex.add_check 'that_amount_for_account_is', 4, 0, '123'
|
66
|
+
ex.add_accept 'deposit in account', 0, '100', '123'
|
67
|
+
ex.add_reject 'withdraw from account', 0, '200', '123'
|
68
|
+
|
69
|
+
result = HtmlHelper.test_x_html_table(5, ex, base_html)
|
70
|
+
assert_equal expected, result
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_do_with_writer_with_error
|
74
|
+
base_html = "<table border=\"1\">
|
75
|
+
<tr><td>do with</td><td>Bank3</td></tr>
|
76
|
+
<tr><td>open account</td><td>123</td></tr></table>"
|
77
|
+
expected = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\"><html><body><table border=\"1\"><tr><td>do with</td><td>Bank3</td></tr><tr><td style=\"background-color: #F0E68C\">RuntimeError: test</td><td>123</td></tr></table></body></html>"
|
78
|
+
|
79
|
+
ex = DoWithExample.new 'Bank3'
|
80
|
+
ex.add_function_call 'open account', 0, '123'
|
81
|
+
|
82
|
+
result = HtmlHelper.test_x_html_table 1, ex, base_html,
|
83
|
+
{:no_exception_stack => true}
|
84
|
+
|
85
|
+
assert_equal expected, result
|
86
|
+
end
|
87
|
+
end
|