rspec 1.1.12 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. data/.autotest +2 -1
  2. data/.document +7 -0
  3. data/History.txt +58 -0
  4. data/License.txt +1 -1
  5. data/Manifest.txt +45 -82
  6. data/README.txt +3 -6
  7. data/Rakefile +33 -13
  8. data/Ruby1.9.markdown +32 -0
  9. data/TODO.txt +10 -4
  10. data/Upgrade.markdown +63 -0
  11. data/bin/spec +1 -1
  12. data/cucumber.yml +3 -0
  13. data/examples/failing/{failing_autogenerated_docstrings_example.rb → failing_implicit_docstrings_example.rb} +0 -0
  14. data/examples/failing/pending_example.rb +9 -0
  15. data/examples/failing/spec_helper.rb +1 -1
  16. data/examples/passing/{custom_expectation_matchers.rb → custom_matchers.rb} +0 -0
  17. data/examples/passing/filtered_formatter.rb +18 -0
  18. data/examples/passing/filtered_formatter_example.rb +31 -0
  19. data/examples/passing/implicit_docstrings_example.rb +18 -0
  20. data/examples/passing/spec_helper.rb +1 -1
  21. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +17 -18
  22. data/features/before_and_after_blocks/before_and_after_blocks.feature +4 -4
  23. data/features/example_groups/example_group_with_should_methods.feature +1 -1
  24. data/features/example_groups/{autogenerated_docstrings.feature → implicit_docstrings.feature} +7 -9
  25. data/features/example_groups/nested_groups.feature +1 -1
  26. data/features/heckle/heckle.feature +56 -0
  27. data/features/interop/examples_and_tests_together.feature +1 -1
  28. data/features/interop/test_but_not_test_unit.feature +1 -1
  29. data/features/interop/test_case_with_should_methods.feature +1 -1
  30. data/features/matchers/create_matcher.feature +115 -0
  31. data/features/mock_framework_integration/use_flexmock.feature +22 -4
  32. data/features/mock_framework_integration/use_mocha.feature +27 -0
  33. data/features/mock_framework_integration/use_rr.feature +27 -0
  34. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  35. data/features/pending/pending_examples.feature +81 -0
  36. data/features/step_definitions/running_rspec.rb +5 -3
  37. data/features/support/env.rb +1 -1
  38. data/features/support/matchers/smart_match.rb +2 -2
  39. data/lib/autotest/rspec.rb +1 -1
  40. data/lib/spec.rb +1 -1
  41. data/lib/{adapters → spec/adapters}/mock_frameworks/flexmock.rb +0 -0
  42. data/lib/{adapters → spec/adapters}/mock_frameworks/mocha.rb +0 -0
  43. data/lib/{adapters → spec/adapters}/mock_frameworks/rr.rb +0 -0
  44. data/lib/{adapters → spec/adapters}/mock_frameworks/rspec.rb +0 -1
  45. data/lib/spec/autorun.rb +3 -0
  46. data/lib/spec/dsl.rb +3 -1
  47. data/lib/spec/dsl/matchers.rb +13 -0
  48. data/lib/spec/example.rb +4 -0
  49. data/lib/spec/example/before_and_after_hooks.rb +5 -20
  50. data/lib/spec/example/errors.rb +3 -3
  51. data/lib/spec/example/example_description.rb +15 -0
  52. data/lib/spec/example/example_group.rb +0 -15
  53. data/lib/spec/example/example_group_factory.rb +34 -46
  54. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  55. data/lib/spec/example/example_group_methods.rb +101 -211
  56. data/lib/spec/example/example_methods.rb +61 -81
  57. data/lib/spec/example/module_reopening_fix.rb +23 -1
  58. data/lib/spec/example/pending.rb +3 -2
  59. data/lib/spec/example/predicate_matchers.rb +47 -0
  60. data/lib/spec/example/subject.rb +91 -0
  61. data/lib/spec/expectations.rb +1 -1
  62. data/lib/spec/expectations/differs/default.rb +0 -1
  63. data/lib/spec/expectations/extensions.rb +0 -1
  64. data/lib/spec/expectations/handler.rb +13 -6
  65. data/lib/spec/interop/test.rb +5 -0
  66. data/lib/spec/interop/test/unit/testcase.rb +5 -22
  67. data/lib/spec/matchers.rb +22 -8
  68. data/lib/spec/matchers/be.rb +4 -9
  69. data/lib/spec/matchers/be_close.rb +20 -5
  70. data/lib/spec/matchers/be_instance_of.rb +45 -0
  71. data/lib/spec/matchers/be_kind_of.rb +45 -0
  72. data/lib/spec/matchers/change.rb +8 -6
  73. data/lib/spec/matchers/compatibility.rb +14 -0
  74. data/lib/spec/matchers/eql.rb +24 -6
  75. data/lib/spec/matchers/equal.rb +24 -6
  76. data/lib/spec/matchers/exist.rb +21 -5
  77. data/lib/spec/matchers/extensions/instance_exec.rb +25 -0
  78. data/lib/spec/matchers/generated_descriptions.rb +2 -2
  79. data/lib/spec/matchers/has.rb +28 -11
  80. data/lib/spec/matchers/have.rb +2 -2
  81. data/lib/spec/matchers/include.rb +2 -2
  82. data/lib/spec/matchers/match.rb +25 -7
  83. data/lib/spec/matchers/match_array.rb +3 -3
  84. data/lib/spec/matchers/matcher.rb +51 -0
  85. data/lib/spec/matchers/method_missing.rb +2 -2
  86. data/lib/spec/matchers/operator_matcher.rb +12 -5
  87. data/lib/spec/matchers/raise_error.rb +3 -3
  88. data/lib/spec/matchers/respond_to.rb +3 -3
  89. data/lib/spec/matchers/satisfy.rb +7 -7
  90. data/lib/spec/matchers/throw_symbol.rb +3 -5
  91. data/lib/spec/mocks.rb +3 -3
  92. data/lib/spec/mocks/argument_expectation.rb +15 -15
  93. data/lib/spec/mocks/{argument_constraints.rb → argument_matchers.rb} +19 -23
  94. data/lib/spec/mocks/error_generator.rb +5 -8
  95. data/lib/spec/mocks/framework.rb +1 -1
  96. data/lib/spec/mocks/message_expectation.rb +5 -13
  97. data/lib/spec/mocks/mock.rb +4 -5
  98. data/lib/spec/mocks/proxy.rb +9 -5
  99. data/lib/spec/mocks/spec_methods.rb +10 -1
  100. data/lib/spec/rake/spectask.rb +0 -1
  101. data/lib/spec/runner.rb +6 -28
  102. data/lib/spec/runner/configuration.rb +3 -3
  103. data/lib/spec/runner/drb_command_line.rb +2 -1
  104. data/lib/spec/runner/example_group_runner.rb +3 -2
  105. data/lib/spec/runner/formatter/base_text_formatter.rb +34 -19
  106. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +3 -5
  107. data/lib/spec/runner/formatter/html_formatter.rb +2 -3
  108. data/lib/spec/runner/formatter/nested_text_formatter.rb +7 -25
  109. data/lib/spec/runner/formatter/progress_bar_formatter.rb +1 -1
  110. data/lib/spec/runner/formatter/snippet_extractor.rb +1 -1
  111. data/lib/spec/runner/formatter/specdoc_formatter.rb +1 -7
  112. data/lib/spec/runner/heckle_runner.rb +3 -6
  113. data/lib/spec/runner/heckle_runner_unsupported.rb +1 -1
  114. data/lib/spec/runner/option_parser.rb +19 -21
  115. data/lib/spec/runner/options.rb +32 -27
  116. data/lib/spec/runner/reporter.rb +8 -9
  117. data/lib/spec/test/unit.rb +10 -0
  118. data/lib/spec/version.rb +2 -2
  119. data/{features/support → resources}/helpers/cmdline.rb +2 -2
  120. data/resources/rake/verify_rcov.rake +1 -1
  121. data/resources/spec/example_group_with_should_methods.rb +1 -1
  122. data/resources/spec/simple_spec.rb +1 -1
  123. data/resources/test/spec_and_test_together.rb +2 -3
  124. data/resources/test/spec_including_test_but_not_unit.rb +1 -1
  125. data/resources/test/test_case_with_should_methods.rb +2 -3
  126. data/spec/autotest/autotest_helper.rb +0 -1
  127. data/spec/autotest/rspec_spec.rb +95 -98
  128. data/spec/spec/dsl/main_spec.rb +3 -3
  129. data/spec/spec/dsl/matchers_spec.rb +25 -0
  130. data/spec/spec/example/example_group_class_definition_spec.rb +14 -15
  131. data/spec/spec/example/example_group_factory_spec.rb +31 -44
  132. data/spec/spec/example/example_group_methods_spec.rb +86 -52
  133. data/spec/spec/example/example_group_spec.rb +32 -79
  134. data/spec/spec/example/example_matcher_spec.rb +10 -10
  135. data/spec/spec/example/example_methods_spec.rb +108 -242
  136. data/spec/spec/example/nested_example_group_spec.rb +2 -2
  137. data/spec/spec/example/pending_module_spec.rb +66 -41
  138. data/spec/spec/example/shared_example_group_spec.rb +4 -4
  139. data/spec/spec/{matchers → expectations}/handler_spec.rb +52 -4
  140. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +2 -2
  141. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +2 -2
  142. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +2 -2
  143. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +2 -2
  144. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +2 -2
  145. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +2 -2
  146. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +2 -2
  147. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +2 -2
  148. data/spec/spec/interop/test/unit/testcase_spec.rb +0 -4
  149. data/spec/spec/matchers/be_close_spec.rb +1 -1
  150. data/spec/spec/matchers/be_instance_of_spec.rb +29 -0
  151. data/spec/spec/matchers/be_kind_of_spec.rb +29 -0
  152. data/spec/spec/matchers/change_spec.rb +20 -0
  153. data/spec/spec/matchers/compatibility_spec.rb +34 -0
  154. data/spec/spec/matchers/description_generation_spec.rb +0 -12
  155. data/spec/spec/matchers/eql_spec.rb +2 -2
  156. data/spec/spec/matchers/equal_spec.rb +2 -2
  157. data/spec/spec/matchers/exist_spec.rb +8 -4
  158. data/spec/spec/matchers/have_spec.rb +4 -4
  159. data/spec/spec/matchers/match_spec.rb +2 -2
  160. data/spec/spec/matchers/matcher_methods_spec.rb +1 -1
  161. data/spec/spec/matchers/matcher_spec.rb +97 -0
  162. data/spec/spec/matchers/throw_symbol_spec.rb +8 -8
  163. data/spec/spec/mocks/{bug_report_496.rb → bug_report_496_spec.rb} +0 -0
  164. data/spec/spec/mocks/{failing_mock_argument_constraints_spec.rb → failing_argument_matchers_spec.rb} +2 -2
  165. data/spec/spec/mocks/hash_including_matcher_spec.rb +4 -4
  166. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +3 -3
  167. data/spec/spec/mocks/mock_spec.rb +27 -2
  168. data/spec/spec/mocks/nil_expectation_warning_spec.rb +1 -1
  169. data/spec/spec/mocks/partial_mock_spec.rb +18 -3
  170. data/spec/spec/mocks/{passing_mock_argument_constraints_spec.rb → passing_argument_matchers_spec.rb} +6 -6
  171. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +13 -1
  172. data/spec/spec/package/bin_spec_spec.rb +2 -2
  173. data/spec/spec/runner/configuration_spec.rb +12 -12
  174. data/spec/spec/runner/drb_command_line_spec.rb +71 -73
  175. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +82 -1
  176. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +8 -8
  177. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +4 -4
  178. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +8 -8
  179. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +38 -26
  180. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +61 -53
  181. data/spec/spec/runner/formatter/html_formatter_spec.rb +100 -48
  182. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -34
  183. data/spec/spec/runner/formatter/profile_formatter_spec.rb +2 -1
  184. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +9 -6
  185. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
  186. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +20 -20
  187. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +38 -26
  188. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +55 -47
  189. data/spec/spec/runner/formatter/{spec_mate_formatter_spec.rb → text_mate_formatter_spec.rb} +11 -9
  190. data/spec/spec/runner/heckle_runner_spec.rb +1 -1
  191. data/spec/spec/runner/heckler_spec.rb +1 -1
  192. data/spec/spec/runner/option_parser_spec.rb +28 -11
  193. data/spec/spec/runner/options_spec.rb +34 -0
  194. data/spec/spec/runner/reporter_spec.rb +66 -62
  195. data/spec/spec/runner/resources/utf8_encoded.rb +1 -0
  196. data/spec/spec/runner/spec_drb.opts +1 -0
  197. data/spec/spec/runner_spec.rb +7 -5
  198. data/spec/spec_helper.rb +24 -2
  199. metadata +49 -90
  200. data/examples/passing/autogenerated_docstrings_example.rb +0 -25
  201. data/examples/passing/before_and_after_example.rb +0 -40
  202. data/examples/passing/behave_as_example.rb +0 -45
  203. data/examples/passing/legacy_spec.rb +0 -11
  204. data/examples/passing/priority.txt +0 -1
  205. data/features/support/helpers/story_helper.rb +0 -16
  206. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  207. data/lib/spec/runner/formatter/story/html_formatter.rb +0 -174
  208. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +0 -194
  209. data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +0 -42
  210. data/lib/spec/story.rb +0 -10
  211. data/lib/spec/story/extensions.rb +0 -3
  212. data/lib/spec/story/extensions/main.rb +0 -86
  213. data/lib/spec/story/extensions/regexp.rb +0 -9
  214. data/lib/spec/story/extensions/string.rb +0 -9
  215. data/lib/spec/story/given_scenario.rb +0 -14
  216. data/lib/spec/story/runner.rb +0 -57
  217. data/lib/spec/story/runner/plain_text_story_runner.rb +0 -48
  218. data/lib/spec/story/runner/scenario_collector.rb +0 -18
  219. data/lib/spec/story/runner/scenario_runner.rb +0 -54
  220. data/lib/spec/story/runner/story_mediator.rb +0 -137
  221. data/lib/spec/story/runner/story_parser.rb +0 -247
  222. data/lib/spec/story/runner/story_runner.rb +0 -74
  223. data/lib/spec/story/scenario.rb +0 -14
  224. data/lib/spec/story/step.rb +0 -70
  225. data/lib/spec/story/step_group.rb +0 -89
  226. data/lib/spec/story/step_mother.rb +0 -38
  227. data/lib/spec/story/story.rb +0 -39
  228. data/lib/spec/story/world.rb +0 -124
  229. data/resources/spec/spec_with_flexmock.rb +0 -19
  230. data/rspec.gemspec +0 -32
  231. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +0 -24
  232. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +0 -135
  233. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +0 -600
  234. data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +0 -82
  235. data/spec/spec/spec_spec.rb +0 -21
  236. data/spec/spec/story/builders.rb +0 -46
  237. data/spec/spec/story/extensions/main_spec.rb +0 -161
  238. data/spec/spec/story/extensions_spec.rb +0 -14
  239. data/spec/spec/story/given_scenario_spec.rb +0 -27
  240. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +0 -90
  241. data/spec/spec/story/runner/scenario_collector_spec.rb +0 -27
  242. data/spec/spec/story/runner/scenario_runner_spec.rb +0 -214
  243. data/spec/spec/story/runner/story_mediator_spec.rb +0 -143
  244. data/spec/spec/story/runner/story_parser_spec.rb +0 -401
  245. data/spec/spec/story/runner/story_runner_spec.rb +0 -294
  246. data/spec/spec/story/runner_spec.rb +0 -93
  247. data/spec/spec/story/scenario_spec.rb +0 -18
  248. data/spec/spec/story/step_group_spec.rb +0 -157
  249. data/spec/spec/story/step_mother_spec.rb +0 -84
  250. data/spec/spec/story/step_spec.rb +0 -272
  251. data/spec/spec/story/story_helper.rb +0 -2
  252. data/spec/spec/story/story_spec.rb +0 -84
  253. data/spec/spec/story/world_spec.rb +0 -423
  254. data/story_server/prototype/javascripts/builder.js +0 -136
  255. data/story_server/prototype/javascripts/controls.js +0 -972
  256. data/story_server/prototype/javascripts/dragdrop.js +0 -976
  257. data/story_server/prototype/javascripts/effects.js +0 -1117
  258. data/story_server/prototype/javascripts/prototype.js +0 -4140
  259. data/story_server/prototype/javascripts/rspec.js +0 -149
  260. data/story_server/prototype/javascripts/scriptaculous.js +0 -58
  261. data/story_server/prototype/javascripts/slider.js +0 -276
  262. data/story_server/prototype/javascripts/sound.js +0 -55
  263. data/story_server/prototype/javascripts/unittest.js +0 -568
  264. data/story_server/prototype/lib/server.rb +0 -24
  265. data/story_server/prototype/stories.html +0 -176
  266. data/story_server/prototype/stylesheets/rspec.css +0 -136
  267. data/story_server/prototype/stylesheets/test.css +0 -90
@@ -1,294 +0,0 @@
1
- require File.dirname(__FILE__) + '/../story_helper'
2
-
3
- module Spec
4
- module Story
5
- module Runner
6
- describe StoryRunner do
7
- it 'should collect all the stories' do
8
- # given
9
- story_runner = StoryRunner.new(stub('scenario_runner'))
10
-
11
- # when
12
- story_runner.Story 'title1', 'narrative1' do end
13
- story_runner.Story 'title2', 'narrative2' do end
14
- stories = story_runner.stories
15
-
16
- # then
17
- story_runner.should have(2).stories
18
- stories.first.title.should == 'title1'
19
- stories.first.narrative.should == 'narrative1'
20
- stories.last.title.should == 'title2'
21
- stories.last.narrative.should == 'narrative2'
22
- end
23
-
24
- it 'should gather all the scenarios in the stories' do
25
- # given
26
- story_runner = StoryRunner.new(stub('scenario_runner'))
27
-
28
- # when
29
- story_runner.Story "story1", "narrative1" do
30
- Scenario "scenario1" do end
31
- Scenario "scenario2" do end
32
- end
33
- story_runner.Story "story2", "narrative2" do
34
- Scenario "scenario3" do end
35
- end
36
- scenarios = story_runner.scenarios
37
-
38
- # then
39
- story_runner.should have(3).scenarios
40
- scenarios[0].name.should == 'scenario1'
41
- scenarios[1].name.should == 'scenario2'
42
- scenarios[2].name.should == 'scenario3'
43
- end
44
-
45
- # captures worlds passed into a ScenarioRunner
46
- class ScenarioWorldCatcher
47
- attr_accessor :worlds
48
- def run(scenario, world)
49
- (@worlds ||= []) << world
50
- end
51
- end
52
-
53
- it 'should run each scenario in a separate object' do
54
- # given
55
- scenario_world_catcher = ScenarioWorldCatcher.new
56
- story_runner = StoryRunner.new(scenario_world_catcher)
57
- story_runner.Story 'story', 'narrative' do
58
- Scenario 'scenario1' do end
59
- Scenario 'scenario2' do end
60
- end
61
-
62
- # when
63
- story_runner.run_stories
64
-
65
- # then
66
- worlds = scenario_world_catcher.worlds
67
- scenario_world_catcher.should have(2).worlds
68
- worlds[0].should_not == worlds[1]
69
- end
70
-
71
- it "should return false if the scenario runner returns false ever" do
72
- #given
73
- stub_scenario_runner = stub_everything
74
- story_runner = StoryRunner.new(stub_scenario_runner)
75
- story_runner.Story 'story', 'narrative' do
76
- Scenario 'scenario1' do end
77
- Scenario 'scenario2' do end
78
- end
79
-
80
- # expect
81
- stub_scenario_runner.should_receive(:run).once.and_return(false,true)
82
-
83
- # when
84
- success = story_runner.run_stories
85
-
86
- #then
87
- success.should == false
88
- end
89
-
90
- it "should return true if the scenario runner returns true for all scenarios" do
91
- #given
92
- stub_scenario_runner = stub_everything
93
- story_runner = StoryRunner.new(stub_scenario_runner)
94
- story_runner.Story 'story', 'narrative' do
95
- Scenario 'scenario1' do end
96
- Scenario 'scenario2' do end
97
- end
98
-
99
- # expect
100
- stub_scenario_runner.should_receive(:run).once.and_return(true,true)
101
-
102
- # when
103
- success = story_runner.run_stories
104
-
105
- #then
106
- success.should == true
107
- end
108
-
109
- it 'should use the provided world creator to create worlds' do
110
- # given
111
- stub_scenario_runner = stub_everything
112
- mock_world_creator = mock('world creator')
113
- story_runner = StoryRunner.new(stub_scenario_runner, mock_world_creator)
114
- story_runner.Story 'story', 'narrative' do
115
- Scenario 'scenario1' do end
116
- Scenario 'scenario2' do end
117
- end
118
-
119
- # expect
120
- mock_world_creator.should_receive(:create).twice
121
-
122
- # when
123
- story_runner.run_stories
124
-
125
- # then
126
- end
127
-
128
- it 'should notify listeners of the scenario count when the run starts' do
129
- # given
130
- story_runner = StoryRunner.new(stub_everything)
131
- mock_listener1 = stub_everything('listener1')
132
- mock_listener2 = stub_everything('listener2')
133
- story_runner.add_listener(mock_listener1)
134
- story_runner.add_listener(mock_listener2)
135
-
136
- story_runner.Story 'story1', 'narrative1' do
137
- Scenario 'scenario1' do end
138
- end
139
- story_runner.Story 'story2', 'narrative2' do
140
- Scenario 'scenario2' do end
141
- Scenario 'scenario3' do end
142
- end
143
-
144
- # expect
145
- mock_listener1.should_receive(:run_started).with(3)
146
- mock_listener2.should_receive(:run_started).with(3)
147
-
148
- # when
149
- story_runner.run_stories
150
-
151
- # then
152
- end
153
-
154
- it 'should notify listeners when a story starts' do
155
- # given
156
- story_runner = StoryRunner.new(stub_everything)
157
- mock_listener1 = stub_everything('listener1')
158
- mock_listener2 = stub_everything('listener2')
159
- story_runner.add_listener(mock_listener1)
160
- story_runner.add_listener(mock_listener2)
161
-
162
- story_runner.Story 'story1', 'narrative1' do
163
- Scenario 'scenario1' do end
164
- end
165
- story_runner.Story 'story2', 'narrative2' do
166
- Scenario 'scenario2' do end
167
- Scenario 'scenario3' do end
168
- end
169
-
170
- # expect
171
- mock_listener1.should_receive(:story_started).with('story1', 'narrative1')
172
- mock_listener1.should_receive(:story_ended).with('story1', 'narrative1')
173
- mock_listener2.should_receive(:story_started).with('story2', 'narrative2')
174
- mock_listener2.should_receive(:story_ended).with('story2', 'narrative2')
175
-
176
- # when
177
- story_runner.run_stories
178
-
179
- # then
180
- end
181
-
182
- it 'should notify listeners when the run ends' do
183
- # given
184
- story_runner = StoryRunner.new(stub_everything)
185
- mock_listener1 = stub_everything('listener1')
186
- mock_listener2 = stub_everything('listener2')
187
- story_runner.add_listener mock_listener1
188
- story_runner.add_listener mock_listener2
189
- story_runner.Story 'story1', 'narrative1' do
190
- Scenario 'scenario1' do end
191
- end
192
-
193
- # expect
194
- mock_listener1.should_receive(:run_ended)
195
- mock_listener2.should_receive(:run_ended)
196
-
197
- # when
198
- story_runner.run_stories
199
-
200
- # then
201
- end
202
-
203
- it 'should run a story in an instance of a specified class' do
204
- # given
205
- scenario_world_catcher = ScenarioWorldCatcher.new
206
- story_runner = StoryRunner.new(scenario_world_catcher)
207
- story_runner.Story 'title', 'narrative', :type => String do
208
- Scenario 'scenario' do end
209
- end
210
-
211
- # when
212
- story_runner.run_stories
213
-
214
- # then
215
- scenario_world_catcher.worlds[0].should be_kind_of(String)
216
- scenario_world_catcher.worlds[0].should be_kind_of(World)
217
- end
218
-
219
- it 'should pass initialization params through to the constructed instance' do
220
- # given
221
- scenario_world_catcher = ScenarioWorldCatcher.new
222
- story_runner = StoryRunner.new(scenario_world_catcher)
223
- story_runner.Story 'title', 'narrative', :type => Array, :args => [3] do
224
- Scenario 'scenario' do end
225
- end
226
-
227
- # when
228
- story_runner.run_stories
229
-
230
- # then
231
- scenario_world_catcher.worlds[0].should be_kind_of(Array)
232
- scenario_world_catcher.worlds[0].size.should == 3
233
- end
234
-
235
- it 'should find a scenario in the current story by name' do
236
- # given
237
- story_runner = StoryRunner.new(ScenarioRunner.new)
238
- scenario = nil
239
-
240
- story_runner.Story 'title', 'narrative' do
241
- Scenario 'first scenario' do
242
- end
243
- Scenario 'second scenario' do
244
- scenario = StoryRunner.scenario_from_current_story 'first scenario'
245
- end
246
- end
247
-
248
- # when
249
- story_runner.run_stories
250
-
251
- # then
252
- scenario.name.should == 'first scenario'
253
- end
254
-
255
- it "should clean the steps between stories" do
256
- #given
257
- story_runner = StoryRunner.new(ScenarioRunner.new)
258
- result = mock 'result'
259
-
260
- step1 = Step.new('step') do
261
- result.one
262
- end
263
- steps1 = StepGroup.new
264
- steps1.add :when, step1
265
-
266
- story_runner.Story 'title', 'narrative', :steps_for => steps1 do
267
- Scenario 'first scenario' do
268
- When 'step'
269
- end
270
- end
271
-
272
- step2 = Step.new('step') do
273
- result.two
274
- end
275
- steps2 = StepGroup.new
276
- steps2.add :when, step2
277
-
278
- story_runner.Story 'title2', 'narrative', :steps_for => steps2 do
279
- Scenario 'second scenario' do
280
- When 'step'
281
- end
282
- end
283
-
284
- #then
285
- result.should_receive(:one)
286
- result.should_receive(:two)
287
-
288
- #when
289
- story_runner.run_stories
290
- end
291
- end
292
- end
293
- end
294
- end
@@ -1,93 +0,0 @@
1
- require File.dirname(__FILE__) + '/story_helper'
2
- require 'spec/runner/formatter/story/plain_text_formatter'
3
- require 'spec/runner/formatter/story/html_formatter'
4
-
5
- module Spec
6
- module Story
7
- describe Runner, "module" do
8
- before(:each) do
9
- @world_creator = World.dup
10
- @runner_module = Runner.dup
11
- @runner_module.instance_eval {@story_runner = nil}
12
- @runner_module.stub!(:register_exit_hook)
13
- end
14
-
15
- def create_options(args=[])
16
- Spec::Runner::OptionParser.parse(args, StringIO.new, StringIO.new)
17
- end
18
-
19
- it 'should wire up a singleton StoryRunner' do
20
- @runner_module.story_runner.should_not be_nil
21
- end
22
-
23
- it 'should set its options based on ARGV' do
24
- # given
25
- @runner_module.should_receive(:run_options).and_return(
26
- create_options(['--dry-run'])
27
- )
28
-
29
- # when
30
- options = @runner_module.run_options
31
-
32
- # then
33
- options.dry_run.should be_true
34
- end
35
-
36
- describe "initialization" do
37
-
38
- before(:each) do
39
- # given
40
- @story_runner = mock('story runner', :null_object => true)
41
- @scenario_runner = mock('scenario runner', :null_object => true)
42
- @world_creator = mock('world', :null_object => true)
43
-
44
- @runner_module.stub!(:world_creator).and_return(@world_creator)
45
- @runner_module.stub!(:create_story_runner).and_return(@story_runner)
46
- @runner_module.stub!(:scenario_runner).and_return(@scenario_runner)
47
- end
48
-
49
- it 'should add a reporter to the runner classes' do
50
- @runner_module.should_receive(:run_options).and_return(
51
- create_options
52
- )
53
-
54
- # expect
55
- @world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
56
- @story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
57
- @scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
58
-
59
- # when
60
- @runner_module.story_runner
61
- end
62
-
63
- it 'should add a documenter to the runner classes if one is specified' do
64
-
65
- @runner_module.should_receive(:run_options).and_return(
66
- create_options(["--format","html"])
67
- )
68
-
69
- # expect
70
- @world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
71
- @story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
72
- @scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
73
-
74
- # when
75
- @runner_module.story_runner
76
- end
77
-
78
- it 'should add any registered listener to the runner classes' do
79
- # given
80
- listener = Object.new
81
-
82
- # expect
83
- @world_creator.should_receive(:add_listener).with(listener)
84
- @story_runner.should_receive(:add_listener).with(listener)
85
- @scenario_runner.should_receive(:add_listener).with(listener)
86
-
87
- # when
88
- @runner_module.register_listener listener
89
- end
90
- end
91
- end
92
- end
93
- end
@@ -1,18 +0,0 @@
1
- require File.dirname(__FILE__) + '/story_helper'
2
-
3
- module Spec
4
- module Story
5
- describe Scenario do
6
- it 'should not raise an error if no body is supplied' do
7
- # given
8
- story = StoryBuilder.new.to_story
9
-
10
- # when
11
- error = exception_from { Scenario.new story, 'name' }
12
-
13
- # then
14
- error.should be_nil
15
- end
16
- end
17
- end
18
- end
@@ -1,157 +0,0 @@
1
- require File.dirname(__FILE__) + '/story_helper'
2
-
3
- module Spec
4
- module Story
5
- describe StepGroup do
6
- before(:each) do
7
- @step_group = StepGroup.new
8
- end
9
-
10
- it "should not find a matcher if empty" do
11
- @step_group.find(:given, "this and that").should be_nil
12
- end
13
-
14
- it "should create a given_scenario matcher" do
15
- step = @step_group.given_scenario("this and that") {}
16
- @step_group.find(:given_scenario, "this and that").should_not be_nil
17
- @step_group.find(:given_scenario, "this and that").should equal(step)
18
- end
19
-
20
- it "should create a given matcher" do
21
- step = @step_group.given("this and that") {}
22
- @step_group.find(:given, "this and that").should equal(step)
23
- end
24
-
25
- it "should create a when matcher" do
26
- step = @step_group.when("this and that") {}
27
- @step_group.find(:when, "this and that").should equal(step)
28
- end
29
-
30
- it "should create a them matcher" do
31
- step = @step_group.then("this and that") {}
32
- @step_group.find(:then, "this and that").should equal(step)
33
- end
34
-
35
- it "should add a matcher object" do
36
- step = Step.new("this and that") {}
37
- @step_group.add(:given, step)
38
- @step_group.find(:given, "this and that").should equal(step)
39
- end
40
-
41
- it "should add it matchers to another StepGroup (with one given)" do
42
- source = StepGroup.new
43
- target = StepGroup.new
44
- step = source.given("this and that") {}
45
- source.add_to target
46
- target.find(:given, "this and that").should equal(step)
47
- end
48
-
49
- it "should add it matchers to another StepGroup (with some of each type)" do
50
- source = StepGroup.new
51
- target = StepGroup.new
52
- given_scenario = source.given_scenario("1") {}
53
- given = source.given("1") {}
54
- when1 = source.when("1") {}
55
- when2 = source.when("2") {}
56
- then1 = source.then("1") {}
57
- then2 = source.then("2") {}
58
- then3 = source.then("3") {}
59
- source.add_to target
60
- target.find(:given_scenario, "1").should equal(given_scenario)
61
- target.find(:given, "1").should equal(given)
62
- target.find(:when, "1").should equal(when1)
63
- target.find(:when, "2").should equal(when2)
64
- target.find(:then, "1").should equal(then1)
65
- target.find(:then, "2").should equal(then2)
66
- target.find(:then, "3").should equal(then3)
67
- end
68
-
69
- it "should append another collection" do
70
- matchers_to_append = StepGroup.new
71
- step = matchers_to_append.given("this and that") {}
72
- @step_group << matchers_to_append
73
- @step_group.find(:given, "this and that").should equal(step)
74
- end
75
-
76
- it "should append several other collections" do
77
- matchers_to_append = StepGroup.new
78
- more_matchers_to_append = StepGroup.new
79
- first_matcher = matchers_to_append.given("this and that") {}
80
- second_matcher = more_matchers_to_append.given("and the other") {}
81
- @step_group << matchers_to_append
82
- @step_group << more_matchers_to_append
83
- @step_group.find(:given, "this and that").should equal(first_matcher)
84
- @step_group.find(:given, "and the other").should equal(second_matcher)
85
- end
86
-
87
- it "should yield itself on initialization" do
88
- begin
89
- $step_group_spec_step = nil
90
- matchers = StepGroup.new do |matchers|
91
- $step_group_spec_step = matchers.given("foo") {}
92
- end
93
- $step_group_spec_step.matches?("foo").should be_true
94
- ensure
95
- $step_group_spec_step = nil
96
- end
97
- end
98
-
99
- it "should support defaults" do
100
- class StepGroupSubclass < StepGroup
101
- steps do |add|
102
- add.given("foo") {}
103
- end
104
- end
105
- StepGroupSubclass.new.find(:given, "foo").should_not be_nil
106
- end
107
-
108
- it "should create a Given" do
109
- sub = Class.new(StepGroup).new
110
- step = sub.Given("foo") {}
111
- sub.find(:given, "foo").should == step
112
- end
113
-
114
- it "should create a When" do
115
- sub = Class.new(StepGroup).new
116
- step = sub.When("foo") {}
117
- sub.find(:when, "foo").should == step
118
- end
119
-
120
- it "should create a Then" do
121
- sub = Class.new(StepGroup).new
122
- step = sub.Then("foo") {}
123
- sub.find(:then, "foo").should == step
124
- end
125
-
126
- it "should create steps in a block" do
127
- sub = Class.new(StepGroup).new do
128
- Given("a given") {}
129
- When("a when") {}
130
- Then("a then") {}
131
- end
132
- sub.find(:given, "a given").should_not be_nil
133
- sub.find(:when, "a when").should_not be_nil
134
- sub.find(:then, "a then").should_not be_nil
135
- end
136
-
137
- it "should clear itself" do
138
- step = @step_group.given("this and that") {}
139
- @step_group.clear
140
- @step_group.find(:given, "this and that").should be_nil
141
- end
142
-
143
- it "should tell you when it is empty" do
144
- @step_group.should be_empty
145
- end
146
-
147
- it "should tell you when it is not empty" do
148
- @step_group.given("this and that") {}
149
- @step_group.should_not be_empty
150
- end
151
-
152
- it "should handle << nil" do
153
- @step_group << nil
154
- end
155
- end
156
- end
157
- end