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,148 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
date: March 19, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/example/dowithexample'
|
|
8
|
+
require 'greenpepper/example/executionresults'
|
|
9
|
+
|
|
10
|
+
require 'test/fixtures/fixture'
|
|
11
|
+
require 'test/helper/assert'
|
|
12
|
+
require 'test/fixtures/dowithfixture'
|
|
13
|
+
|
|
14
|
+
include GreenPepper
|
|
15
|
+
|
|
16
|
+
class DoWithExampleTest < Test::Unit::TestCase
|
|
17
|
+
def test_create_empty_dowith_example
|
|
18
|
+
ex = DoWithExample.new "Bank"
|
|
19
|
+
ex.add_function_call "open_checking_account", 1, '1234'
|
|
20
|
+
results = ex.execute
|
|
21
|
+
|
|
22
|
+
assert_equal 0, results.size
|
|
23
|
+
assert_results_fixture_found(results)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_create_empty_dowith_example_two_args
|
|
27
|
+
ex = DoWithExample.new "Bank"
|
|
28
|
+
ex.add_function_call "open_checking_account_for", 1, '123', 'abc'
|
|
29
|
+
results = ex.execute
|
|
30
|
+
|
|
31
|
+
assert_equal 0, results.size
|
|
32
|
+
assert_results_fixture_found(results)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_do_with_example_check_keyword
|
|
36
|
+
ex = DoWithExample.new "Bank"
|
|
37
|
+
ex.add_check "get_amount", 0, '100', '123'
|
|
38
|
+
ex.add_check "get_amount", 0, '101', '123'
|
|
39
|
+
results = ex.execute
|
|
40
|
+
|
|
41
|
+
assert_check_results results, 1, 0, :success
|
|
42
|
+
assert_check_results results, 2, 0, :failure
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_do_with_example_accept_keyword
|
|
46
|
+
ex = DoWithExample.new "Bank"
|
|
47
|
+
ex.add_accept "withdraw_from_account", 0, '123', '50'
|
|
48
|
+
ex.add_accept "withdraw_from_account", 0, '123', '140'
|
|
49
|
+
results = ex.execute
|
|
50
|
+
|
|
51
|
+
assert_check_results results, 1, 0, :success
|
|
52
|
+
assert_check_results results, 2, 0, :failure
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_do_with_example_reject_keyword
|
|
56
|
+
ex = DoWithExample.new "bank"
|
|
57
|
+
ex.add_reject "withdraw_from_account", 0, '123', '50'
|
|
58
|
+
ex.add_reject "withdraw_from_account", 0, '123', '140'
|
|
59
|
+
results = ex.execute
|
|
60
|
+
|
|
61
|
+
assert_check_results results, 1, 0, :failure
|
|
62
|
+
assert_check_results results, 2, 0, :success
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_do_with_example_multiple_lines
|
|
66
|
+
ex = DoWithExample.new "Bank2"
|
|
67
|
+
ex.add_function_call 'open_account', 0, '123'
|
|
68
|
+
ex.add_check 'get_amount_for_account', 0, '0', '123'
|
|
69
|
+
ex.add_accept 'deposit_in_account', 0, '100', '123'
|
|
70
|
+
ex.add_reject 'withdraw_from_account', 0, '200', '123'
|
|
71
|
+
results = ex.execute
|
|
72
|
+
result = HtmlTableExecutionResults.get_all_results([results])
|
|
73
|
+
|
|
74
|
+
assert_equal 3, results.size
|
|
75
|
+
|
|
76
|
+
assert_check_results results, 2, 0, :success
|
|
77
|
+
assert_check_results results, 3, 0, :success
|
|
78
|
+
assert_check_results results, 4, 0, :success
|
|
79
|
+
|
|
80
|
+
assert_equal 3, result.successes
|
|
81
|
+
assert_equal 0, result.failures
|
|
82
|
+
assert_equal 0, result.errors
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_fixture_with_exeption
|
|
86
|
+
ex = DoWithExample.new "Bank"
|
|
87
|
+
ex.add_function_call 'will_raise', 0, '123'
|
|
88
|
+
results = ex.execute
|
|
89
|
+
|
|
90
|
+
assert_check_results results, 1, 0, :error
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_fixture_not_found
|
|
94
|
+
ex = DoWithExample.new "This Fixture Dont exist"
|
|
95
|
+
ex.add_reject "withdraw_from_account", 0, '123', '50'
|
|
96
|
+
results = ex.execute
|
|
97
|
+
assert_results_fixture_not_found(results)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_do_with_example_reject_keyword_with_natural_language_function_name
|
|
101
|
+
ex = DoWithExample.new "bank"
|
|
102
|
+
ex.add_reject "withdraw from account", 0, '123', '50'
|
|
103
|
+
ex.add_reject "withdraw from account", 0, '123', '140'
|
|
104
|
+
results = ex.execute
|
|
105
|
+
assert_check_results results, 1, 0, :failure
|
|
106
|
+
assert_check_results results, 2, 0, :success
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_do_with_example_with_column_name_that_does_not_exist
|
|
110
|
+
ex = DoWithExample.new "Bank"
|
|
111
|
+
ex.add_function_call 'does not exist', 0, '123'
|
|
112
|
+
results = ex.execute
|
|
113
|
+
assert_check_results results, 1, 0, :error
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_do_with_example_parse_in_fixture
|
|
117
|
+
ex = DoWithExample.new "BankFixtureConversion"
|
|
118
|
+
ex.add_accept 'get_account', 0, 'abc'
|
|
119
|
+
ex.add_accept 'get_account', 0, 'abd'
|
|
120
|
+
results = ex.execute
|
|
121
|
+
assert_check_results results, 1, 0, :success
|
|
122
|
+
assert_check_results results, 2, 0, :failure
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_do_with_example_parse_multiple_args
|
|
126
|
+
ex = DoWithExample.new "BankFixtureConversion"
|
|
127
|
+
ex.add_function_call 'multiple_params', 0, 'a', 'b', 'c'
|
|
128
|
+
results = ex.execute
|
|
129
|
+
|
|
130
|
+
assert_equal 0, results.size #TODO : Shall be a test with success
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_do_with_example_check_parse_expected_result
|
|
134
|
+
ex = DoWithExample.new "BankFixtureConversion"
|
|
135
|
+
ex.add_check "that_balance_is", 0, '0.0', '123'
|
|
136
|
+
results = ex.execute
|
|
137
|
+
assert_check_results results, 1, 0, :success
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def test_missing_method_in_do_with_should_not_return_address_in_error
|
|
141
|
+
ex = DoWithExample.new "Object"
|
|
142
|
+
ex.add_function_call 'toto', 0
|
|
143
|
+
results = ex.execute
|
|
144
|
+
|
|
145
|
+
result = assert_check_results results, 1, 0, :error
|
|
146
|
+
assert_equal "Cannot find method toto on fixture Object.", result.exception.to_s
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
date: April 18, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'test/fixtures/fixture.rb'
|
|
8
|
+
require 'greenpepper/example/examplewithfixture'
|
|
9
|
+
|
|
10
|
+
include GreenPepper
|
|
11
|
+
|
|
12
|
+
class ExampleTest < Test::Unit::TestCase
|
|
13
|
+
class MockExampleRaisesError < ExampleWithFixture
|
|
14
|
+
def initialize
|
|
15
|
+
super "EmptyMockFixture"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def do_execute
|
|
19
|
+
raise "error"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_example_with_fixture_exception_handling
|
|
24
|
+
ex = MockExampleRaisesError.new
|
|
25
|
+
results = ex.execute
|
|
26
|
+
assert results.errors != 0
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
|
3
|
+
date: September 13, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'test/helper/assert.rb'
|
|
8
|
+
require 'greenpepper/freetext'
|
|
9
|
+
require 'greenpepper/example/freetextexample'
|
|
10
|
+
|
|
11
|
+
include GreenPepper
|
|
12
|
+
|
|
13
|
+
class FreeTextExampleTest < Test::Unit::TestCase
|
|
14
|
+
def setup
|
|
15
|
+
@example = FreeTextExample.new "FreeTextFixture1"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_free_text_example_successful_boolean_result
|
|
19
|
+
@example.add_action "success"
|
|
20
|
+
results = @example.execute
|
|
21
|
+
|
|
22
|
+
assert results[1].success?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_free_text_example_unsuccessful_boolean_result
|
|
26
|
+
@example.add_action "failure"
|
|
27
|
+
results = @example.execute
|
|
28
|
+
|
|
29
|
+
assert results[1].failure?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_free_text_example_unmapable_action
|
|
33
|
+
@example.add_action "unkown"
|
|
34
|
+
results = @example.execute
|
|
35
|
+
assert results[1].exception.is_a?(GreenPepperUnknownActionError)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_free_text_example_action_return_object_should_fail
|
|
39
|
+
@example.add_action "return some object"
|
|
40
|
+
results = @example.execute
|
|
41
|
+
|
|
42
|
+
assert results[1].failure?
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_free_text_example_should_be_able_to_execute_a_list_of_actions
|
|
46
|
+
@example.add_action "success"
|
|
47
|
+
@example.add_action "failure"
|
|
48
|
+
results = @example.execute
|
|
49
|
+
|
|
50
|
+
assert results[1].success?
|
|
51
|
+
assert results[2].failure?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_free_text_example_should_execute_action_in_order
|
|
55
|
+
example = FreeTextExample.new "FreeTextFixtureCheckOrder"
|
|
56
|
+
example.add_action "action1"
|
|
57
|
+
example.add_action "action2"
|
|
58
|
+
results = example.execute
|
|
59
|
+
|
|
60
|
+
assert results[1].success?
|
|
61
|
+
assert results[2].success?
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_free_text_fixture_not_found
|
|
65
|
+
example = FreeTextExample.new "Inexisting Fixture"
|
|
66
|
+
results = example.execute
|
|
67
|
+
|
|
68
|
+
assert results[0].error?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_free_text_should_match_regex_in_correct_fixture
|
|
72
|
+
example1 = FreeTextExample.new "FreeTextFixtureSame1"
|
|
73
|
+
example2 = FreeTextExample.new "FreeTextFixtureSame2"
|
|
74
|
+
example1.add_action "success once"
|
|
75
|
+
example2.add_action "success once"
|
|
76
|
+
|
|
77
|
+
stats1 = example1.execute
|
|
78
|
+
stats2 = example2.execute
|
|
79
|
+
|
|
80
|
+
assert_equal 1, stats1.successes
|
|
81
|
+
assert_equal 1, stats2.successes
|
|
82
|
+
assert_equal 0, stats1.failures
|
|
83
|
+
assert_equal 0, stats2.failures
|
|
84
|
+
assert_equal 0, stats1.errors
|
|
85
|
+
assert_equal 0, stats2.errors
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class FreeTextFixture1
|
|
90
|
+
include FreeText
|
|
91
|
+
|
|
92
|
+
Check /success/ do
|
|
93
|
+
true
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
Check /failure/ do
|
|
97
|
+
false
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
Check /return some object/ do
|
|
101
|
+
Object.new
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
class FreeTextFixtureSame1
|
|
106
|
+
include FreeText
|
|
107
|
+
@@first = true
|
|
108
|
+
|
|
109
|
+
Check /^success once$/ do
|
|
110
|
+
ret = false
|
|
111
|
+
if @@first
|
|
112
|
+
@@first = false
|
|
113
|
+
ret = true
|
|
114
|
+
end
|
|
115
|
+
ret
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
class FreeTextFixtureSame2
|
|
120
|
+
include FreeText
|
|
121
|
+
@@first = true
|
|
122
|
+
|
|
123
|
+
Check /^success once$/ do
|
|
124
|
+
ret = false
|
|
125
|
+
if @@first
|
|
126
|
+
@@first = false
|
|
127
|
+
ret = true
|
|
128
|
+
end
|
|
129
|
+
ret
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
class FreeTextFixtureCheckOrder
|
|
134
|
+
include FreeText
|
|
135
|
+
|
|
136
|
+
def initialize
|
|
137
|
+
@count = 0
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
Check /action1/ do
|
|
141
|
+
@count += 1
|
|
142
|
+
raise "Bad order" unless 1 == @count
|
|
143
|
+
true
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
Check /action2/ do
|
|
147
|
+
@count += 1
|
|
148
|
+
raise "Bad order" unless 2 == @count
|
|
149
|
+
true
|
|
150
|
+
end
|
|
151
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Pascal Ouellet (pas.ouellet@gmail.com)
|
|
3
|
+
date : March 6, 09
|
|
4
|
+
=end
|
|
5
|
+
require 'test/helper/assertion'
|
|
6
|
+
require 'test/helper/assert'
|
|
7
|
+
require 'greenpepper/parser/table'
|
|
8
|
+
require 'greenpepper/example/importexample'
|
|
9
|
+
require 'greenpepper/factory/importexamplefactory'
|
|
10
|
+
require 'greenpepper/core'
|
|
11
|
+
|
|
12
|
+
include GreenPepper
|
|
13
|
+
|
|
14
|
+
class ImportExampleTest < Test::Unit::TestCase
|
|
15
|
+
|
|
16
|
+
def setup
|
|
17
|
+
@simple_table = ['import', 'test/common/importtestfixture']
|
|
18
|
+
@simple_example = ImportExample.new
|
|
19
|
+
@simple_example.add *@simple_table[1..-1]
|
|
20
|
+
|
|
21
|
+
@complex_table = ['Import',
|
|
22
|
+
'test/fixtures/importtestfixture',
|
|
23
|
+
'test/fixtures/importtestfixture2']
|
|
24
|
+
@complex_example = ImportExample.new
|
|
25
|
+
@complex_example.add *@complex_table[1..-1]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@example_with_errors = ImportExample.new
|
|
29
|
+
@example_with_errors.add 'test/fixtures/importtestfixture',
|
|
30
|
+
'somethingthatdontexist',
|
|
31
|
+
'test/fixtures/importtestfixture2',
|
|
32
|
+
'unknownimport'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_import_example_should_contain_imported_module
|
|
36
|
+
assert_equal @complex_table[1], @complex_example.imports[0]
|
|
37
|
+
assert_equal @complex_table[2], @complex_example.imports[1]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_import_example_should_load_modules_when_executed
|
|
41
|
+
assert_raise(NameError) {NonExistingFixture.new}
|
|
42
|
+
|
|
43
|
+
@complex_example.execute
|
|
44
|
+
|
|
45
|
+
assert_nothing_raised {
|
|
46
|
+
fixture = ImportTestFixture.new
|
|
47
|
+
fixture.test
|
|
48
|
+
fixture = ImportTestFixture2.new
|
|
49
|
+
fixture.test
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_execute_should_raise_significant_exception_if_not_found
|
|
54
|
+
expected_message = "Failed to import test/common/someunknownimport: no such file to load -- test/common/someunknownimport"
|
|
55
|
+
|
|
56
|
+
import = ImportExample.new
|
|
57
|
+
import.add 'test/common/someunknownimport'
|
|
58
|
+
results = import.execute
|
|
59
|
+
|
|
60
|
+
assert_equal expected_message, results.at(1,0).exception.message
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_results_should_not_be_collected_for_import_failures
|
|
64
|
+
results = @example_with_errors.execute
|
|
65
|
+
|
|
66
|
+
assert_equal 0, results.errors
|
|
67
|
+
assert_equal 0, results.successes
|
|
68
|
+
assert_equal 0, results.failures
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_results_should_reflect_execution_of_import
|
|
72
|
+
results = @example_with_errors.execute
|
|
73
|
+
|
|
74
|
+
assert results.at(1, 0).is_a?(NoExampleResult)
|
|
75
|
+
assert results.at(2, 0).is_a?(ErrorExampleResult)
|
|
76
|
+
assert results.at(3, 0).is_a?(NoExampleResult)
|
|
77
|
+
assert results.at(4, 0).is_a?(ErrorExampleResult)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
=begin
|
|
2
|
+
author: Sebastien Boisclair (SebBoisclair@gmail.com)
|
|
3
|
+
date: Februrary 24, 2009
|
|
4
|
+
=end
|
|
5
|
+
|
|
6
|
+
require 'test/unit'
|
|
7
|
+
require 'greenpepper/example/nameresolver'
|
|
8
|
+
require 'test/fixtures/fixture.rb'
|
|
9
|
+
|
|
10
|
+
include GreenPepper
|
|
11
|
+
|
|
12
|
+
class NameResolverTest < Test::Unit::TestCase
|
|
13
|
+
def test_fixture_name_resolver_with_space_and_downcase_only
|
|
14
|
+
fixture_class = NameResolver.solve_fixture_name "Rule for example equality lowercase"
|
|
15
|
+
assert_equal 'Ruleforexampleequalitylowercasefixture', fixture_class.name
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_fixture_name_resolver_name_with_space_and_fixture_class_with_underscore
|
|
19
|
+
fixture_class = NameResolver.solve_fixture_name "Ruleforexample equality underscore"
|
|
20
|
+
assert_equal 'Ruleforexample_equality_underscore_fixture', fixture_class.name
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_fixture_name_resolver_name_in_camel_case
|
|
24
|
+
fixture_class = NameResolver.solve_fixture_name "RuleforexampleEqualityUnderscore"
|
|
25
|
+
assert_equal 'Ruleforexample_equality_underscore_fixture', fixture_class.name
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_fixture_name_resolver_name_with_example_and_underscore_and_fixture_not_in_the_name
|
|
29
|
+
fixture_class = NameResolver.solve_fixture_name "RuleFor_example_Without_the f word"
|
|
30
|
+
assert_equal 'RuleFor_example_without_the_f_word', fixture_class.name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_fixture_name_resolver_name_with_accents
|
|
34
|
+
fixture_class = NameResolver.solve_fixture_name "RuleFor éxample Without the f word"
|
|
35
|
+
assert_equal 'RuleFor_example_without_the_f_word', fixture_class.name
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_fixture_name_resolver_name_with_illegal_caracters_removed
|
|
39
|
+
fixture_class = NameResolver.solve_fixture_name "RuleFor example Without the f word.,'\"&"
|
|
40
|
+
assert_equal 'RuleFor_example_without_the_f_word', fixture_class.name
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_for_example_with_name_of_the_column_in_natural_language
|
|
44
|
+
assert_equal "sum_with_space", NameResolver.format_column_name( "sum With spaCe")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_exception_should_be_raised_when_accessor_missing_in_fixture
|
|
48
|
+
fixture_class = NameResolver.solve_fixture_name "RuleFor_example_without_accessor_to_header"
|
|
49
|
+
assert_raise(GreenPepperMissingMethodError) {
|
|
50
|
+
NameResolver.set_instance_field(fixture_class, "h1", "field value")
|
|
51
|
+
}
|
|
52
|
+
assert_raise(GreenPepperMissingMethodError) {
|
|
53
|
+
NameResolver.get_instance_field(fixture_class, "h1")
|
|
54
|
+
}
|
|
55
|
+
end
|
|
56
|
+
end
|