test_unit-given 0.0.1 → 0.1.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/README.rdoc CHANGED
@@ -81,27 +81,8 @@ If you don't want to extend our base class, you can mix in the features explicit
81
81
  }
82
82
  end
83
83
 
84
- You can also strictly enforce the use in your tests:
85
84
 
86
- require 'test/unit/given/strict'
87
-
88
- class CircleTest < Test::Unit::TestCase
89
- include Test::Unit::Given::Strict
90
- include Test::Unit::Given::TestThat
91
-
92
- test_that {
93
- @circle = Circle.new(10)
94
- When {
95
- # this causes an error, because there's no Given
96
- @area = @circle.area
97
- }
98
- Then {
99
- assert_equal 314,@area
100
- }
101
- }
102
- end
103
-
104
- Finally, you can re-use blocks:
85
+ Finally, you can re-use blocks, and use And to create richer expressions:
105
86
 
106
87
  class CircleTest < Test::Unit::Given::TestCase
107
88
 
@@ -120,14 +101,18 @@ Finally, you can re-use blocks:
120
101
  test_that {
121
102
  Given circle_with_radius(10)
122
103
  When get_radius
104
+ And {
105
+ @diameter = @circle.diameter
106
+ }
123
107
  Then area_should_be(314)
108
+ And {
109
+ assert_equal 20,@diameter
110
+ }
124
111
  }
125
112
  end
126
113
 
127
114
  === What about block-based assertions, like +assert_raises+
128
115
 
129
- You can use the non-strict version like so:
130
-
131
116
  class CircleTest < Test::Unit::Given::TestCase
132
117
 
133
118
  test_that "there is no diameter method" do
@@ -144,8 +129,6 @@ You can use the non-strict version like so:
144
129
  end
145
130
  end
146
131
 
147
- This won't work in strict mode for now.
148
-
149
132
  == WTF? Why?
150
133
 
151
134
  Just because you're using Test::Unit doesn't mean you can't write fluent, easy to understand tests.
data/Rakefile CHANGED
@@ -23,5 +23,6 @@ RDoc::Task.new do |rd|
23
23
  rd.title = 'Methadone - Power Up your Command Line Apps'
24
24
  rd.markup = "tomdoc"
25
25
  end
26
+ CLOBBER << 'coverage'
26
27
 
27
28
  task :default => :test
@@ -67,6 +67,33 @@ module Test
67
67
  Given(existing_block,&block)
68
68
  end
69
69
 
70
+ # Public: Continue the previous Given/When/Then in a new block. The reason
71
+ # you might do this is if you wanted to use the existing block form of a
72
+ # Given/When/Then, but also need to do something custom. This allows you to
73
+ # write your test more fluently.
74
+ #
75
+ # existing_block - a callable object (e.g. a Proc) that will be called immediately
76
+ # by this Then. If nil, &block is expected to be passed
77
+ # block - a block given to this call that will be executed immediately
78
+ # by this Then. If existing_block is non-nil, this is ignored
79
+ #
80
+ # Examples
81
+ #
82
+ # then_block = Then {
83
+ # assert_equal "bar",@foo
84
+ # }
85
+ # # => executes block and returns it
86
+ # Then then_block
87
+ # And {
88
+ # assert_equal, "quux",@blah
89
+ # }
90
+ # # => executes the block again
91
+ #
92
+ # Returns the block that was executed
93
+ def And(existing_block=nil,&block)
94
+ Given(existing_block,&block)
95
+ end
96
+
70
97
  private
71
98
 
72
99
  def call_block_param_or_block_given(existing_block,&block)
@@ -1,7 +1,7 @@
1
1
  module Test
2
2
  module Unit
3
3
  module Given
4
- VERSION = "0.0.1"
4
+ VERSION = "0.1.0"
5
5
  end
6
6
  end
7
7
  end
@@ -7,12 +7,21 @@ class TestSimpleGiven < Test::Unit::Given::TestCase
7
7
  Given {
8
8
  @x = nil
9
9
  }
10
+ And {
11
+ @y = nil
12
+ }
10
13
  When {
11
14
  @x = 4
12
15
  }
16
+ And {
17
+ @y = 10
18
+ }
13
19
  Then {
14
20
  assert_equal 4,@x
15
21
  }
22
+ And {
23
+ assert_equal 10,@y
24
+ }
16
25
  end
17
26
 
18
27
  def test_cannot_use_locals
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_unit-given
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-21 00:00:00.000000000Z
12
+ date: 2011-10-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &70106635648040 !ruby/object:Gem::Requirement
16
+ requirement: &70295687955360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70106635648040
24
+ version_requirements: *70295687955360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70106635647620 !ruby/object:Gem::Requirement
27
+ requirement: &70295687954940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70106635647620
35
+ version_requirements: *70295687954940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: simplecov
38
- requirement: &70106635647200 !ruby/object:Gem::Requirement
38
+ requirement: &70295687954520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70106635647200
46
+ version_requirements: *70295687954520
47
47
  description: We don't need no stinkin' RSpec! Get all the fluency you want in your
48
48
  Test::Unit tests, with no magic required, using straight Ruby syntax
49
49
  email:
@@ -60,13 +60,11 @@ files:
60
60
  - Rakefile
61
61
  - lib/test/unit/given.rb
62
62
  - lib/test/unit/given/simple.rb
63
- - lib/test/unit/given/strict.rb
64
63
  - lib/test/unit/given/test_case.rb
65
64
  - lib/test/unit/given/test_that.rb
66
65
  - lib/test/unit/given/version.rb
67
66
  - test/bootstrap.rb
68
67
  - test/test_simple_given.rb
69
- - test/test_strict_given.rb
70
68
  - test/test_test_that.rb
71
69
  - test_unit-given.gemspec
72
70
  homepage: ''
@@ -96,5 +94,4 @@ summary: Use Given/When/Then in your Test::Unit tests
96
94
  test_files:
97
95
  - test/bootstrap.rb
98
96
  - test/test_simple_given.rb
99
- - test/test_strict_given.rb
100
97
  - test/test_test_that.rb
@@ -1,34 +0,0 @@
1
- module Test
2
- module Unit
3
- module Given
4
- # A strict Given/When/Then that will generate errors if you
5
- # omit any one of these in your test.
6
- module Strict
7
- include Simple
8
-
9
- def setup
10
- @__next = :given
11
- end
12
-
13
- # Set up the conditions for the test, see Test::Unit::Given::Simple::Given
14
- def Given(existing_block=nil,&block)
15
- @__next = :when
16
- call_block_param_or_block_given(existing_block,&block)
17
- end
18
- # Execute the code under test, failing if no Given was called first, see Test::Unit::Given::Simple::When
19
- def When(existing_block=nil,&block)
20
- raise "No Given block?" unless @__next == :when
21
- @__next = :then
22
- call_block_param_or_block_given(existing_block,&block)
23
- end
24
- # Verify the results of the test, failing if no When was called first, see Test::Unit::Given::Simple::Then
25
- def Then(existing_block=nil,&block)
26
- raise "No When block?" unless @__next == :then
27
- @__next = :given
28
- call_block_param_or_block_given(existing_block,&block)
29
- end
30
- end
31
- end
32
- end
33
- end
34
-
@@ -1,54 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/given/strict'
3
-
4
- class TestStrictGiven < Test::Unit::TestCase
5
- include Test::Unit::Given::Strict
6
-
7
- def test_wrong_order_then_first
8
- assert_raises RuntimeError do
9
- Then {
10
- @x = 4
11
- }
12
- end
13
- end
14
-
15
- def test_basics
16
- Given {
17
- @x = nil
18
- }
19
- When {
20
- @x = 4
21
- }
22
- Then {
23
- assert_equal 4,@x
24
- }
25
- end
26
-
27
- def test_wrong_order
28
- assert_raises RuntimeError do
29
- When {
30
- @x = 4
31
- }
32
- end
33
- end
34
-
35
- def test_can_reuse_blocks
36
- invocations = 0
37
- x_is_nil = Given {
38
- @x = nil
39
- invocations += 1
40
- }
41
- x_is_assigned_to_four = When {
42
- @x = 4
43
- invocations += 1
44
- }
45
- x_should_be_four = Then {
46
- assert_equal 4,@x
47
- invocations += 1
48
- }
49
- Given x_is_nil
50
- When x_is_assigned_to_four
51
- Then x_should_be_four
52
- assert_equal 6,invocations
53
- end
54
- end