kintama 0.1.9 → 0.2
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.
- checksums.yaml +7 -0
- data/README.md +2 -2
- data/lib/kintama.rb +26 -12
- data/lib/kintama/assertions.rb +40 -1
- data/lib/kintama/context.rb +65 -50
- data/lib/kintama/mocha.rb +32 -10
- data/lib/kintama/no_conflict.rb +2 -0
- data/lib/kintama/reporter.rb +11 -10
- data/lib/kintama/runnable.rb +2 -2
- data/lib/kintama/runner.rb +5 -5
- data/lib/kintama/test.rb +2 -2
- data/test/integration/automatic_running_test.rb +22 -0
- data/test/integration/line_based_running_test.rb +129 -0
- data/test/reporters/base_reporter_test.rb +31 -101
- data/test/reporters/inline_reporter_test.rb +23 -35
- data/test/reporters/verbose_reporter_test.rb +78 -76
- data/test/test_helper.rb +159 -2
- data/test/{assertions_test.rb → unit/assertions_test.rb} +54 -5
- data/test/unit/context_test.rb +15 -0
- data/test/unit/runner_test.rb +87 -0
- data/test/{test_and_subcontext_access_test.rb → unit/test_and_subcontext_access_test.rb} +6 -33
- data/test/usage/01_basic_usage_test.rb +131 -0
- data/test/usage/02_setup_test.rb +98 -0
- data/test/usage/03_teardown_test.rb +121 -0
- data/test/usage/04_pending_tests_test.rb +16 -0
- data/test/usage/05_aliases_test.rb +73 -0
- data/test/usage/06_defining_methods_in_tests_test.rb +202 -0
- data/test/usage/07_exceptions_test.rb +42 -0
- data/test/usage/08_start_and_finish_test.rb +261 -0
- data/test/usage/09_expectations_and_mocking_test.rb +85 -0
- data/test/usage/10_let_and_subject_test.rb +134 -0
- data/test/usage/11_matcher_test.rb +148 -0
- data/test/usage/12_action_test.rb +118 -0
- metadata +55 -48
- data/test/aliases_test.rb +0 -26
- data/test/automatic_running_test.rb +0 -45
- data/test/exceptions_test.rb +0 -40
- data/test/kintama_test.rb +0 -114
- data/test/line_based_running_test.rb +0 -143
- data/test/matcher_test.rb +0 -80
- data/test/method_behaviour_test.rb +0 -176
- data/test/pending_test_and_context.rb +0 -20
- data/test/setup_test.rb +0 -107
- data/test/start_and_finish_test.rb +0 -94
- data/test/teardown_test.rb +0 -106
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PendingTestsTest < KintamaIntegrationTest
|
4
|
+
|
5
|
+
def test_should_pass_any_pending_tests
|
6
|
+
context "Given a context with an unimplemented test" do
|
7
|
+
should "indicate that the test is not implemented" # NOTE - no test body
|
8
|
+
end.
|
9
|
+
should_output(%{
|
10
|
+
Given a context with an unimplemented test
|
11
|
+
should indicate that the test is not implemented: P
|
12
|
+
}).
|
13
|
+
and_pass
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AliasesTest < KintamaIntegrationTest
|
4
|
+
|
5
|
+
def test_provides_given_alias_for_context
|
6
|
+
context "In a kintama test" do
|
7
|
+
given "a context that is defined using the `given` method" do
|
8
|
+
test "will be described using `given` in the output" do
|
9
|
+
assert true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end.
|
13
|
+
should_output(%{
|
14
|
+
In a kintama test
|
15
|
+
given a context that is defined using the `given` method
|
16
|
+
will be described using `given` in the output: .
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_provides_testcase_alias_for_context
|
21
|
+
context "In a kintama test" do
|
22
|
+
testcase "a context defined using `testcase`" do
|
23
|
+
test "does not prefix anything to the context name" do
|
24
|
+
assert true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end.
|
28
|
+
should_output(%{
|
29
|
+
In a kintama test
|
30
|
+
a context defined using `testcase`
|
31
|
+
does not prefix anything to the context name: .
|
32
|
+
})
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_provides_describe_alias_for_context
|
36
|
+
context "In a kintama test" do
|
37
|
+
describe "a context defined using `describe`" do
|
38
|
+
test "does not prefix anything to the context name" do
|
39
|
+
assert true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end.
|
43
|
+
should_output(%{
|
44
|
+
In a kintama test
|
45
|
+
a context defined using `describe`
|
46
|
+
does not prefix anything to the context name: .
|
47
|
+
})
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_provides_should_alias_for_test
|
51
|
+
context "A context with a test defined using `should`" do
|
52
|
+
should "output the test with `should` in the name" do
|
53
|
+
assert true
|
54
|
+
end
|
55
|
+
end.
|
56
|
+
should_output(%{
|
57
|
+
A context with a test defined using `should`
|
58
|
+
should output the test with `should` in the name: .
|
59
|
+
})
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_provides_it_alias_for_test
|
63
|
+
context "A context with a test defined using `it`" do
|
64
|
+
it "outputs the test with `it` in the name" do
|
65
|
+
assert true
|
66
|
+
end
|
67
|
+
end.
|
68
|
+
should_output(%{
|
69
|
+
A context with a test defined using `it`
|
70
|
+
it outputs the test with `it` in the name: .
|
71
|
+
})
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,202 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DefiningMethodsInTestsTest < KintamaIntegrationTest
|
4
|
+
|
5
|
+
def test_should_allow_methods_defined_in_the_context_to_be_called_in_tests
|
6
|
+
context "Given a context with a method defined in it" do
|
7
|
+
def do_something
|
8
|
+
123
|
9
|
+
end
|
10
|
+
|
11
|
+
should "allow the method to be called within the test" do
|
12
|
+
assert self.respond_to?(:do_something)
|
13
|
+
assert_equal 123, do_something
|
14
|
+
end
|
15
|
+
end.
|
16
|
+
should_run_tests(1).
|
17
|
+
and_pass
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_should_allow_methods_defined_in_the_context_to_be_called_in_tests_in_subcontexts
|
21
|
+
context "Given a method defined in the outer context" do
|
22
|
+
def do_something
|
23
|
+
234
|
24
|
+
end
|
25
|
+
|
26
|
+
context "in a subcontext" do
|
27
|
+
should "allow the method to be called" do
|
28
|
+
assert self.respond_to?(:do_something)
|
29
|
+
assert_equal 234, do_something
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end.
|
33
|
+
should_run_tests(1).
|
34
|
+
and_pass
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_not_allow_methods_from_one_context_to_bleed_into_another
|
38
|
+
context "Given some subcontexts" do
|
39
|
+
context "one of which contains a method" do
|
40
|
+
def do_another_thing
|
41
|
+
123
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should be possible to call the method within the same subcontext" do
|
45
|
+
assert self.respond_to?(:do_another_thing)
|
46
|
+
assert_equal 123, do_another_thing
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "one of which does not contain that method" do
|
51
|
+
it "should not be possible to call the method defined in a different context" do
|
52
|
+
assert !self.respond_to?(:do_another_thing)
|
53
|
+
assert_raises("should not be able to call this") { do_another_thing }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end.
|
57
|
+
should_run_tests(2).
|
58
|
+
and_pass
|
59
|
+
end
|
60
|
+
|
61
|
+
module ModuleIncludedInContext
|
62
|
+
def method_from_module
|
63
|
+
456
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_should_be_able_to_call_methods_from_included_modules_in_tests
|
68
|
+
context "Given a module included into a context" do
|
69
|
+
include ModuleIncludedInContext
|
70
|
+
|
71
|
+
should "allow calling methods from that module" do
|
72
|
+
assert_equal 456, method_from_module
|
73
|
+
end
|
74
|
+
end.
|
75
|
+
should_run_tests(1).
|
76
|
+
and_pass
|
77
|
+
end
|
78
|
+
|
79
|
+
module ModuleWithMethodReferencingAnInstanceVariable
|
80
|
+
def method_referencing_an_instance_variable
|
81
|
+
@thing
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_should_allow_defined_methods_to_refer_to_instance_variables_defined_in_setup_when_included_via_modules
|
86
|
+
context "Given I define an instance variable in my setup" do
|
87
|
+
setup do
|
88
|
+
@thing = 123
|
89
|
+
end
|
90
|
+
|
91
|
+
include ModuleWithMethodReferencingAnInstanceVariable
|
92
|
+
|
93
|
+
should "be able to call a method that refers to that variable in a test" do
|
94
|
+
assert_equal 123, method_referencing_an_instance_variable
|
95
|
+
end
|
96
|
+
end.
|
97
|
+
should_run_tests(1).
|
98
|
+
and_pass "Thing was not defined!"
|
99
|
+
end
|
100
|
+
|
101
|
+
module ModuleIncludedIntoGlobalScope
|
102
|
+
def method_included_in_global_scope
|
103
|
+
'abc'
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_should_allow_including_default_behaviour_in_all_contexts
|
108
|
+
Kintama.include ModuleIncludedIntoGlobalScope
|
109
|
+
context "Given a context" do
|
110
|
+
should "be able to call a method from the globally shared behaviour" do
|
111
|
+
assert_equal 'abc', method_included_in_global_scope
|
112
|
+
end
|
113
|
+
end.
|
114
|
+
should_run_tests(1).
|
115
|
+
and_pass "something was not defined!"
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_should_be_able_to_compose_shoulds_into_methods
|
119
|
+
context "Given a context" do
|
120
|
+
def self.should_create_a_should_from_a_method
|
121
|
+
should "have created this test" do
|
122
|
+
assert true
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
should_create_a_should_from_a_method
|
127
|
+
end.
|
128
|
+
should_run_tests(1).
|
129
|
+
and_output(%{
|
130
|
+
Given a context
|
131
|
+
should have created this test: .
|
132
|
+
}).
|
133
|
+
and_pass
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_should_be_able_to_call_methods_in_subcontexts_that_create_tests
|
137
|
+
context "Given a subcontext" do
|
138
|
+
def self.with_a_method
|
139
|
+
should "create this test in the subcontext" do
|
140
|
+
assert true
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
context "which calls a method defined at the top level" do
|
145
|
+
with_a_method
|
146
|
+
end
|
147
|
+
end.
|
148
|
+
should_run_tests(1).
|
149
|
+
and_output(%{
|
150
|
+
Given a subcontext
|
151
|
+
which calls a method defined at the top level
|
152
|
+
should create this test in the subcontext: .
|
153
|
+
}).
|
154
|
+
and_pass
|
155
|
+
end
|
156
|
+
|
157
|
+
module ModuleToAddBehaviourToContext
|
158
|
+
def method_to_define_test
|
159
|
+
should "create this test in the subcontext" do
|
160
|
+
assert true
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_should_be_able_to_call_methods_in_subcontexts_that_create_tests_when_defined_in_modules
|
166
|
+
context "Given a subcontext" do
|
167
|
+
extend ModuleToAddBehaviourToContext
|
168
|
+
|
169
|
+
context "which calls a method defined at the top level" do
|
170
|
+
method_to_define_test
|
171
|
+
end
|
172
|
+
end.
|
173
|
+
should_run_tests(1).
|
174
|
+
and_output(%{
|
175
|
+
Given a subcontext
|
176
|
+
which calls a method defined at the top level
|
177
|
+
should create this test in the subcontext: .
|
178
|
+
}).
|
179
|
+
and_pass
|
180
|
+
end
|
181
|
+
|
182
|
+
module ModuleExtendedIntoGlobalScope
|
183
|
+
def method_to_define_a_test
|
184
|
+
should "define a test within the top-level-extended module" do
|
185
|
+
assert true
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_should_be_able_to_add_behaviour_to_kintama
|
191
|
+
Kintama.extend ModuleExtendedIntoGlobalScope
|
192
|
+
context "A context that isn't explicitly extended by a module" do
|
193
|
+
method_to_define_a_test
|
194
|
+
end.
|
195
|
+
should_run_tests(1).
|
196
|
+
and_output(%{
|
197
|
+
A context that isn't explicitly extended by a module
|
198
|
+
should define a test within the top-level-extended module: .
|
199
|
+
}).
|
200
|
+
and_pass
|
201
|
+
end
|
202
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ExceptionsTest < KintamaIntegrationTest
|
4
|
+
|
5
|
+
def test_should_capture_exceptions_in_tests_as_failing_tests
|
6
|
+
context "Given a test" do
|
7
|
+
should "fail when there is an exception" do
|
8
|
+
raise "aaargh"
|
9
|
+
end
|
10
|
+
end.
|
11
|
+
should_run_tests(1).
|
12
|
+
and_fail
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_should_capture_exceptions_in_setups_as_failing_tests
|
16
|
+
context "Given a test with setup that fails" do
|
17
|
+
setup do
|
18
|
+
raise "aargh"
|
19
|
+
end
|
20
|
+
|
21
|
+
should "fail even though it would otherwise pass" do
|
22
|
+
assert true
|
23
|
+
end
|
24
|
+
end.
|
25
|
+
should_run_tests(1).
|
26
|
+
and_fail
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_capture_exceptions_in_teardowns_as_failing_tests
|
30
|
+
context "Given a test with teardown that fails" do
|
31
|
+
teardown do
|
32
|
+
raise "aargh"
|
33
|
+
end
|
34
|
+
|
35
|
+
should "fail even though it would otherwise pass" do
|
36
|
+
assert true
|
37
|
+
end
|
38
|
+
end.
|
39
|
+
should_run_tests(1).
|
40
|
+
and_fail
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,261 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class StartAndFinishTest < KintamaIntegrationTest
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
@order = sequence('order')
|
8
|
+
end
|
9
|
+
attr_reader :order
|
10
|
+
|
11
|
+
def test_should_call_any_on_start_block_when_running_a_context
|
12
|
+
spy = test_spy
|
13
|
+
|
14
|
+
spy.expects(:in_startup).in_sequence(order)
|
15
|
+
spy.expects(:in_test).in_sequence(order)
|
16
|
+
|
17
|
+
context "A context with an `on_start` block" do
|
18
|
+
on_start do
|
19
|
+
spy.in_startup
|
20
|
+
end
|
21
|
+
|
22
|
+
should "have run the `on_start` block before a test" do
|
23
|
+
spy.in_test
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_should_only_call_on_start_block_once_when_running_a_context
|
29
|
+
spy = test_spy
|
30
|
+
|
31
|
+
spy.expects(:in_startup).once.in_sequence(order)
|
32
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
33
|
+
|
34
|
+
context "A context with an `on_start` block" do
|
35
|
+
on_start do
|
36
|
+
spy.in_startup
|
37
|
+
end
|
38
|
+
|
39
|
+
should "have run the `on_start` block before a test" do
|
40
|
+
spy.in_test
|
41
|
+
end
|
42
|
+
|
43
|
+
should "not run that block again before a second test" do
|
44
|
+
spy.in_test
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_should_call_on_start_block_in_nested_contexts
|
50
|
+
spy = test_spy
|
51
|
+
|
52
|
+
spy.expects(:outer_startup).once.in_sequence(order)
|
53
|
+
spy.expects(:inner_startup).once.in_sequence(order)
|
54
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
55
|
+
|
56
|
+
context "A context with an `on_start` block" do
|
57
|
+
on_start do
|
58
|
+
spy.outer_startup
|
59
|
+
end
|
60
|
+
|
61
|
+
context "and another `on_start` block in a nested context" do
|
62
|
+
on_start do
|
63
|
+
spy.inner_startup
|
64
|
+
end
|
65
|
+
|
66
|
+
should "have run both `on_start` blocks before running any tests" do
|
67
|
+
spy.in_test
|
68
|
+
end
|
69
|
+
|
70
|
+
should "not run either `on_start` blocks before running subsequent tests" do
|
71
|
+
spy.in_test
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_should_call_any_on_finish_block_when_running_a_context
|
78
|
+
spy = test_spy
|
79
|
+
|
80
|
+
spy.expects(:in_test).in_sequence(order)
|
81
|
+
spy.expects(:in_finish).in_sequence(order)
|
82
|
+
|
83
|
+
context "A context with an `on_finish` block" do
|
84
|
+
should "not run the `on_finish` block before the test" do
|
85
|
+
spy.in_test
|
86
|
+
end
|
87
|
+
|
88
|
+
on_finish do
|
89
|
+
spy.in_finish
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_should_only_call_on_finish_block_once_when_running_a_context
|
95
|
+
spy = test_spy
|
96
|
+
|
97
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
98
|
+
spy.expects(:in_finish).once.in_sequence(order)
|
99
|
+
|
100
|
+
context "A context with an `on_finish` block" do
|
101
|
+
should "not be run after every test" do
|
102
|
+
spy.in_test
|
103
|
+
end
|
104
|
+
|
105
|
+
should "really not be run after every test" do
|
106
|
+
spy.in_test
|
107
|
+
end
|
108
|
+
|
109
|
+
on_finish do
|
110
|
+
spy.in_finish
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_should_only_call_on_finish_block_after_all_tests
|
116
|
+
spy = test_spy
|
117
|
+
|
118
|
+
spy.expects(:in_test).times(3).in_sequence(order)
|
119
|
+
spy.expects(:in_finish).once.in_sequence(order)
|
120
|
+
|
121
|
+
context "A context with an `on_finish` block" do
|
122
|
+
should "have not run the `on_finish` block before the first test" do
|
123
|
+
spy.in_test
|
124
|
+
end
|
125
|
+
|
126
|
+
should "have not run the `on_finish` block before the second test" do
|
127
|
+
spy.in_test
|
128
|
+
end
|
129
|
+
|
130
|
+
should "have not run the `on_finish` block before the third test" do
|
131
|
+
spy.in_test
|
132
|
+
end
|
133
|
+
|
134
|
+
on_finish do
|
135
|
+
spy.in_finish
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_should_call_on_finish_block_in_nested_contexts
|
141
|
+
spy = test_spy
|
142
|
+
|
143
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
144
|
+
spy.expects(:inner_finish).once.in_sequence(order)
|
145
|
+
spy.expects(:outer_finish).once.in_sequence(order)
|
146
|
+
|
147
|
+
context "A context with an `on_finish` block" do
|
148
|
+
context "and another `on_finish` block in a nested context" do
|
149
|
+
should "not run either `on_finish` blocks before running the first test" do
|
150
|
+
spy.in_test
|
151
|
+
end
|
152
|
+
|
153
|
+
should "not run either `on_start` blocks before running subsequent tests" do
|
154
|
+
spy.in_test
|
155
|
+
end
|
156
|
+
|
157
|
+
on_finish do
|
158
|
+
spy.inner_finish
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
on_finish do
|
163
|
+
spy.outer_finish
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_should_not_rely_on_any_ordering_to_register_on_start_or_on_finish_blocks
|
169
|
+
spy = test_spy
|
170
|
+
|
171
|
+
spy.expects(:on_start).in_sequence(order)
|
172
|
+
spy.expects(:in_test).in_sequence(order)
|
173
|
+
spy.expects(:on_finish).in_sequence(order)
|
174
|
+
|
175
|
+
context "A context with both an `on_start` and `on_finish` block" do
|
176
|
+
on_finish do
|
177
|
+
spy.on_finish
|
178
|
+
end
|
179
|
+
|
180
|
+
on_start do
|
181
|
+
spy.on_start
|
182
|
+
end
|
183
|
+
|
184
|
+
should "allow those blocks to be defined in any order, but run them correctly" do
|
185
|
+
spy.in_test
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_should_be_able_to_use_rspec_like_aliases
|
191
|
+
spy = test_spy
|
192
|
+
|
193
|
+
spy.expects(:in_before_all).in_sequence(order)
|
194
|
+
spy.expects(:in_test).in_sequence(order)
|
195
|
+
spy.expects(:in_after_all).in_sequence(order)
|
196
|
+
|
197
|
+
context "A context with `before_all` and `after_all` blocks" do
|
198
|
+
before_all do
|
199
|
+
spy.in_before_all
|
200
|
+
end
|
201
|
+
|
202
|
+
should "run exactly as `on_start` and `on_finish` blocks" do
|
203
|
+
spy.in_test
|
204
|
+
end
|
205
|
+
|
206
|
+
after_all do
|
207
|
+
spy.in_after_all
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_should_be_able_to_run_things_once_before_any_tests_run
|
213
|
+
spy = test_spy
|
214
|
+
|
215
|
+
spy.expects(:before_all_tests).once.in_sequence(order)
|
216
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
217
|
+
|
218
|
+
Kintama.reset
|
219
|
+
Kintama.on_start do
|
220
|
+
spy.before_all_tests
|
221
|
+
end
|
222
|
+
|
223
|
+
running_default_context "A context" do
|
224
|
+
should "have run the `before_all_tests` block before a test" do
|
225
|
+
spy.in_test
|
226
|
+
end
|
227
|
+
|
228
|
+
should "only run `before_all_tests` once" do
|
229
|
+
spy.in_test
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
def test_should_be_able_to_run_things_after_all_tests_have_run
|
235
|
+
spy = test_spy
|
236
|
+
|
237
|
+
spy.expects(:in_test).twice.in_sequence(order)
|
238
|
+
spy.expects(:after_all_tests).once.in_sequence(order)
|
239
|
+
|
240
|
+
Kintama.reset
|
241
|
+
Kintama.on_finish do
|
242
|
+
spy.after_all_tests
|
243
|
+
end
|
244
|
+
|
245
|
+
running_default_context "A context" do
|
246
|
+
should "have run the `before_all_tests` block before a test" do
|
247
|
+
spy.in_test
|
248
|
+
end
|
249
|
+
|
250
|
+
should "only run `after_all_tests` once all tests have finished" do
|
251
|
+
spy.in_test
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
private
|
257
|
+
|
258
|
+
def test_spy
|
259
|
+
stub('test spy', poke: nil)
|
260
|
+
end
|
261
|
+
end
|