rspec 0.8.2 → 0.9.0

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 (245) hide show
  1. data/CHANGES +125 -9
  2. data/EXAMPLES.rd +50 -27
  3. data/README +14 -1
  4. data/Rakefile +95 -42
  5. data/UPGRADE +31 -0
  6. data/bin/spec +0 -1
  7. data/bin/spec_translator +6 -0
  8. data/examples/auto_spec_description_example.rb +19 -0
  9. data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
  10. data/examples/behave_as_example.rb +45 -0
  11. data/examples/custom_expectation_matchers.rb +13 -12
  12. data/examples/dynamic_spec.rb +2 -2
  13. data/examples/file_accessor_spec.rb +2 -2
  14. data/examples/greeter_spec.rb +3 -3
  15. data/examples/helper_method_example.rb +2 -2
  16. data/examples/io_processor_spec.rb +4 -4
  17. data/examples/legacy_spec.rb +10 -0
  18. data/examples/mocking_example.rb +5 -5
  19. data/examples/multi_threaded_behaviour_runner.rb +25 -0
  20. data/examples/partial_mock_example.rb +4 -4
  21. data/examples/predicate_example.rb +4 -4
  22. data/examples/priority.txt +1 -0
  23. data/examples/shared_behaviours_example.rb +31 -0
  24. data/examples/stack_spec.rb +52 -69
  25. data/examples/stubbing_example.rb +10 -10
  26. data/examples/test_case_adapter_example.rb +26 -0
  27. data/examples/test_case_spec.rb +6 -6
  28. data/lib/spec.rb +9 -4
  29. data/lib/spec/dsl.rb +10 -0
  30. data/lib/spec/dsl/behaviour.rb +189 -0
  31. data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
  32. data/lib/spec/dsl/behaviour_eval.rb +170 -0
  33. data/lib/spec/dsl/behaviour_factory.rb +32 -0
  34. data/lib/spec/dsl/composite_proc_builder.rb +28 -0
  35. data/lib/spec/dsl/configuration.rb +38 -0
  36. data/lib/spec/dsl/description.rb +34 -0
  37. data/lib/spec/dsl/example.rb +114 -0
  38. data/lib/spec/dsl/example_matcher.rb +28 -0
  39. data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
  40. data/lib/spec/expectations.rb +0 -3
  41. data/lib/spec/expectations/differs/default.rb +0 -1
  42. data/lib/spec/expectations/extensions.rb +0 -1
  43. data/lib/spec/expectations/extensions/object.rb +10 -53
  44. data/lib/spec/expectations/handler.rb +14 -18
  45. data/lib/spec/extensions.rb +1 -0
  46. data/lib/spec/extensions/object.rb +6 -0
  47. data/lib/spec/matchers.rb +19 -21
  48. data/lib/spec/matchers/be.rb +40 -11
  49. data/lib/spec/matchers/be_close.rb +2 -2
  50. data/lib/spec/matchers/operator_matcher.rb +52 -0
  51. data/lib/spec/matchers/respond_to.rb +21 -11
  52. data/lib/spec/mocks.rb +5 -28
  53. data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
  54. data/lib/spec/mocks/argument_expectation.rb +7 -4
  55. data/lib/spec/mocks/methods.rb +11 -16
  56. data/lib/spec/mocks/mock.rb +6 -3
  57. data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
  58. data/lib/spec/mocks/space.rb +28 -0
  59. data/lib/spec/mocks/spec_methods.rb +30 -0
  60. data/lib/spec/rake/spectask.rb +23 -21
  61. data/lib/spec/rake/verify_rcov.rb +1 -0
  62. data/lib/spec/runner.rb +88 -35
  63. data/lib/spec/runner/backtrace_tweaker.rb +2 -1
  64. data/lib/spec/runner/behaviour_runner.rb +102 -0
  65. data/lib/spec/runner/command_line.rb +5 -17
  66. data/lib/spec/runner/drb_command_line.rb +2 -2
  67. data/lib/spec/runner/extensions/kernel.rb +22 -9
  68. data/lib/spec/runner/formatter.rb +4 -0
  69. data/lib/spec/runner/formatter/base_formatter.rb +63 -0
  70. data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
  71. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
  72. data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
  73. data/lib/spec/runner/formatter/html_formatter.rb +74 -29
  74. data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
  75. data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
  76. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  77. data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
  78. data/lib/spec/runner/heckle_runner.rb +8 -7
  79. data/lib/spec/runner/option_parser.rb +136 -55
  80. data/lib/spec/runner/options.rb +26 -0
  81. data/lib/spec/runner/reporter.rb +38 -31
  82. data/lib/spec/runner/spec_parser.rb +22 -13
  83. data/lib/spec/test_case_adapter.rb +10 -0
  84. data/lib/spec/translator.rb +103 -86
  85. data/lib/spec/version.rb +7 -15
  86. data/plugins/mock_frameworks/flexmock.rb +27 -0
  87. data/plugins/mock_frameworks/mocha.rb +21 -0
  88. data/plugins/mock_frameworks/rspec.rb +18 -0
  89. data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
  90. data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
  91. data/spec/spec/dsl/behaviour_spec.rb +508 -0
  92. data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
  93. data/spec/spec/dsl/configuration_spec.rb +43 -0
  94. data/spec/spec/dsl/description_spec.rb +51 -0
  95. data/spec/spec/dsl/example_class_spec.rb +24 -0
  96. data/spec/spec/dsl/example_instance_spec.rb +140 -0
  97. data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
  98. data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
  99. data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
  100. data/spec/spec/expectations/differs/default_spec.rb +12 -12
  101. data/spec/spec/expectations/extensions/object_spec.rb +10 -10
  102. data/spec/spec/expectations/fail_with_spec.rb +20 -20
  103. data/spec/spec/matchers/be_close_spec.rb +37 -31
  104. data/spec/spec/matchers/be_spec.rb +50 -41
  105. data/spec/spec/matchers/change_spec.rb +54 -54
  106. data/spec/spec/matchers/description_generation_spec.rb +43 -31
  107. data/spec/spec/matchers/eql_spec.rb +24 -37
  108. data/spec/spec/matchers/equal_spec.rb +24 -37
  109. data/spec/spec/matchers/exist_spec.rb +48 -0
  110. data/spec/spec/matchers/handler_spec.rb +36 -23
  111. data/spec/spec/matchers/has_spec.rb +8 -8
  112. data/spec/spec/matchers/have_spec.rb +38 -38
  113. data/spec/spec/matchers/include_spec.rb +6 -6
  114. data/spec/spec/matchers/match_spec.rb +8 -8
  115. data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
  116. data/spec/spec/matchers/raise_error_spec.rb +34 -34
  117. data/spec/spec/matchers/respond_to_spec.rb +32 -8
  118. data/spec/spec/matchers/satisfy_spec.rb +6 -6
  119. data/spec/spec/matchers/should_===_spec.rb +38 -0
  120. data/spec/spec/matchers/should_==_spec.rb +37 -0
  121. data/spec/spec/matchers/should_=~_spec.rb +36 -0
  122. data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
  123. data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
  124. data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
  125. data/spec/spec/mocks/at_least_spec.rb +30 -30
  126. data/spec/spec/mocks/at_most_spec.rb +53 -57
  127. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  128. data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
  129. data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
  130. data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
  131. data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
  132. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
  133. data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
  134. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  135. data/spec/spec/mocks/mock_spec.rb +111 -141
  136. data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
  137. data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
  138. data/spec/spec/mocks/once_counts_spec.rb +32 -35
  139. data/spec/spec/mocks/options_hash_spec.rb +12 -10
  140. data/spec/spec/mocks/partial_mock_spec.rb +15 -15
  141. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
  142. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
  143. data/spec/spec/mocks/precise_counts_spec.rb +28 -32
  144. data/spec/spec/mocks/record_messages_spec.rb +10 -10
  145. data/spec/spec/mocks/stub_spec.rb +45 -45
  146. data/spec/spec/mocks/twice_counts_spec.rb +21 -21
  147. data/spec/spec/package/bin_spec_spec.rb +12 -0
  148. data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
  149. data/spec/spec/runner/command_line_spec.rb +8 -8
  150. data/spec/spec/runner/context_matching_spec.rb +14 -15
  151. data/spec/spec/runner/drb_command_line_spec.rb +12 -12
  152. data/spec/spec/runner/execution_context_spec.rb +8 -29
  153. data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
  154. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
  155. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
  156. data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
  157. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
  158. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
  159. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
  160. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
  161. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
  162. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
  163. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
  164. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
  165. data/spec/spec/runner/heckle_runner_spec.rb +21 -21
  166. data/spec/spec/runner/heckler_spec.rb +5 -5
  167. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
  168. data/spec/spec/runner/object_ext_spec.rb +3 -3
  169. data/spec/spec/runner/option_parser_spec.rb +171 -102
  170. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
  171. data/spec/spec/runner/reporter_spec.rb +106 -97
  172. data/spec/spec/runner/spec_matcher_spec.rb +46 -51
  173. data/spec/spec/runner/spec_parser_spec.rb +72 -16
  174. data/spec/spec/spec_classes.rb +12 -3
  175. data/spec/spec/translator_spec.rb +165 -36
  176. metadata +66 -76
  177. data/RELEASE-PLAN +0 -117
  178. data/examples/auto_spec_name_generation_example.rb +0 -18
  179. data/lib/spec/callback.rb +0 -11
  180. data/lib/spec/callback/callback_container.rb +0 -60
  181. data/lib/spec/callback/extensions/module.rb +0 -24
  182. data/lib/spec/callback/extensions/object.rb +0 -37
  183. data/lib/spec/deprecated.rb +0 -3
  184. data/lib/spec/expectations/extensions/proc.rb +0 -57
  185. data/lib/spec/expectations/should.rb +0 -5
  186. data/lib/spec/expectations/should/base.rb +0 -64
  187. data/lib/spec/expectations/should/change.rb +0 -69
  188. data/lib/spec/expectations/should/have.rb +0 -128
  189. data/lib/spec/expectations/should/not.rb +0 -74
  190. data/lib/spec/expectations/should/should.rb +0 -81
  191. data/lib/spec/expectations/sugar.rb +0 -47
  192. data/lib/spec/runner/context.rb +0 -154
  193. data/lib/spec/runner/context_eval.rb +0 -142
  194. data/lib/spec/runner/context_runner.rb +0 -55
  195. data/lib/spec/runner/execution_context.rb +0 -17
  196. data/lib/spec/runner/spec_matcher.rb +0 -25
  197. data/lib/spec/runner/specification.rb +0 -114
  198. data/spec/spec/callback/callback_container_spec.rb +0 -27
  199. data/spec/spec/callback/module_spec.rb +0 -37
  200. data/spec/spec/callback/object_spec.rb +0 -90
  201. data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
  202. data/spec/spec/expectations/should/should_==_spec.rb +0 -19
  203. data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
  204. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
  205. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
  206. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
  207. data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
  208. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
  209. data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
  210. data/spec/spec/expectations/should/should_be_spec.rb +0 -11
  211. data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
  212. data/spec/spec/expectations/should/should_change_spec.rb +0 -184
  213. data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
  214. data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
  215. data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
  216. data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
  217. data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
  218. data/spec/spec/expectations/should/should_have_spec.rb +0 -64
  219. data/spec/spec/expectations/should/should_include_spec.rb +0 -59
  220. data/spec/spec/expectations/should/should_match_spec.rb +0 -25
  221. data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
  222. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
  223. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
  224. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
  225. data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
  226. data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
  227. data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
  228. data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
  229. data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
  230. data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
  231. data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
  232. data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
  233. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
  234. data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
  235. data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
  236. data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
  237. data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
  238. data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
  239. data/spec/spec/runner/context_runner_spec.rb +0 -100
  240. data/spec/spec/runner/context_spec.rb +0 -405
  241. data/spec/spec/runner/kernel_ext_spec.rb +0 -16
  242. data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
  243. data/spec/spec/runner/specification_class_spec.rb +0 -72
  244. data/spec/spec/runner/specification_instance_spec.rb +0 -160
  245. data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
@@ -1,15 +1,13 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
- module Mocks
5
- context "AtMost" do
6
- setup do
7
- @mock = Mock.new("test mock", {
8
- :auto_verify => false
9
- })
10
-
11
- end
12
- specify "should fail when at most n times method is called n plus 1 times" do
4
+ module Mocks
5
+ describe "AtMost" do
6
+ before(:each) do
7
+ @mock = Mock.new("test mock")
8
+ end
9
+
10
+ it "should fail when at most n times method is called n plus 1 times" do
13
11
  @mock.should_receive(:random_call).at_most(4).times
14
12
  @mock.random_call
15
13
  @mock.random_call
@@ -17,81 +15,79 @@ context "AtMost" do
17
15
  @mock.random_call
18
16
  @mock.random_call
19
17
  lambda do
20
- @mock.__verify
21
- end.should_raise(MockExpectationError)
22
-
23
- end
24
- specify "should fail when at most once method is called twice" do
18
+ @mock.rspec_verify
19
+ end.should raise_error(MockExpectationError)
20
+ end
21
+
22
+ it "should fail when at most once method is called twice" do
25
23
  @mock.should_receive(:random_call).at_most(:once)
26
24
  @mock.random_call
27
25
  @mock.random_call
28
26
  lambda do
29
- @mock.__verify
30
- end.should_raise(MockExpectationError)
31
-
32
- end
33
- specify "should fail when at most twice method is called three times" do
27
+ @mock.rspec_verify
28
+ end.should raise_error(MockExpectationError)
29
+ end
30
+
31
+ it "should fail when at most twice method is called three times" do
34
32
  @mock.should_receive(:random_call).at_most(:twice)
35
33
  @mock.random_call
36
34
  @mock.random_call
37
35
  @mock.random_call
38
36
  lambda do
39
- @mock.__verify
40
- end.should_raise(MockExpectationError)
41
-
42
- end
43
- specify "should pass when at most n times method is called exactly n times" do
37
+ @mock.rspec_verify
38
+ end.should raise_error(MockExpectationError)
39
+ end
40
+
41
+ it "should pass when at most n times method is called exactly n times" do
44
42
  @mock.should_receive(:random_call).at_most(4).times
45
43
  @mock.random_call
46
44
  @mock.random_call
47
45
  @mock.random_call
48
46
  @mock.random_call
49
- @mock.__verify
50
-
51
- end
52
- specify "should pass when at most n times method is called less than n times" do
47
+ @mock.rspec_verify
48
+ end
49
+
50
+ it "should pass when at most n times method is called less than n times" do
53
51
  @mock.should_receive(:random_call).at_most(4).times
54
52
  @mock.random_call
55
53
  @mock.random_call
56
54
  @mock.random_call
57
- @mock.__verify
58
-
59
- end
60
- specify "should pass when at most n times method is never called" do
55
+ @mock.rspec_verify
56
+ end
57
+
58
+ it "should pass when at most n times method is never called" do
61
59
  @mock.should_receive(:random_call).at_most(4).times
62
- @mock.__verify
63
-
64
- end
65
- specify "should pass when at most once method is called once" do
60
+ @mock.rspec_verify
61
+ end
62
+
63
+ it "should pass when at most once method is called once" do
66
64
  @mock.should_receive(:random_call).at_most(:once)
67
65
  @mock.random_call
68
- @mock.__verify
69
-
70
- end
71
- specify "should pass when at most once method is never called" do
66
+ @mock.rspec_verify
67
+ end
68
+
69
+ it "should pass when at most once method is never called" do
72
70
  @mock.should_receive(:random_call).at_most(:once)
73
- @mock.__verify
74
-
75
- end
76
- specify "should pass when at most twice method is called once" do
71
+ @mock.rspec_verify
72
+ end
73
+
74
+ it "should pass when at most twice method is called once" do
77
75
  @mock.should_receive(:random_call).at_most(:twice)
78
76
  @mock.random_call
79
- @mock.__verify
80
-
81
- end
82
- specify "should pass when at most twice method is called twice" do
77
+ @mock.rspec_verify
78
+ end
79
+
80
+ it "should pass when at most twice method is called twice" do
83
81
  @mock.should_receive(:random_call).at_most(:twice)
84
82
  @mock.random_call
85
83
  @mock.random_call
86
- @mock.__verify
87
-
88
- end
89
- specify "should pass when at most twice method is never called" do
84
+ @mock.rspec_verify
85
+ end
86
+
87
+ it "should pass when at most twice method is never called" do
90
88
  @mock.should_receive(:random_call).at_most(:twice)
91
- @mock.__verify
92
-
89
+ @mock.rspec_verify
90
+ end
93
91
  end
94
-
95
- end
96
- end
92
+ end
97
93
  end
@@ -0,0 +1,8 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "An RSpec Mock" do
4
+ it "should hide internals in its inspect representation" do
5
+ m = mock('cup')
6
+ m.inspect.should =~ /#<Spec::Mocks::Mock:0x[a-f0-9.]+ @name="cup">/
7
+ end
8
+ end
@@ -7,12 +7,12 @@ module Bug7611
7
7
  class Bar < Foo
8
8
  end
9
9
 
10
- context "A Partial Mock" do
11
- specify "should respect subclasses" do
10
+ describe "A Partial Mock" do
11
+ it "should respect subclasses" do
12
12
  Foo.stub!(:new).and_return(Object.new)
13
13
  end
14
14
 
15
- specify "should" do
15
+ it "should" do
16
16
  Bar.new.class.should == Bar
17
17
  end
18
18
  end
@@ -3,12 +3,12 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
3
3
  module Bug7805
4
4
  #This is really a duplicate of 8302
5
5
 
6
- context "Stubs should correctly restore module methods" do
7
- specify "1 - stub the open method" do
6
+ describe "Stubs should correctly restore module methods" do
7
+ it "1 - stub the open method" do
8
8
  File.stub!(:open).and_return("something")
9
9
  File.open.should == "something"
10
10
  end
11
- specify "2 - use File.open to create example.txt" do
11
+ it "2 - use File.open to create example.txt" do
12
12
  filename = "#{File.dirname(__FILE__)}/example-#{Time.new.to_i}.txt"
13
13
  File.exist?(filename).should be_false
14
14
  file = File.open(filename,'w')
@@ -1,10 +1,10 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "An object where respond_to? is true and does not have method" do
4
- # When should_receive(:sym) is sent to any object, the MockHandler sends
3
+ describe "An object where respond_to? is true and does not have method" do
4
+ # When should_receive(:sym) is sent to any object, the Proxy sends
5
5
  # respond_to?(:sym) to that object to see if the method should be proxied.
6
6
  #
7
- # If respond_to? itself is proxied, then when the MockHandler sends respond_to?
7
+ # If respond_to? itself is proxied, then when the Proxy sends respond_to?
8
8
  # to the object, the proxy is invoked and responds yes (if so set in the spec).
9
9
  # When the object does NOT actually respond to :sym, an exception is thrown
10
10
  # when trying to proxy it.
@@ -12,7 +12,7 @@ context "An object where respond_to? is true and does not have method" do
12
12
  # The fix was to keep track of whether :respond_to? had been proxied and, if
13
13
  # so, call the munged copy of :respond_to? on the object.
14
14
 
15
- specify "should not raise an exception" do
15
+ it "should not raise an exception" do
16
16
  obj = Object.new
17
17
  obj.should_receive(:respond_to?).with(:foobar).and_return(true)
18
18
  obj.should_receive(:foobar).and_return(:baz)
@@ -20,7 +20,7 @@ context "An object where respond_to? is true and does not have method" do
20
20
  obj.foobar.should == :baz
21
21
  end
22
22
 
23
- specify "should not raise an exception" do
23
+ it "should not raise an exception" do
24
24
  obj = mock("obj")
25
25
  obj.should_receive(:respond_to?).with(:foobar).and_return(true)
26
26
  obj.should_receive(:foobar).and_return(:baz)
@@ -9,17 +9,17 @@ module Bug8302
9
9
  end
10
10
  end
11
11
 
12
- context "Bug report 8302:" do
13
- specify "class method is not restored correctly when proxied" do
12
+ describe "Bug report 8302:" do
13
+ it "class method is not restored correctly when proxied" do
14
14
  Foo.should_not_receive(:class_method).with(Array.new)
15
- Foo.__verify
15
+ Foo.rspec_verify
16
16
  Foo.class_method(Array.new)
17
17
  end
18
18
 
19
- specify "instance method is not restored correctly when proxied" do
19
+ it "instance method is not restored correctly when proxied" do
20
20
  foo = Foo.new
21
21
  foo.should_not_receive(:instance_bar).with(Array.new)
22
- foo.__verify
22
+ foo.rspec_verify
23
23
  foo.instance_bar(Array.new)
24
24
  end
25
25
  end
@@ -2,72 +2,71 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
4
  module Mocks
5
- context "FailingMockArgumentConstraints" do
6
- setup do
7
- @mock = Mock.new("test mock", {
8
- :auto_verify => false
9
- })
10
- @reporter = Mock.new("reporter", {
11
- :null_object => true,
12
- :auto_verify => false
13
- })
5
+ describe "FailingMockArgumentConstraints" do
6
+ before do
7
+ @mock = mock("test mock")
8
+ @reporter = Mock.new("reporter", :null_object => true)
14
9
  end
15
10
 
16
- specify "should reject goose when expecting a duck" do
11
+ after do
12
+ @mock.rspec_reset
13
+ end
14
+
15
+ it "should reject goose when expecting a duck" do
17
16
  @mock.should_receive(:random_call).with(DuckTypeArgConstraint.new(:abs, :div))
18
- lambda { @mock.random_call("I don't respond to :abs or :div") }.should_raise(MockExpectationError)
17
+ lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError)
19
18
  end
20
19
 
21
- specify "should reject non boolean" do
20
+ it "should reject non boolean" do
22
21
  @mock.should_receive(:random_call).with(:boolean)
23
22
  lambda do
24
23
  @mock.random_call("false")
25
- end.should_raise(MockExpectationError)
24
+ end.should raise_error(MockExpectationError)
26
25
  end
27
26
 
28
- specify "should reject non numeric" do
27
+ it "should reject non numeric" do
29
28
  @mock.should_receive(:random_call).with(:numeric)
30
29
  lambda do
31
30
  @mock.random_call("1")
32
- end.should_raise(MockExpectationError)
31
+ end.should raise_error(MockExpectationError)
33
32
  end
34
33
 
35
- specify "should reject non string" do
34
+ it "should reject non string" do
36
35
  @mock.should_receive(:random_call).with(:string)
37
36
  lambda do
38
37
  @mock.random_call(123)
39
- end.should_raise(MockExpectationError)
38
+ end.should raise_error(MockExpectationError)
40
39
  end
41
40
 
42
- specify "should fail if regexp does not match submitted string" do
41
+ it "should fail if regexp does not match submitted string" do
43
42
  @mock.should_receive(:random_call).with(/bcd/)
44
- lambda { @mock.random_call("abc") }.should_raise(MockExpectationError)
43
+ lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError)
45
44
  end
46
45
 
47
- specify "should fail if regexp does not match submitted regexp" do
46
+ it "should fail if regexp does not match submitted regexp" do
48
47
  @mock.should_receive(:random_call).with(/bcd/)
49
- lambda { @mock.random_call(/bcde/) }.should_raise(MockExpectationError)
48
+ lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError)
50
49
  end
51
50
 
52
- specify "should fail for a hash w/ wrong values" do
51
+ it "should fail for a hash w/ wrong values" do
53
52
  @mock.should_receive(:random_call).with(:a => "b", :c => "d")
54
53
  lambda do
55
54
  @mock.random_call(:a => "b", :c => "e")
56
- end.should_raise(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
55
+ end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
57
56
  end
58
57
 
59
- specify "should fail for a hash w/ wrong keys" do
58
+ it "should fail for a hash w/ wrong keys" do
60
59
  @mock.should_receive(:random_call).with(:a => "b", :c => "d")
61
60
  lambda do
62
61
  @mock.random_call("a" => "b", "c" => "d")
63
- end.should_raise(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
62
+ end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
64
63
  end
65
64
 
66
- specify "should match against a Matcher" do
65
+ it "should match against a Matcher" do
67
66
  lambda do
68
67
  @mock.should_receive(:msg).with(equal(3))
69
68
  @mock.msg(37)
70
- end.should_raise(MockExpectationError, "Mock 'test mock' expected :msg with (equal 3) but received it with (37)")
69
+ end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (equal 3) but received it with (37)")
71
70
  end
72
71
  end
73
72
  end
@@ -3,59 +3,63 @@ require File.dirname(__FILE__) + '/../../spec_helper'
3
3
  module Spec
4
4
  module Mocks
5
5
 
6
- context "Mock ordering" do
6
+ describe "Mock ordering" do
7
7
 
8
- setup do
9
- @mock = Mock.new("test mock", :auto_verify => false)
8
+ before do
9
+ @mock = mock("test mock")
10
+ end
11
+
12
+ after do
13
+ @mock.rspec_reset
10
14
  end
11
15
 
12
- specify "should pass two calls in order" do
16
+ it "should pass two calls in order" do
13
17
  @mock.should_receive(:one).ordered
14
18
  @mock.should_receive(:two).ordered
15
19
  @mock.one
16
20
  @mock.two
17
- @mock.__verify
21
+ @mock.rspec_verify
18
22
  end
19
23
 
20
- specify "should pass three calls in order" do
24
+ it "should pass three calls in order" do
21
25
  @mock.should_receive(:one).ordered
22
26
  @mock.should_receive(:two).ordered
23
27
  @mock.should_receive(:three).ordered
24
28
  @mock.one
25
29
  @mock.two
26
30
  @mock.three
27
- @mock.__verify
31
+ @mock.rspec_verify
28
32
  end
29
33
 
30
- specify "should fail if second call comes first" do
34
+ it "should fail if second call comes first" do
31
35
  @mock.should_receive(:one).ordered
32
36
  @mock.should_receive(:two).ordered
33
37
  lambda do
34
38
  @mock.two
35
- end.should_raise(MockExpectationError, "Mock 'test mock' received :two out of order")
39
+ end.should raise_error(MockExpectationError, "Mock 'test mock' received :two out of order")
36
40
  end
37
41
 
38
- specify "should fail if third call comes first" do
42
+ it "should fail if third call comes first" do
39
43
  @mock.should_receive(:one).ordered
40
44
  @mock.should_receive(:two).ordered
41
45
  @mock.should_receive(:three).ordered
42
46
  @mock.one
43
47
  lambda do
44
48
  @mock.three
45
- end.should_raise(MockExpectationError, "Mock 'test mock' received :three out of order")
49
+ end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
46
50
  end
47
51
 
48
- specify "should fail if third call comes second" do
52
+ it "should fail if third call comes second" do
49
53
  @mock.should_receive(:one).ordered
50
54
  @mock.should_receive(:two).ordered
51
55
  @mock.should_receive(:three).ordered
52
56
  @mock.one
53
57
  lambda do
54
58
  @mock.three
55
- end.should_raise(MockExpectationError, "Mock 'test mock' received :three out of order")
59
+ end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
56
60
  end
57
61
 
58
- specify "should ignore order of non ordered calls" do
62
+ it "should ignore order of non ordered calls" do
59
63
  @mock.should_receive(:ignored_0)
60
64
  @mock.should_receive(:ordered_1).ordered
61
65
  @mock.should_receive(:ignored_1)
@@ -72,7 +76,7 @@ module Spec
72
76
  @mock.ignored_2
73
77
  @mock.ordered_3
74
78
  @mock.ignored_1
75
- @mock.__verify
79
+ @mock.rspec_verify
76
80
  end
77
81
 
78
82
  end
@@ -0,0 +1,54 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+ require 'spec/mocks'
3
+
4
+ module Spec
5
+ module Mocks
6
+ describe Space do
7
+ before :each do
8
+ @space = Space.new
9
+ klazz = Class.new do
10
+ def rspec_verify
11
+ @verified = true
12
+ end
13
+ def verified?
14
+ @verified
15
+ end
16
+ def rspec_reset
17
+ @reset = true
18
+ end
19
+ def reset?
20
+ @reset
21
+ end
22
+ end
23
+ @m1 = klazz.new
24
+ @m2 = klazz.new
25
+ end
26
+ it "should verify all mocks within" do
27
+ @space.add(@m1)
28
+ @space.add(@m2)
29
+ @space.verify_all
30
+ @m1.should be_verified
31
+ @m2.should be_verified
32
+ end
33
+ it "should reset all mocks within" do
34
+ @space.add(m1 = mock("mock1"))
35
+ @space.add(m2 = mock("mock2"))
36
+ m1.should_receive(:rspec_reset)
37
+ m2.should_receive(:rspec_reset)
38
+ @space.reset_all
39
+ end
40
+ it "should clear internal mocks on reset_all" do
41
+ @space.add(m = mock("mock"))
42
+ @space.reset_all
43
+ @space.instance_eval { mocks.empty? }.should be_true
44
+ end
45
+ it "should only add an instance once" do
46
+ @space.add(m1 = mock("mock1"))
47
+ @space.add(m1)
48
+ m1.should_receive(:rspec_verify)
49
+ @space.verify_all
50
+ end
51
+ end
52
+ end
53
+ end
54
+