mcmire-context 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,62 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class CustomTest < Test::Unit::TestCase
4
+ def setup
5
+ end
6
+ end
7
+
8
+ class TestContext < CustomTest
9
+ def test_can_write_tests_without_context
10
+ assert true
11
+ end
12
+
13
+ def test_context_aliases
14
+ [:context, :contexts, :describe, :describes, :group, :specify, :specifies].each do |method_alias|
15
+ assert self.class.respond_to?(method_alias)
16
+ end
17
+ end
18
+
19
+ context "A new context" do
20
+ context "when not nested" do
21
+ before do
22
+ @context = Class.new(Test::Unit::TestCase).context("When testing") do
23
+ def test_this_thing
24
+ true
25
+ end
26
+ end
27
+ end
28
+
29
+ it "should set the context name" do
30
+ assert_equal "When testing", @context.context_name
31
+ end
32
+
33
+ it "should be a Test::Unit::TestCase" do
34
+ assert @context.ancestors.include?(Test::Unit::TestCase)
35
+ end
36
+ end
37
+
38
+ context "when nested" do
39
+ before do
40
+ @context = self.class.context("and we're testing") do
41
+ def self.nested
42
+ @nested
43
+ end
44
+
45
+ @nested = context "should be nested" do
46
+ def test_this_thing
47
+ true
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ it "should set a nested context's name" do
54
+ assert_equal "A new context when nested and we're testing should be nested", @context.nested.context_name
55
+ end
56
+
57
+ it "should also be a Test::Unit::TestCase" do
58
+ assert @context.nested.ancestors.include?(Test::Unit::TestCase)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestCoreExt < Test::Unit::TestCase
4
+ context "A string" do
5
+ it "should be converted to method name" do
6
+ assert_equal 'this_is_fun', "this is fun".to_method_name
7
+ end
8
+
9
+ it "should be converted to class name" do
10
+ assert_equal 'ThisIsFunYes_', "this is fun... - (yes)??!".to_class_name
11
+ end
12
+
13
+ it "should be downcased when converted" do
14
+ assert_equal 'this_is_a_blast', "THIS is A BlASt".to_method_name
15
+ end
16
+
17
+ it "should change spaces to _" do
18
+ assert_equal 'this_has_been_great', "This has been great".to_method_name
19
+ end
20
+
21
+ it "should change dangerous punctuation to _" do
22
+ assert_equal 'no_really_this_was_good_', "No, really; this was #good!".to_method_name
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/context'
@@ -0,0 +1,224 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestLifecycle < Test::Unit::TestCase
4
+ before do
5
+ @inherited_before_each_var ||= 0
6
+ @inherited_before_each_var += 1
7
+ end
8
+
9
+ before do
10
+ @inherited_before_each_var ||= 0
11
+ @inherited_before_each_var_2 ||= 0
12
+ @inherited_before_each_var += 2
13
+ @inherited_before_each_var_2 += 1
14
+ end
15
+
16
+ after do
17
+ @inherited_after_each_var ||= 0
18
+ @inherited_after_each_var += 1
19
+ end
20
+
21
+ before :all do
22
+ @inherited_before_all_var ||= 0
23
+ @inherited_before_all_var += 1
24
+ end
25
+
26
+ after :all do
27
+ @inherited_after_all_var ||= 0
28
+ @inherited_after_all_var += 1
29
+ end
30
+
31
+ sample_test = context "lifecycle" do
32
+ attr_reader :inherited_before_each_var, :inherited_before_each_var_2, :inherited_after_each_var,
33
+ :after_each_var, :inherited_before_all_var, :inherited_after_all_var, :before_all_var, :after_all_var, :ivar,
34
+ :superclass_before_each_var, :superclass_after_each_var, :superclass_before_all_var, :superclass_after_all_var, :one, :two
35
+
36
+ before do
37
+ @inherited_before_each_var ||= 0
38
+ @inherited_before_each_var += 4
39
+ end
40
+
41
+ after do
42
+ @after_each_var ||= 0
43
+ @after_each_var += 1
44
+ end
45
+
46
+ before :all do
47
+ @before_all_var ||= 0
48
+ @before_all_var += 1
49
+ end
50
+
51
+ after :all do
52
+ @after_all_var ||= 0
53
+ @after_all_var += 1
54
+ end
55
+
56
+ after :a_method
57
+
58
+ test "foo" do
59
+ end
60
+ end
61
+
62
+ before do
63
+ @superclass_before_each_var ||= 0
64
+ @superclass_before_each_var += 1
65
+ end
66
+
67
+ after do
68
+ @superclass_after_each_var ||= 0
69
+ @superclass_after_each_var += 1
70
+ end
71
+
72
+ before :all do
73
+ @superclass_before_all_var ||= 0
74
+ @superclass_before_all_var += 1
75
+ end
76
+
77
+ after :all do
78
+ @superclass_after_all_var ||= 0
79
+ @superclass_after_all_var += 1
80
+ end
81
+
82
+ context "With before/after :each blocks" do
83
+ before do
84
+ @result = Test::Unit::TestResult.new
85
+ @test = sample_test.new("test: lifecycle foo")
86
+ @test.run(@result) { |inherited_after_each_var, v| }
87
+ end
88
+
89
+ it "it runs superclass before callbacks in order" do
90
+ assert_equal 1, @test.superclass_before_each_var
91
+ end
92
+
93
+ it "it runs inherited before callbacks in order" do
94
+ assert_equal 7, @test.inherited_before_each_var
95
+ end
96
+
97
+ it "it runs before callbacks in order" do
98
+ assert_equal 1, @test.inherited_before_each_var_2
99
+ end
100
+
101
+ it "it runs superclass after callbacks" do
102
+ assert_equal 1, @test.superclass_after_each_var
103
+ end
104
+
105
+ it "it runs inherited after callbacks" do
106
+ assert_equal 1, @test.inherited_after_each_var
107
+ end
108
+
109
+ it "it runs after callbacks" do
110
+ assert_equal 1, @test.after_each_var
111
+ end
112
+
113
+ it "it runs after callbacks specified with method names, instead of blocks" do
114
+ assert_equal "a method ran", @test.ivar
115
+ end
116
+ end
117
+
118
+ context "With before/after :all blocks" do
119
+ before do
120
+ @result = Test::Unit::TestResult.new
121
+ @suite = sample_test.suite
122
+ @suite.run(@result) { |inherited_after_each_var, v| }
123
+ @test = @suite.tests.first
124
+ end
125
+
126
+ it "it runs superclass before callbacks in order" do
127
+ assert_equal 1, @test.superclass_before_all_var
128
+ end
129
+
130
+ it "it runs inherited before callbacks in order" do
131
+ assert_equal 1, @test.inherited_before_all_var
132
+ end
133
+
134
+ it "it runs before callbacks in order" do
135
+ assert_equal 1, @test.before_all_var
136
+ end
137
+
138
+ it "it runs superclass after callbacks" do
139
+ assert_equal 1, @test.superclass_after_all_var
140
+ end
141
+
142
+ it "it runs inherited after callbacks" do
143
+ assert_equal 1, @test.inherited_after_all_var
144
+ end
145
+
146
+ it "it runs after callbacks" do
147
+ assert_equal 1, @test.after_all_var
148
+ end
149
+ end
150
+
151
+ # Test that we aren't stomping on defined seutp method
152
+ context "With setup/teardown methods" do
153
+ before do
154
+ @result = Test::Unit::TestResult.new
155
+ @test = sample_test.new("test: lifecycle foo")
156
+
157
+ @test.class.setup do
158
+ @one = 1
159
+ end
160
+
161
+ @test.class.teardown do
162
+ @two = 10
163
+ end
164
+
165
+ @test.run(@result) { |inherited_after_each_var, v| }
166
+ end
167
+
168
+ it "runs setup method block a la Shoulda" do
169
+ assert_equal 1, @test.one
170
+ end
171
+
172
+ it "runs setup method block and regular callbacks" do
173
+ assert_equal 7, @test.inherited_before_each_var
174
+ end
175
+
176
+ it "runs teardown method block a la Shoulda" do
177
+ assert_equal 10, @test.two
178
+ end
179
+
180
+ it "runs teardown method block and regular callbacks" do
181
+ assert_equal 1, @test.after_each_var
182
+ end
183
+ end
184
+
185
+ context "With the before option" do
186
+ setup do
187
+ @jvar = "override success!"
188
+ end
189
+
190
+ l = lambda { @ivar = "awesome" }
191
+ should "run the lambda", :before => l do
192
+ assert_equal "awesome", @ivar
193
+ end
194
+
195
+ l = lambda { @jvar = "should be overridden" }
196
+ should "run the lambda before the setup", :before => l do
197
+ assert_equal "override success!", @jvar
198
+ end
199
+ end
200
+
201
+ context "Before tests" do
202
+ # omg this is odd
203
+ setup do
204
+ assert_equal "yup, it's set", @ivar
205
+ end
206
+
207
+ before_test "run before the setup block" do
208
+ @ivar = "yup, it's set"
209
+ end
210
+ end
211
+
212
+ context "To be compatible with rails' expectations" do
213
+ setup :a_method
214
+
215
+ it "should accept a symbol for an argument to setup and run that method at setup time" do
216
+ assert_equal "a method ran", @ivar
217
+ end
218
+ end
219
+
220
+ protected
221
+ def a_method
222
+ @ivar = "a method ran"
223
+ end
224
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestNestedLifecycle < Test::Unit::TestCase
4
+ before :all do
5
+ @var = 0
6
+ end
7
+
8
+ before do
9
+ @var += 1
10
+ end
11
+ context "A new context" do
12
+ before do
13
+ @var += 1
14
+ end
15
+
16
+ before :all do
17
+ @var = 0
18
+ end
19
+
20
+ context "A nested context" do
21
+ before do
22
+ @var += 1
23
+ end
24
+
25
+ before :all do
26
+ @var += 1
27
+ end
28
+
29
+ context "A second, nested context" do
30
+ before do
31
+ @var += 1
32
+ end
33
+
34
+ before :all do
35
+ @var += 1
36
+ end
37
+
38
+ it "should set var" do
39
+ assert_equal 6, @var
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,116 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestTest < Test::Unit::TestCase
4
+ def test_shared_aliases
5
+ %w(shared_behavior share_as share_behavior_as shared_examples_for).each do |method_alias|
6
+ assert self.class.respond_to?(method_alias.to_sym)
7
+ end
8
+ end
9
+
10
+ def test_use_aliases
11
+ %w(uses it_should_behave_like behaves_like uses_examples_from).each do |method_alias|
12
+ assert self.class.respond_to?(method_alias.to_sym)
13
+ end
14
+ end
15
+
16
+ context "A shared group" do
17
+ context "creates a module" do
18
+ test "based on a string name" do
19
+ self.class.shared "things and fun" do
20
+ end
21
+
22
+ assert Object.const_get(:ThingsAndFun)
23
+ assert_equal Context::SharedBehavior, Object.const_get(:ThingsAndFun).class
24
+ end
25
+
26
+ it "based on a symbol name" do
27
+ self.class.shared :fun_and_games do
28
+ end
29
+
30
+ assert Object.const_get(:FunAndGames)
31
+ assert_equal Context::SharedBehavior, Object.const_get(:FunAndGames).class
32
+ end
33
+
34
+ it "unless the name is not a String or Symbol" do
35
+ assert_raise ArgumentError do
36
+ self.class.shared StandardError do
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ context "should be locatable" do
43
+ shared "hello sir" do
44
+ def amazing!
45
+ puts "back off!"
46
+ end
47
+ end
48
+
49
+ it "by a symbol" do
50
+ assert_nothing_raised do
51
+ self.class.use :hello_sir
52
+ end
53
+ end
54
+
55
+ shared "hello madam" do
56
+ def fantastic!
57
+ puts "you know me!"
58
+ end
59
+ end
60
+
61
+ it "by a string" do
62
+ assert_nothing_raised do
63
+ self.class.use "hello madam"
64
+ end
65
+ end
66
+
67
+ shared "hi dog" do
68
+ def stupendous!
69
+ puts "hoo hah!"
70
+ end
71
+ end
72
+
73
+ it "by direct reference" do
74
+ assert_nothing_raised do
75
+ self.class.use HiDog
76
+ end
77
+ end
78
+ end
79
+
80
+ context "should include its shared behavior" do
81
+ shared "Athos" do
82
+ it "en_garde" do
83
+ true
84
+ end
85
+ end
86
+
87
+ it "by a symbol" do
88
+ self.class.use :athos
89
+
90
+ assert send("test: A shared group should include its shared behavior en_garde")
91
+ end
92
+
93
+ shared "Porthos" do
94
+ def parry!
95
+ true
96
+ end
97
+ end
98
+
99
+ it "by a string" do
100
+ self.class.use "Porthos"
101
+ assert parry!
102
+ end
103
+
104
+ shared "Aramis" do
105
+ def lunge!
106
+ true
107
+ end
108
+ end
109
+
110
+ it "by direct reference" do
111
+ self.class.use Aramis
112
+ assert lunge!
113
+ end
114
+ end
115
+ end
116
+ end