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.
- 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
|