greenpepper-ruby 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. data/bin/greenpepperize +71 -0
  2. data/bin/greenpepperrails +33 -0
  3. data/bin/greenpepperruby +15 -0
  4. data/data/greenpepper.rake +37 -0
  5. data/data/helper.rb +32 -0
  6. data/data/tags +6 -0
  7. data/lib/greenpepper/argumentparser.rb +161 -0
  8. data/lib/greenpepper/common/loadpath.rb +7 -0
  9. data/lib/greenpepper/context/htmlcontext.rb +26 -0
  10. data/lib/greenpepper/converter.rb +347 -0
  11. data/lib/greenpepper/core.rb +152 -0
  12. data/lib/greenpepper/example/collectionexample.rb +305 -0
  13. data/lib/greenpepper/example/dowithexample.rb +192 -0
  14. data/lib/greenpepper/example/exampleheader.rb +41 -0
  15. data/lib/greenpepper/example/examplewithfixture.rb +73 -0
  16. data/lib/greenpepper/example/executionresults.rb +160 -0
  17. data/lib/greenpepper/example/fieldaccessor.rb +36 -0
  18. data/lib/greenpepper/example/freetextexample.rb +51 -0
  19. data/lib/greenpepper/example/importexample.rb +39 -0
  20. data/lib/greenpepper/example/nameresolver.rb +69 -0
  21. data/lib/greenpepper/example/ruleforexample.rb +117 -0
  22. data/lib/greenpepper/example/setupexample.rb +79 -0
  23. data/lib/greenpepper/example/silentexample.rb +14 -0
  24. data/lib/greenpepper/example/unknownexample.rb +17 -0
  25. data/lib/greenpepper/exception/greenpepperexception.rb +57 -0
  26. data/lib/greenpepper/executionunit.rb +39 -0
  27. data/lib/greenpepper/factory/collectionexamplefactory.rb +59 -0
  28. data/lib/greenpepper/factory/dowithexamplefactory.rb +71 -0
  29. data/lib/greenpepper/factory/examplefactory.rb +14 -0
  30. data/lib/greenpepper/factory/freetextexamplefactory.rb +29 -0
  31. data/lib/greenpepper/factory/htmlexamplefactory.rb +49 -0
  32. data/lib/greenpepper/factory/importexamplefactory.rb +27 -0
  33. data/lib/greenpepper/factory/ruleforexamplefactory.rb +46 -0
  34. data/lib/greenpepper/factory/setupexamplefactory.rb +31 -0
  35. data/lib/greenpepper/factory/silentexamplefactory.rb +21 -0
  36. data/lib/greenpepper/factory/unknownexamplefactory.rb +16 -0
  37. data/lib/greenpepper/freetext.rb +164 -0
  38. data/lib/greenpepper/grammar/array.treetop +51 -0
  39. data/lib/greenpepper/grammar/arrayparser.rb +14 -0
  40. data/lib/greenpepper/greenpepperconfig.rb +19 -0
  41. data/lib/greenpepper/greenpeppertask.rb +60 -0
  42. data/lib/greenpepper/logger.rb +45 -0
  43. data/lib/greenpepper/parser/freetextparser.rb +96 -0
  44. data/lib/greenpepper/parser/htmlparser.rb +70 -0
  45. data/lib/greenpepper/parser/scenario.rb +25 -0
  46. data/lib/greenpepper/parser/table.rb +37 -0
  47. data/lib/greenpepper/parser/wikiparser.rb +26 -0
  48. data/lib/greenpepper/pass/freetextpass.rb +24 -0
  49. data/lib/greenpepper/pass/greenpepperpass.rb +92 -0
  50. data/lib/greenpepper/pass/tablepass.rb +38 -0
  51. data/lib/greenpepper/railsargumentparser.rb +46 -0
  52. data/lib/greenpepper/redpeppertask.rb +89 -0
  53. data/lib/greenpepper/repository/atlassianrepository.rb +100 -0
  54. data/lib/greenpepper/writer/consolewriter.rb +21 -0
  55. data/lib/greenpepper/writer/freetextresult.rb +233 -0
  56. data/lib/greenpepper/writer/freetextwriter.rb +44 -0
  57. data/lib/greenpepper/writer/html.rb +14 -0
  58. data/lib/greenpepper/writer/htmldocwriter.rb +82 -0
  59. data/lib/greenpepper/writer/htmlresult.rb +192 -0
  60. data/lib/greenpepper/writer/htmlwriter.rb +112 -0
  61. data/lib/greenpepper/writer/output.rb +26 -0
  62. data/lib/greenpepper/writer/result.rb +35 -0
  63. data/lib/greenpepper/writer/xmlwriter.rb +32 -0
  64. data/test/coreseedstest.rb +39 -0
  65. data/test/greenpepper/argumentparsertest.rb +162 -0
  66. data/test/greenpepper/common/loadpathtest.rb +24 -0
  67. data/test/greenpepper/common/stattest.rb +186 -0
  68. data/test/greenpepper/convertertest.rb +371 -0
  69. data/test/greenpepper/coretest.rb +159 -0
  70. data/test/greenpepper/example/collectionexampletest.rb +484 -0
  71. data/test/greenpepper/example/dowithexampletest.rb +148 -0
  72. data/test/greenpepper/example/exampletest.rb +28 -0
  73. data/test/greenpepper/example/freetextexampletest.rb +151 -0
  74. data/test/greenpepper/example/importexampletest.rb +79 -0
  75. data/test/greenpepper/example/nameresolvertest.rb +56 -0
  76. data/test/greenpepper/example/ruleforexampletest.rb +225 -0
  77. data/test/greenpepper/example/setupexampletest.rb +140 -0
  78. data/test/greenpepper/example/silentexampletest.rb +17 -0
  79. data/test/greenpepper/example/unknownexampletest.rb +17 -0
  80. data/test/greenpepper/factory/collectionexamplefactorytest.rb +51 -0
  81. data/test/greenpepper/factory/dowithexamplefactorytest.rb +48 -0
  82. data/test/greenpepper/factory/examplefactorytest.rb +88 -0
  83. data/test/greenpepper/factory/freetextexamplefactorytest.rb +54 -0
  84. data/test/greenpepper/factory/importexamplefactorytest.rb +40 -0
  85. data/test/greenpepper/factory/ruleforexamplefactorytest.rb +55 -0
  86. data/test/greenpepper/factory/setupexamplefactorytest.rb +29 -0
  87. data/test/greenpepper/factory/silentexamplefactorytest.rb +38 -0
  88. data/test/greenpepper/freetexttest.rb +222 -0
  89. data/test/greenpepper/grammar/arrayparsertest.rb +45 -0
  90. data/test/greenpepper/loggertest.rb +26 -0
  91. data/test/greenpepper/parser/freetextparsertest.rb +124 -0
  92. data/test/greenpepper/parser/htmlparsertest.rb +77 -0
  93. data/test/greenpepper/parser/wikiparsertest.rb +21 -0
  94. data/test/greenpepper/pass/freetextpasstest.rb +54 -0
  95. data/test/greenpepper/pass/greenpepperpasstest.rb +47 -0
  96. data/test/greenpepper/pass/tablepasstest.rb +23 -0
  97. data/test/greenpepper/repository/atlassionrepositorytest.rb +85 -0
  98. data/test/greenpepper/writer/freetextwritertest.rb +301 -0
  99. data/test/greenpepper/writer/htmlcollectionwritertest.rb +145 -0
  100. data/test/greenpepper/writer/htmldowithwritertest.rb +87 -0
  101. data/test/greenpepper/writer/htmlruleforwritertest.rb +147 -0
  102. data/test/greenpepper/writer/htmlsetupwritertest.rb +107 -0
  103. data/test/greenpepper/writer/htmlstatresulttest.rb +118 -0
  104. data/test/greenpepper/writer/htmlwriterpositiontest.rb +53 -0
  105. data/test/greenpepper/writer/writertest.rb +33 -0
  106. data/test/greenpepper/writer/xmlwritertest.rb +34 -0
  107. data/test/integration/collectionexampleintegrationtest.rb +64 -0
  108. data/test/integration/errorhandlingintegrationtest.rb +68 -0
  109. data/test/integration/freetextexampleintegrationtest.rb +75 -0
  110. data/test/integration/greenpepperexecutableintegrationtest.rb +22 -0
  111. data/test/integration/importexampleintegrationtest.rb +41 -0
  112. data/test/integration/interpretationordertest.rb +48 -0
  113. data/test/integration/ruleforexampleintegrationtest.rb +102 -0
  114. data/test/integration/securityintegrationtest.rb +30 -0
  115. data/test/integration/setupexampleintegrationtest.rb +31 -0
  116. data/test/integration/silentexampleintegrationtest.rb +29 -0
  117. data/test/task/greenpeppertasktest.rb +96 -0
  118. data/test/task/redpeppertasktest.rb +120 -0
  119. data/vendor/accents.rb +85 -0
  120. metadata +234 -0
@@ -0,0 +1,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