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,45 @@
|
|
1
|
+
=begin
|
2
|
+
author: Edouard Murat (edouardmurat1@gmail.com)
|
3
|
+
date: March 23, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'greenpepper/converter'
|
8
|
+
require 'greenpepper/example/ruleforexample'
|
9
|
+
require 'date'
|
10
|
+
require 'test/fixtures/fixture'
|
11
|
+
|
12
|
+
include GreenPepper
|
13
|
+
|
14
|
+
class ArrayParserTest < Test::Unit::TestCase
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@parser = ArrayGrammarParser.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_array_treetop_parser
|
21
|
+
assert_parse_array [], "[]"
|
22
|
+
|
23
|
+
assert_parse_array ["1"], "[1]"
|
24
|
+
assert_parse_array ["'1'"], "['1']"
|
25
|
+
assert_parse_array ['"1"'], '["1"]'
|
26
|
+
|
27
|
+
assert_parse_array ["'1'", "'2'"], "['1','2']"
|
28
|
+
assert_parse_array ["'1'", "a"], "['1',a]"
|
29
|
+
assert_parse_array ["1", "2"], "[1,2,]"
|
30
|
+
assert_parse_array ["1", "2", "'test'"], "[1, 2, 'test']"
|
31
|
+
assert_parse_array ["'1,00$'", "a", "\"texte,virgule\""], "['1,00$',a,\"texte,virgule\"]"
|
32
|
+
assert_parse_array ["'1,00$'", "a", "\"texte,virgule\""], "'1,00$',a,\"texte,virgule\""
|
33
|
+
assert_parse_array ["1", "5.0", "yes","blank","nothing","2009-03-04 03:32Z","\"test,comma\""], "[1,5.0,yes,blank,nothing,2009-03-04 03:32Z,\"test,comma\"]"
|
34
|
+
|
35
|
+
assert_parse_array ["1", "2", "'test'"], "[1, 2, 'test']\t"
|
36
|
+
assert_parse_array ["1", "2", "'test'"], "1, 2, 'test'\t"
|
37
|
+
|
38
|
+
assert_parse_array ["','", "','"], "[',',',']"
|
39
|
+
assert_parse_array ['","', '","'], '[",",","]'
|
40
|
+
end
|
41
|
+
|
42
|
+
def assert_parse_array expected, input_array
|
43
|
+
assert_equal expected, @parser.parse(input_array).text
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
=begin
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
Date: April 2, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'greenpepper/logger'
|
8
|
+
|
9
|
+
include GreenPepper
|
10
|
+
|
11
|
+
class LoggerTest < Test::Unit::TestCase
|
12
|
+
def setup
|
13
|
+
@logger = Logger.new(STDOUT)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_logger_message
|
17
|
+
@logger.log 'test'
|
18
|
+
@logger.close
|
19
|
+
|
20
|
+
s = ""
|
21
|
+
log_file = @logger.get_log_path
|
22
|
+
File.open(log_file, 'r'){|f| s = f.read}
|
23
|
+
|
24
|
+
assert_equal "test\n", s[-5..-1]
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
=begin
|
2
|
+
author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
date: October 3, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
|
8
|
+
require 'greenpepper/parser/freetextparser'
|
9
|
+
require 'greenpepper/exception/greenpepperexception'
|
10
|
+
|
11
|
+
include GreenPepper
|
12
|
+
|
13
|
+
class FreeTextParserTest < Test::Unit::TestCase
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@parser = FreeTextParser.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_can_extract_scenario_from_pre
|
20
|
+
scenario =
|
21
|
+
<<EOF
|
22
|
+
<pre class="greenpepper-freetext">
|
23
|
+
Scenario: TestScenario1
|
24
|
+
Line 1.
|
25
|
+
Line 2.
|
26
|
+
</pre>
|
27
|
+
EOF
|
28
|
+
|
29
|
+
scenarios = @parser.extract_content scenario
|
30
|
+
|
31
|
+
assert_scenario1(scenarios)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_can_extract_scenario_from_pre_with_junk_around_pre_tag
|
35
|
+
scenario =
|
36
|
+
<<EOF
|
37
|
+
Some unrelated text <br/>
|
38
|
+
|
39
|
+
<pre class="greenpepper-freetext">
|
40
|
+
Scenario: TestScenario1
|
41
|
+
Line 1.
|
42
|
+
Line 2.
|
43
|
+
</pre>
|
44
|
+
Some unrelated text <br/>
|
45
|
+
Some unrelated text <br/>
|
46
|
+
EOF
|
47
|
+
|
48
|
+
|
49
|
+
scenarios = @parser.extract_content scenario
|
50
|
+
assert_scenario1(scenarios)
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_scenario_outside_of_pre_arent_detected
|
54
|
+
scenario =
|
55
|
+
<<EOF
|
56
|
+
Scenario: TestScenario1
|
57
|
+
Line 1.
|
58
|
+
Line 2.
|
59
|
+
EOF
|
60
|
+
|
61
|
+
scenarios = @parser.extract_content scenario
|
62
|
+
assert_equal 0, scenarios.size
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_can_extract_multiple_scenarios
|
66
|
+
scenario =
|
67
|
+
<<EOF
|
68
|
+
Some unrelated text <br/>
|
69
|
+
|
70
|
+
<pre class="greenpepper-freetext">
|
71
|
+
Scenario: TestScenario1
|
72
|
+
Line 1.
|
73
|
+
Line 2.
|
74
|
+
</pre>
|
75
|
+
|
76
|
+
Some unrelated text <br/>
|
77
|
+
|
78
|
+
<pre class="greenpepper-freetext">
|
79
|
+
Scenario: TestScenario2
|
80
|
+
Line 3.
|
81
|
+
Line 4.
|
82
|
+
</pre>
|
83
|
+
Some unrelated text <br/>
|
84
|
+
EOF
|
85
|
+
|
86
|
+
scenarios = @parser.extract_content scenario
|
87
|
+
|
88
|
+
assert_equal 2, scenarios.size
|
89
|
+
|
90
|
+
assert_scenario1(scenarios)
|
91
|
+
assert_scenario2(scenarios)
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_pre_with_freetext_class_raises_an_exception_if_no_scenario_is_found
|
95
|
+
scenario =
|
96
|
+
<<EOF
|
97
|
+
<pre class="greenpepper-freetext">
|
98
|
+
Text random
|
99
|
+
</pre>
|
100
|
+
EOF
|
101
|
+
assert_raise(GreenPepperNoScenarioInTag) {
|
102
|
+
@parser.extract_content scenario
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
def assert_scenario1(scenarios)
|
108
|
+
assert scenarios.is_a?(Array)
|
109
|
+
scenario = scenarios[0].content
|
110
|
+
assert scenario.is_a?(Scenario)
|
111
|
+
assert_equal "TestScenario1", scenario.fixture_name
|
112
|
+
assert_equal "Line 1.", scenario.lines[0]
|
113
|
+
assert_equal "Line 2.", scenario.lines[1]
|
114
|
+
end
|
115
|
+
|
116
|
+
def assert_scenario2(scenarios)
|
117
|
+
assert scenarios.is_a?(Array)
|
118
|
+
scenario = scenarios[1].content
|
119
|
+
assert scenario.is_a?(Scenario)
|
120
|
+
assert_equal "TestScenario2", scenario.fixture_name
|
121
|
+
assert_equal "Line 3.", scenario.lines[0]
|
122
|
+
assert_equal "Line 4.", scenario.lines[1]
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
=begin
|
2
|
+
author: Pascal Ouellet (pas.ouellet@gmail.com)
|
3
|
+
date : March 6, 09
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'libxml'
|
8
|
+
require 'test/unit'
|
9
|
+
require 'greenpepper/parser/htmlparser'
|
10
|
+
require 'greenpepper/factory/ruleforexamplefactory'
|
11
|
+
require 'greenpepper/factory/importexamplefactory'
|
12
|
+
require 'greenpepper/factory/dowithexamplefactory'
|
13
|
+
require 'greenpepper/exception/greenpepperexception'
|
14
|
+
require 'test/fixtures/fixture'
|
15
|
+
|
16
|
+
include GreenPepper
|
17
|
+
|
18
|
+
class HtmlParserTest < Test::Unit::TestCase
|
19
|
+
|
20
|
+
def setup
|
21
|
+
@parser = HtmlParser.new
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_html_table_parser_returns_table_with_right_values
|
25
|
+
base_html = "<table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
26
|
+
node = (LibXML::XML::Parser.string base_html).parse
|
27
|
+
table_parser = HtmlTableParser.new
|
28
|
+
table = table_parser.parse node
|
29
|
+
|
30
|
+
table.each_row{|row|
|
31
|
+
assert_equal "1", row[0]
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_extract_tables_returns_the_right_numbers_of_tables
|
36
|
+
base_html = "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
37
|
+
base_html += "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
38
|
+
base_html += "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
39
|
+
node = (LibXML::XML::Parser.string base_html).parse
|
40
|
+
|
41
|
+
tables = @parser.extract_tables node
|
42
|
+
|
43
|
+
assert_equal 3, tables.size
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_parse_text_returns_exception_when_text_not_standard
|
47
|
+
base_html = "<BadTag>"
|
48
|
+
|
49
|
+
assert_raise GreenPepperLibXmlError do
|
50
|
+
@parser.extract_content base_html
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_parse_text_returns_array_of_tables_in_text
|
55
|
+
base_html = "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
56
|
+
base_html += "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
57
|
+
base_html += "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
58
|
+
|
59
|
+
tables = @parser.extract_content base_html
|
60
|
+
|
61
|
+
assert_equal 3, tables.size
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_parse_file_returns_array_of_tables_in_file
|
65
|
+
File.open("anything", "w") { |f|
|
66
|
+
f.write "<body><table><tr><td>1</td></tr><tr><td>1</td></tr></table>"
|
67
|
+
f.write "<table><tr><td>2</td></tr><tr><td>2</td></tr></table>"
|
68
|
+
f.write "<table><tr><td>3</td></tr><tr><td>3</td></tr></table></body>"
|
69
|
+
}
|
70
|
+
|
71
|
+
tables = @parser.parse_file "anything"
|
72
|
+
File.delete "anything"
|
73
|
+
|
74
|
+
assert_equal 3, tables.size
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
=begin
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
Date: April 12, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'greenpepper/parser/wikiparser'
|
8
|
+
|
9
|
+
include GreenPepper
|
10
|
+
|
11
|
+
class WikiMarkupParserTest < Test::Unit::TestCase
|
12
|
+
def test_wiki_markup_table_parsing
|
13
|
+
expected = Table.new
|
14
|
+
expected.push_row ["1", "2"]
|
15
|
+
expected.push_row ["3", "4"]
|
16
|
+
|
17
|
+
parser = WikiTableParser.new
|
18
|
+
res = parser.parse("|1|2|\n|3|4|")
|
19
|
+
assert_equal expected, res
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
=begin
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
Date: October 5, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'test/helper/assert'
|
8
|
+
require 'greenpepper/freetext'
|
9
|
+
require 'greenpepper/pass/freetextpass'
|
10
|
+
|
11
|
+
include GreenPepper
|
12
|
+
|
13
|
+
class FreeTextPassTest < Test::Unit::TestCase
|
14
|
+
def test_free_text_pass_should_generate_correct_result
|
15
|
+
input = File.open('test/seeds/freetextpass.html') { |f| f.read }
|
16
|
+
expected = File.open('test/expected/freetextpass.html') { |f| f.read }
|
17
|
+
pass = FreeTextPass.new
|
18
|
+
GreenPepperPass.passes = [pass]
|
19
|
+
stats, output = GreenPepperPass.interpret input
|
20
|
+
assert_html_equal expected, output
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class FreeTextPassTestFixture
|
25
|
+
include FreeText
|
26
|
+
|
27
|
+
Given /This is the first line./ do
|
28
|
+
end
|
29
|
+
|
30
|
+
Check /This is the second line./ do
|
31
|
+
end
|
32
|
+
|
33
|
+
Check /This is the third line./ do
|
34
|
+
end
|
35
|
+
|
36
|
+
Check /This is the fourth line./ do
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class FreeTextPassTest2Fixture
|
41
|
+
include FreeText
|
42
|
+
|
43
|
+
Given /This is the first line./ do
|
44
|
+
end
|
45
|
+
|
46
|
+
Check /This is the second line./ do
|
47
|
+
end
|
48
|
+
|
49
|
+
Check /This is the third line./ do
|
50
|
+
end
|
51
|
+
|
52
|
+
Check /This is the fourth line./ do
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'greenpepper/pass/greenpepperpass'
|
3
|
+
require 'greenpepper/executionunit'
|
4
|
+
require 'greenpepper/writer/htmlwriter'
|
5
|
+
require 'greenpepper/factory/htmlexamplefactory'
|
6
|
+
require 'greenpepper/parser/htmlparser'
|
7
|
+
require 'test/helper/assertion'
|
8
|
+
require 'mocha'
|
9
|
+
|
10
|
+
include GreenPepper
|
11
|
+
|
12
|
+
class GreenPepperPassTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_if_generic_pass_is_executed_in_the_right_order
|
15
|
+
document = "document"
|
16
|
+
|
17
|
+
context1 = ExampleContext.new 1
|
18
|
+
context2 = ExampleContext.new 2
|
19
|
+
execution_units = [];
|
20
|
+
execution_units << ExecutionMock.new("content1", context1)
|
21
|
+
execution_units << ExecutionMock.new("content2", context2)
|
22
|
+
parser = mock()
|
23
|
+
parser.expects(:extract_content).with(document, 'UNKNOWN').returns(execution_units)
|
24
|
+
|
25
|
+
factory = mock()
|
26
|
+
factory.expects(:push_content).with("content1")
|
27
|
+
factory.expects(:push_content).with("content2")
|
28
|
+
factory.expects(:need_more_content?).returns(false).twice
|
29
|
+
factory.expects(:build_example).returns("example").twice
|
30
|
+
|
31
|
+
writer = mock()
|
32
|
+
writer.expects(:support?).with(execution_units[0]).returns(true)
|
33
|
+
writer.expects(:support?).with(execution_units[1]).returns(true)
|
34
|
+
writer.expects(:write).with(document, execution_units, {}).returns("new result")
|
35
|
+
|
36
|
+
pass = GreenPepperPass.new parser, factory, writer
|
37
|
+
GreenPepperPass.passes = [pass]
|
38
|
+
execution_unit, result = GreenPepperPass.interpret(document)
|
39
|
+
assert_equal "new result", result
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class ExecutionMock < ExecutionUnit
|
44
|
+
def execute
|
45
|
+
@result = "result"
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
=begin
|
2
|
+
Author: Simon Mathieu (simon.math@gmail.com)
|
3
|
+
Date: October 5, 2009
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'greenpepper/pass/tablepass'
|
8
|
+
require 'test/helper/assertion'
|
9
|
+
|
10
|
+
include GreenPepper
|
11
|
+
|
12
|
+
class TablePassTest < Test::Unit::TestCase
|
13
|
+
def test_table_formalism_pass_should_generate_correct_result
|
14
|
+
input = File.open('test/seeds/all_features.html') { |f| f.read }
|
15
|
+
expected = File.open('test/expected/all_features.html') { |f| f.read }
|
16
|
+
pass = TablePass.new
|
17
|
+
GreenPepperPass.passes = [pass]
|
18
|
+
results, output = GreenPepperPass.interpret input
|
19
|
+
assert_equal expected, output
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
@@ -0,0 +1,85 @@
|
|
1
|
+
=begin
|
2
|
+
Basic test to see if the integration server works.
|
3
|
+
Author: Eloise Dube (eloise.dube@gmail.com) - Martin Provencher (martin.provencher@usherbrooke.ca)
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'test/helper/assertion'
|
7
|
+
require 'greenpepper/repository/atlassianrepository'
|
8
|
+
|
9
|
+
include GreenPepper
|
10
|
+
|
11
|
+
class ServerIntegrationTest < Test::Unit::TestCase
|
12
|
+
class ServerMock
|
13
|
+
def initialize(data)
|
14
|
+
@data = data
|
15
|
+
end
|
16
|
+
def method_missing(method_name, *args)
|
17
|
+
@data
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_load_document_on_confluence
|
22
|
+
expected = "some text"
|
23
|
+
|
24
|
+
input_filename = "RuleFor?implemented=false"
|
25
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?handler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
26
|
+
|
27
|
+
server = ServerMock.new expected
|
28
|
+
repo = AtlassianRepository.new s, server
|
29
|
+
html_result = repo.load_document input_filename
|
30
|
+
|
31
|
+
assert_equal expected, html_result
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_uri_correctly_parsed
|
35
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?handler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
36
|
+
uri = AtlassianURI.new(s)
|
37
|
+
assert_equal s, uri.uri
|
38
|
+
assert_equal "http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc",
|
39
|
+
uri.url
|
40
|
+
assert_equal "test", uri.space
|
41
|
+
assert_equal "someuser", uri.username
|
42
|
+
assert_equal "somepass", uri.password
|
43
|
+
assert_equal "greenpepper1", uri.handler
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_incorect_uri_should_raise
|
47
|
+
s = "null;http://greenpepper.kicks-ass.org/confluence/rpc/xmlrpc?hadler=greenpepper1&includeStyle=false#test;someuser;somepass"
|
48
|
+
assert_raise(GreenPepperRepositoryError) {
|
49
|
+
AtlassianURI.new(s)
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_unsupported_repository_name
|
54
|
+
assert_raise(GreenPepperRepositoryError){repo = AtlassianRepository.new("")}
|
55
|
+
end
|
56
|
+
|
57
|
+
class ServerFactoryMock
|
58
|
+
def create_server(server_url)
|
59
|
+
raise "Wrong url" if server_url != "url/rpc/xmlrpc"
|
60
|
+
XmlRpcClientMock.new
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class XmlRpcClientMock
|
65
|
+
def proxy(arg)
|
66
|
+
raise "wrong handler" if arg != "handler"
|
67
|
+
XmlRpcProxyMock.new
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class XmlRpcProxyMock
|
72
|
+
def send(method, *args)
|
73
|
+
raise "incorect method" if method != :some_method
|
74
|
+
raise "wrong args" if args[0] != "a" && args.size != 1
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_confluence_server
|
79
|
+
assert_nothing_raised(RuntimeError) {
|
80
|
+
server = Confluence::Server.new("url", "handler",
|
81
|
+
ServerFactoryMock.new)
|
82
|
+
server.some_method('a')
|
83
|
+
}
|
84
|
+
end
|
85
|
+
end
|