rspec 0.7.5.1 → 0.8.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.
- data/CHANGES +60 -1
- data/EXAMPLES.rd +38 -19
- data/MIT-LICENSE +1 -1
- data/README +24 -17
- data/RELEASE-PLAN +117 -0
- data/Rakefile +24 -18
- data/TODO.0.8.0 +5 -0
- data/examples/auto_spec_name_generation_example.rb +18 -0
- data/examples/custom_expectation_matchers.rb +53 -0
- data/examples/dynamic_spec.rb +9 -0
- data/examples/io_processor_spec.rb +2 -2
- data/examples/mocking_example.rb +4 -4
- data/examples/partial_mock_example.rb +2 -2
- data/examples/predicate_example.rb +2 -2
- data/examples/stack_spec.rb +32 -36
- data/examples/stubbing_example.rb +19 -19
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +3 -0
- data/lib/spec/callback.rb +8 -0
- data/lib/spec/callback/extensions/object.rb +4 -0
- data/lib/spec/deprecated.rb +3 -0
- data/lib/spec/expectations.rb +44 -17
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/extensions/object.rb +78 -130
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/handler.rb +47 -0
- data/lib/spec/expectations/should/base.rb +32 -29
- data/lib/spec/expectations/should/change.rb +1 -1
- data/lib/spec/expectations/should/have.rb +9 -17
- data/lib/spec/expectations/should/not.rb +54 -56
- data/lib/spec/expectations/should/should.rb +59 -65
- data/lib/spec/expectations/sugar.rb +27 -4
- data/lib/spec/matchers.rb +160 -0
- data/lib/spec/matchers/be.rb +161 -0
- data/lib/spec/matchers/be_close.rb +37 -0
- data/lib/spec/matchers/change.rb +120 -0
- data/lib/spec/matchers/eql.rb +43 -0
- data/lib/spec/matchers/equal.rb +43 -0
- data/lib/spec/matchers/has.rb +44 -0
- data/lib/spec/matchers/have.rb +140 -0
- data/lib/spec/matchers/include.rb +50 -0
- data/lib/spec/matchers/match.rb +41 -0
- data/lib/spec/matchers/raise_error.rb +100 -0
- data/lib/spec/matchers/respond_to.rb +35 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/throw_symbol.rb +75 -0
- data/lib/spec/mocks.rb +224 -1
- data/lib/spec/mocks/argument_expectation.rb +16 -2
- data/lib/spec/mocks/error_generator.rb +5 -3
- data/lib/spec/mocks/errors.rb +2 -2
- data/lib/spec/mocks/extensions/object.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +29 -19
- data/lib/spec/mocks/{mock_methods.rb → methods.rb} +5 -5
- data/lib/spec/mocks/mock.rb +2 -2
- data/lib/spec/mocks/mock_handler.rb +81 -68
- data/lib/spec/rake/spectask.rb +7 -12
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +117 -0
- data/lib/spec/runner/command_line.rb +8 -5
- data/lib/spec/runner/context.rb +13 -37
- data/lib/spec/runner/context_eval.rb +4 -3
- data/lib/spec/runner/context_runner.rb +7 -4
- data/lib/spec/runner/drb_command_line.rb +1 -1
- data/lib/spec/runner/execution_context.rb +3 -11
- data/lib/spec/runner/extensions/kernel.rb +7 -5
- data/lib/spec/runner/extensions/object.rb +4 -1
- data/lib/spec/runner/formatter/base_text_formatter.rb +11 -3
- data/lib/spec/runner/formatter/html_formatter.rb +21 -10
- data/lib/spec/runner/heckle_runner.rb +24 -8
- data/lib/spec/runner/heckle_runner_win.rb +10 -0
- data/lib/spec/runner/option_parser.rb +58 -13
- data/lib/spec/runner/spec_matcher.rb +22 -29
- data/lib/spec/runner/spec_parser.rb +1 -0
- data/lib/spec/runner/specification.rb +36 -22
- data/lib/spec/translator.rb +87 -0
- data/lib/spec/version.rb +16 -7
- data/spec/spec/callback/callback_container_spec.rb +27 -0
- data/spec/spec/callback/module_spec.rb +37 -0
- data/spec/spec/callback/object_spec.rb +90 -0
- data/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
- data/spec/spec/expectations/differs/default_spec.rb +107 -0
- data/spec/spec/expectations/extensions/object_spec.rb +46 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/expectations/should/should_==_spec.rb +19 -0
- data/spec/spec/expectations/should/should_=~_spec.rb +13 -0
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
- data/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
- data/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
- data/spec/spec/expectations/should/should_be_spec.rb +11 -0
- data/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
- data/spec/spec/expectations/should/should_change_spec.rb +184 -0
- data/spec/spec/expectations/should/should_eql_spec.rb +11 -0
- data/spec/spec/expectations/should/should_equal_spec.rb +11 -0
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
- data/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
- data/spec/spec/expectations/should/should_have_spec.rb +64 -0
- data/spec/spec/expectations/should/should_include_spec.rb +59 -0
- data/spec/spec/expectations/should/should_match_spec.rb +25 -0
- data/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
- data/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
- data/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
- data/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
- data/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
- data/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
- data/spec/spec/expectations/should/should_raise_spec.rb +66 -0
- data/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
- data/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
- data/spec/spec/expectations/should/should_throw_spec.rb +27 -0
- data/spec/spec/matchers/be_close_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +182 -0
- data/spec/spec/matchers/change_spec.rb +232 -0
- data/spec/spec/matchers/description_generation_spec.rb +147 -0
- data/spec/spec/matchers/eql_spec.rb +41 -0
- data/spec/spec/matchers/equal_spec.rb +41 -0
- data/spec/spec/matchers/handler_spec.rb +75 -0
- data/spec/spec/matchers/has_spec.rb +37 -0
- data/spec/spec/matchers/have_spec.rb +259 -0
- data/spec/spec/matchers/include_spec.rb +33 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +85 -0
- data/spec/spec/matchers/raise_error_spec.rb +147 -0
- data/spec/spec/matchers/respond_to_spec.rb +30 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +59 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +97 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +80 -0
- data/spec/spec/mocks/mock_spec.rb +407 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
- data/spec/spec/mocks/once_counts_spec.rb +56 -0
- data/spec/spec/mocks/options_hash_spec.rb +31 -0
- data/spec/spec/mocks/partial_mock_spec.rb +52 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
- data/spec/spec/mocks/precise_counts_spec.rb +56 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +159 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/runner/command_line_spec.rb +32 -0
- data/spec/spec/runner/context_matching_spec.rb +28 -0
- data/spec/spec/runner/context_runner_spec.rb +100 -0
- data/spec/spec/runner/context_spec.rb +405 -0
- data/spec/spec/runner/drb_command_line_spec.rb +74 -0
- data/spec/spec/runner/execution_context_spec.rb +52 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
- data/spec/spec/runner/heckle_runner_spec.rb +63 -0
- data/spec/spec/runner/heckler_spec.rb +14 -0
- data/spec/spec/runner/kernel_ext_spec.rb +16 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/object_ext_spec.rb +11 -0
- data/spec/spec/runner/option_parser_spec.rb +269 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
- data/spec/spec/runner/reporter_spec.rb +126 -0
- data/spec/spec/runner/spec_matcher_spec.rb +107 -0
- data/spec/spec/runner/spec_name_generation_spec.rb +102 -0
- data/spec/spec/runner/spec_parser_spec.rb +37 -0
- data/spec/spec/runner/specification_class_spec.rb +72 -0
- data/spec/spec/runner/specification_instance_spec.rb +160 -0
- data/spec/spec/runner/specification_should_raise_spec.rb +136 -0
- data/spec/spec/spec_classes.rb +102 -0
- data/spec/spec/translator_spec.rb +79 -0
- data/spec/spec_helper.rb +35 -0
- metadata +141 -9
- data/bin/drbspec +0 -3
- data/lib/spec/expectations/diff.rb +0 -28
- data/lib/spec/expectations/extensions/numeric.rb +0 -19
- data/lib/spec/expectations/extensions/string.rb +0 -22
- data/lib/spec/expectations/message_builder.rb +0 -13
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_be false" do
|
4
|
+
specify "should fail when target is true" do
|
5
|
+
lambda do
|
6
|
+
true.should_be false
|
7
|
+
end.should_fail_with "expected false, got true (using .equal?)"
|
8
|
+
end
|
9
|
+
|
10
|
+
specify "should fail when target is a number" do
|
11
|
+
lambda do
|
12
|
+
5.should_be false
|
13
|
+
end.should_fail
|
14
|
+
end
|
15
|
+
|
16
|
+
specify "should fail when target is a some random object" do
|
17
|
+
lambda do
|
18
|
+
self.should_be false
|
19
|
+
end.should_fail
|
20
|
+
end
|
21
|
+
|
22
|
+
specify "should fail when target is a string" do
|
23
|
+
lambda do
|
24
|
+
"false".should_be false
|
25
|
+
end.should_fail
|
26
|
+
end
|
27
|
+
|
28
|
+
specify "should fail when target is nil" do
|
29
|
+
lambda do
|
30
|
+
nil.should_be false
|
31
|
+
end.should_raise
|
32
|
+
end
|
33
|
+
|
34
|
+
specify "should pass when target is false" do
|
35
|
+
lambda do
|
36
|
+
false.should_be false
|
37
|
+
end.should_not_raise
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_be" do
|
4
|
+
specify "should pass when objects are the same instance" do
|
5
|
+
:apple.should_be(:apple)
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "should fail when objects are not the same instance" do
|
9
|
+
lambda { "apple".should_be("apple") }.should_fail
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_be true" do
|
4
|
+
specify "should fail when object is false" do
|
5
|
+
lambda { false.should_be(true) }.should_fail
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "should fail when object is nil" do
|
9
|
+
lambda { nil.should_be(true) }.should_fail
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "should fail when object is a number" do
|
13
|
+
lambda { 5.should_be(true) }.should_fail
|
14
|
+
end
|
15
|
+
|
16
|
+
specify "should fail when object is a some random object" do
|
17
|
+
lambda { self.should_be(true) }.should_fail
|
18
|
+
end
|
19
|
+
|
20
|
+
specify "should fail when object is a string" do
|
21
|
+
lambda { "true".should_be(true) }.should_raise
|
22
|
+
end
|
23
|
+
|
24
|
+
specify "should pass when object is true" do
|
25
|
+
true.should_be(true)
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
class SomethingExpected
|
3
|
+
attr_accessor :some_value
|
4
|
+
end
|
5
|
+
|
6
|
+
context "should_change(actual, message)" do
|
7
|
+
setup do
|
8
|
+
@instance = SomethingExpected.new
|
9
|
+
@instance.some_value = 5
|
10
|
+
end
|
11
|
+
|
12
|
+
specify "should pass when actual is modified by the block" do
|
13
|
+
lambda {@instance.some_value = 6}.should_change(@instance, :some_value)
|
14
|
+
end
|
15
|
+
|
16
|
+
specify "should fail when actual is not modified by the block" do
|
17
|
+
lambda do
|
18
|
+
lambda {}.should_change(@instance, :some_value)
|
19
|
+
end.should_fail_with "some_value should have changed, but is still 5"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "should_change { block }" do
|
24
|
+
setup do
|
25
|
+
@instance = SomethingExpected.new
|
26
|
+
@instance.some_value = 5
|
27
|
+
end
|
28
|
+
|
29
|
+
specify "should pass when actual is modified by the block" do
|
30
|
+
lambda {@instance.some_value = 6}.should_change { @instance.some_value }
|
31
|
+
end
|
32
|
+
|
33
|
+
specify "should fail when actual is not modified by the block" do
|
34
|
+
lambda do
|
35
|
+
lambda {}.should_change{ @instance.some_value }
|
36
|
+
end.should_fail_with "result should have changed, but is still 5"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "should_change(actual, message).by(expected)" do
|
41
|
+
setup do
|
42
|
+
@instance = SomethingExpected.new
|
43
|
+
@instance.some_value = 5
|
44
|
+
end
|
45
|
+
|
46
|
+
specify "should pass when attribute is changed by expected amount" do
|
47
|
+
lambda { @instance.some_value += 1 }.should_change(@instance, :some_value).by(1)
|
48
|
+
end
|
49
|
+
|
50
|
+
specify "should fail when the attribute is changed by unexpected amount" do
|
51
|
+
lambda do
|
52
|
+
lambda { @instance.some_value += 2 }.should_change(@instance, :some_value).by(1)
|
53
|
+
end.should_fail_with "some_value should have been changed by 1, but was changed by 2"
|
54
|
+
end
|
55
|
+
|
56
|
+
specify "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
57
|
+
lambda do
|
58
|
+
lambda { @instance.some_value -= 1 }.should_change(@instance, :some_value).by(1)
|
59
|
+
end.should_fail_with "some_value should have been changed by 1, but was changed by -1"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "should_change{ block }.by(expected)" do
|
64
|
+
setup do
|
65
|
+
@instance = SomethingExpected.new
|
66
|
+
@instance.some_value = 5
|
67
|
+
end
|
68
|
+
|
69
|
+
specify "should pass when attribute is changed by expected amount" do
|
70
|
+
lambda { @instance.some_value += 1 }.should_change{@instance.some_value}.by(1)
|
71
|
+
end
|
72
|
+
|
73
|
+
specify "should fail when the attribute is changed by unexpected amount" do
|
74
|
+
lambda do
|
75
|
+
lambda { @instance.some_value += 2 }.should_change{@instance.some_value}.by(1)
|
76
|
+
end.should_fail_with "result should have been changed by 1, but was changed by 2"
|
77
|
+
end
|
78
|
+
|
79
|
+
specify "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
80
|
+
lambda do
|
81
|
+
lambda { @instance.some_value -= 1 }.should_change{@instance.some_value}.by(1)
|
82
|
+
end.should_fail_with "result should have been changed by 1, but was changed by -1"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context "should_change(actual, message).from(old)" do
|
87
|
+
setup do
|
88
|
+
@instance = SomethingExpected.new
|
89
|
+
@instance.some_value = 'string'
|
90
|
+
end
|
91
|
+
|
92
|
+
specify "should pass when attribute is == to expected value before executing block" do
|
93
|
+
lambda { @instance.some_value = "astring" }.should_change(@instance, :some_value).from("string")
|
94
|
+
end
|
95
|
+
|
96
|
+
specify "should fail when attribute is not == to expected value before executing block" do
|
97
|
+
lambda do
|
98
|
+
lambda { @instance.some_value = "knot" }.should_change(@instance, :some_value).from("cat")
|
99
|
+
end.should_fail_with "some_value should have initially been \"cat\", but was \"string\""
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "should_change{ block }.from(old)" do
|
104
|
+
setup do
|
105
|
+
@instance = SomethingExpected.new
|
106
|
+
@instance.some_value = 'string'
|
107
|
+
end
|
108
|
+
|
109
|
+
specify "should pass when attribute is == to expected value before executing block" do
|
110
|
+
lambda { @instance.some_value = "astring" }.should_change{@instance.some_value}.from("string")
|
111
|
+
end
|
112
|
+
|
113
|
+
specify "should fail when attribute is not == to expected value before executing block" do
|
114
|
+
lambda do
|
115
|
+
lambda { @instance.some_value = "knot" }.should_change{@instance.some_value}.from("cat")
|
116
|
+
end.should_fail_with "result should have initially been \"cat\", but was \"string\""
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context "should_change(actual, message).to(new)" do
|
121
|
+
setup do
|
122
|
+
@instance = SomethingExpected.new
|
123
|
+
@instance.some_value = 'string'
|
124
|
+
end
|
125
|
+
|
126
|
+
specify "should pass when attribute is == to expected value after executing block" do
|
127
|
+
lambda { @instance.some_value = "cat" }.should_change(@instance, :some_value).to("cat")
|
128
|
+
end
|
129
|
+
|
130
|
+
specify "should fail when attribute is not == to expected value after executing block" do
|
131
|
+
lambda do
|
132
|
+
lambda { @instance.some_value = "cat" }.should_change(@instance, :some_value).from("string").to("dog")
|
133
|
+
end.should_fail_with "some_value should have been changed to \"dog\", but is now \"cat\""
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "should_change{ block }.to(new)" do
|
138
|
+
setup do
|
139
|
+
@instance = SomethingExpected.new
|
140
|
+
@instance.some_value = 'string'
|
141
|
+
end
|
142
|
+
|
143
|
+
specify "should pass when attribute is == to expected value after executing block" do
|
144
|
+
lambda { @instance.some_value = "cat" }.should_change{@instance.some_value}.to("cat")
|
145
|
+
end
|
146
|
+
|
147
|
+
specify "should fail when attribute is not == to expected value after executing block" do
|
148
|
+
lambda do
|
149
|
+
lambda { @instance.some_value = "cat" }.should_change{@instance.some_value}.from("string").to("dog")
|
150
|
+
end.should_fail_with "result should have been changed to \"dog\", but is now \"cat\""
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
context "should_change(actual, message).from(old).to(new)" do
|
155
|
+
setup do
|
156
|
+
@instance = SomethingExpected.new
|
157
|
+
@instance.some_value = 'string'
|
158
|
+
end
|
159
|
+
|
160
|
+
specify "should pass when #to comes before #from" do
|
161
|
+
lambda { @instance.some_value = "cat" }.should_change(@instance, :some_value).to("cat").from("string")
|
162
|
+
end
|
163
|
+
|
164
|
+
specify "should pass when #from comes before #to" do
|
165
|
+
lambda do
|
166
|
+
lambda { @instance.some_value = "cat" }.should_change(@instance, :some_value).from("string").to("cat")
|
167
|
+
end.should_pass
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "should_change{ block }.from(old).to(new)" do
|
172
|
+
setup do
|
173
|
+
@instance = SomethingExpected.new
|
174
|
+
@instance.some_value = 'string'
|
175
|
+
end
|
176
|
+
|
177
|
+
specify "should pass when #to comes before #from" do
|
178
|
+
lambda { @instance.some_value = "cat" }.should_change{@instance.some_value}.to("cat").from("string")
|
179
|
+
end
|
180
|
+
|
181
|
+
specify "should pass when #from comes before #to" do
|
182
|
+
lambda { @instance.some_value = "cat" }.should_change{@instance.some_value}.from("string").to("cat")
|
183
|
+
end
|
184
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_eql" do
|
4
|
+
specify "should pass when objects are equal (by value)" do
|
5
|
+
"apples".should_eql("apples")
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "should fail when objects are not equal (by value)" do
|
9
|
+
lambda { "apples".should_eql("cadillacs") }.should_fail_with "expected \"cadillacs\", got \"apples\" (using .eql?)"
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_equal" do
|
4
|
+
specify "should pass when objects are the same instance" do
|
5
|
+
:apple.should_equal(:apple)
|
6
|
+
end
|
7
|
+
|
8
|
+
specify "should fail when objects are not the same instance" do
|
9
|
+
lambda { "apple".should_equal("apple") }.should_fail_with "expected \"apple\", got \"apple\" (using .equal?)"
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
module Helper
|
6
|
+
context "should_have_at_least" do
|
7
|
+
setup do
|
8
|
+
@owner = CollectionOwner.new
|
9
|
+
(1..3).each do |n|
|
10
|
+
@owner.add_to_collection_with_length_method(n)
|
11
|
+
@owner.add_to_collection_with_size_method(n)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
specify "should not raise when expecting actual length" do
|
16
|
+
lambda do
|
17
|
+
@owner.should_have_at_least(3).items_in_collection_with_length_method
|
18
|
+
end.should_pass
|
19
|
+
end
|
20
|
+
|
21
|
+
specify "should not raise when expecting actual size" do
|
22
|
+
lambda do
|
23
|
+
@owner.should_have_at_least(3).items_in_collection_with_size_method
|
24
|
+
end.should_pass
|
25
|
+
end
|
26
|
+
|
27
|
+
specify "should not raise when expecting less than actual length" do
|
28
|
+
lambda do
|
29
|
+
@owner.should_have_at_least(2).items_in_collection_with_length_method
|
30
|
+
end.should_pass
|
31
|
+
end
|
32
|
+
|
33
|
+
specify "should not raise when expecting less than actual size" do
|
34
|
+
lambda do
|
35
|
+
@owner.should_have_at_least(2).items_in_collection_with_size_method
|
36
|
+
end.should_pass
|
37
|
+
end
|
38
|
+
|
39
|
+
specify "should raise when expecting more than actual length" do
|
40
|
+
lambda do
|
41
|
+
@owner.should_have_at_least(4).items_in_collection_with_length_method
|
42
|
+
end.should_fail
|
43
|
+
end
|
44
|
+
|
45
|
+
specify "should raise when expecting more than actual size" do
|
46
|
+
lambda do
|
47
|
+
@owner.should_have_at_least(4).items_in_collection_with_size_method
|
48
|
+
end.should_fail
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
module Helper
|
6
|
+
context "should_have_at_most" do
|
7
|
+
setup do
|
8
|
+
@owner = CollectionOwner.new
|
9
|
+
(1..3).each do |n|
|
10
|
+
@owner.add_to_collection_with_length_method(n)
|
11
|
+
@owner.add_to_collection_with_size_method(n)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
specify "should fail when expecting actual length" do
|
16
|
+
@owner.should_have_at_most(3).items_in_collection_with_length_method
|
17
|
+
end
|
18
|
+
|
19
|
+
specify "should fail when expecting actual size" do
|
20
|
+
@owner.should_have_at_most(3).items_in_collection_with_size_method
|
21
|
+
end
|
22
|
+
|
23
|
+
specify "should fail when expecting more than actual length" do
|
24
|
+
@owner.should_have_at_most(4).items_in_collection_with_length_method
|
25
|
+
end
|
26
|
+
|
27
|
+
specify "should fail when expecting more than actual size" do
|
28
|
+
@owner.should_have_at_most(4).items_in_collection_with_size_method
|
29
|
+
end
|
30
|
+
|
31
|
+
specify "should pass when expecting less than actual length" do
|
32
|
+
lambda do
|
33
|
+
@owner.should_have_at_most(2).items_in_collection_with_length_method
|
34
|
+
end.should_fail
|
35
|
+
end
|
36
|
+
|
37
|
+
specify "should pass when expecting less than actual size" do
|
38
|
+
lambda do
|
39
|
+
@owner.should_have_at_most(2).items_in_collection_with_size_method
|
40
|
+
end.should_fail
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
context "should_have_key" do
|
4
|
+
specify "should pass when key is present" do
|
5
|
+
lambda do
|
6
|
+
{"a" => 1}.should_have_key("a")
|
7
|
+
end.should_not_raise
|
8
|
+
end
|
9
|
+
|
10
|
+
specify "should fail when key is not present" do
|
11
|
+
lambda do
|
12
|
+
{"a" => 1}.should_have_key("b")
|
13
|
+
end.should_fail_with('expected #has_key?("b") to return true, got false')
|
14
|
+
end
|
15
|
+
|
16
|
+
specify "should fail when target does not respond to has_key?" do
|
17
|
+
lambda do
|
18
|
+
Object.new.should_have_key("b")
|
19
|
+
end.should_fail_with /target does not respond to #has_key\?/
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Expectations
|
5
|
+
module Helper
|
6
|
+
context "should_have(n).items" do
|
7
|
+
setup do
|
8
|
+
@owner = CollectionOwner.new
|
9
|
+
(1..3).each do |n|
|
10
|
+
@owner.add_to_collection_with_length_method(n)
|
11
|
+
@owner.add_to_collection_with_size_method(n)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
specify "should pass when expecting actual length" do
|
16
|
+
@owner.should_have(3).items_in_collection_with_length_method
|
17
|
+
@owner.should_have_exactly(3).items_in_collection_with_length_method
|
18
|
+
end
|
19
|
+
|
20
|
+
specify "should pass when expecting actual size" do
|
21
|
+
@owner.should_have(3).items_in_collection_with_size_method
|
22
|
+
@owner.should_have_exactly(3).items_in_collection_with_size_method
|
23
|
+
end
|
24
|
+
|
25
|
+
specify "should pass when expecting actual size with args" do
|
26
|
+
@owner.should_have(3).items_for("a")
|
27
|
+
@owner.should_have_exactly(3).items_for("a")
|
28
|
+
@owner.should_have(1).items_for("b")
|
29
|
+
@owner.should_have_exactly(1).items_for("b")
|
30
|
+
end
|
31
|
+
|
32
|
+
specify "should raise when expecting less than actual length" do
|
33
|
+
lambda do
|
34
|
+
@owner.should_have(2).items_in_collection_with_length_method
|
35
|
+
end.should_fail
|
36
|
+
end
|
37
|
+
|
38
|
+
specify "should raise when expecting less than actual length with exactly" do
|
39
|
+
lambda do
|
40
|
+
@owner.should_have_exactly(2).items_in_collection_with_length_method
|
41
|
+
end.should_fail
|
42
|
+
end
|
43
|
+
|
44
|
+
specify "should raise when expecting less than actual size" do
|
45
|
+
lambda do
|
46
|
+
@owner.should_have(2).items_in_collection_with_size_method
|
47
|
+
end.should_fail
|
48
|
+
end
|
49
|
+
|
50
|
+
specify "should raise when expecting more than actual length" do
|
51
|
+
lambda do
|
52
|
+
@owner.should_have(4).items_in_collection_with_length_method
|
53
|
+
end.should_fail
|
54
|
+
end
|
55
|
+
|
56
|
+
specify "should raise when expecting more than actual size" do
|
57
|
+
lambda do
|
58
|
+
@owner.should_have(4).items_in_collection_with_size_method
|
59
|
+
end.should_fail_with "expected 4 items_in_collection_with_size_method, got 3"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|