greenpepper-ruby 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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