on 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,6 +32,18 @@ class On
32
32
  # on.call :success, :some, :args
33
33
  # assert_callback recorder, :success, :some, :args
34
34
  # end
35
+ #
36
+ # it "checks record args in a block" do
37
+ # on = On.new(:success, :failure) do |result|
38
+ # recorder.record_block
39
+ # recorder.record_callback(result, :success, :failure)
40
+ # end
41
+ # on.call :success, :some, :args
42
+ # assert_callback recorder, :success do |some, args|
43
+ # assert_equal :some, some
44
+ # assert_equal :args, args
45
+ # end
46
+ # end
35
47
  # end
36
48
  module TestHelper
37
49
  # Asserts that a certain callbacks has been recorded by +recorder+.
@@ -41,10 +53,16 @@ class On
41
53
  # assert_callback recorder, :success, "some", "args"
42
54
  #
43
55
  def assert_callback(recorder, name, *args)
56
+ raise ArgumentError, "Provide args or block but not both" if block_given? && !args.empty?
57
+
44
58
  callback = recorder.last_record
45
59
  assert callback, "No callbacks found"
46
60
  assert_equal name, callback.name, "Callback was #{callback}"
47
- assert_equal args, callback.args, "Callback was #{callback}"
61
+ if block_given?
62
+ yield *callback.args
63
+ else
64
+ assert_equal args, callback.args, "Callback was #{callback}"
65
+ end
48
66
  end
49
67
 
50
68
  # Asserts that *no* callbacks has been recorder by +recorder+.
@@ -101,11 +119,15 @@ class On
101
119
  def record_callback(on, *names)
102
120
  names.each do |name|
103
121
  on.on name do |*args|
104
- @callbacks << Callback.new(name, args)
122
+ callback_recorded(name, args)
105
123
  end
106
124
  end
107
125
  end
108
126
 
127
+ def callback_recorded(name, args)
128
+ @callbacks << Callback.new(name, args)
129
+ end
130
+
109
131
  # Short-hand for &+recorder.record_all+.
110
132
  def to_proc
111
133
  record_all
data/lib/on/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class On
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -0,0 +1,105 @@
1
+ require 'helper'
2
+
3
+ require 'on'
4
+
5
+ class OnTestHelperTest < Testem
6
+ context "assert_callback" do
7
+ test "match w/o args" do
8
+ record :foo
9
+ assert_callback recorder, :foo
10
+ end
11
+
12
+ test "match with args" do
13
+ record :foo, :bar, :baz
14
+ assert_callback recorder, :foo, :bar, :baz
15
+ end
16
+
17
+ test "match with block" do
18
+ called = false
19
+ record :foo, :bar, :baz
20
+ assert_callback recorder, :foo do |bar, baz|
21
+ called = true
22
+ assert_equal :bar, bar
23
+ assert_equal :baz, baz
24
+ end
25
+ assert called
26
+ end
27
+
28
+ test "no callbacks found" do
29
+ e = assert_raises MiniTest::Assertion do
30
+ assert_callback recorder, :foo
31
+ end
32
+ assert_equal "No callbacks found", e.message
33
+ end
34
+
35
+ test "no callbacks found anymore" do
36
+ record :foo
37
+ assert_callback recorder, :foo
38
+ e = assert_raises MiniTest::Assertion do
39
+ assert_callback recorder, :foo
40
+ end
41
+ assert_equal "No callbacks found", e.message
42
+ end
43
+
44
+ test "mismatch name" do
45
+ record :foo
46
+
47
+ e = assert_raises MiniTest::Assertion do
48
+ assert_callback recorder, :bar
49
+ end
50
+ assert_match /Expected: :bar\n\s*Actual: :foo/, e.message
51
+ end
52
+
53
+ test "mismatch args" do
54
+ record :foo, :bar
55
+ e = assert_raises MiniTest::Assertion do
56
+ assert_callback recorder, :foo, :baz
57
+ end
58
+ assert_match /Expected: \[:baz\]\n\s*Actual: \[:bar\]/, e.message
59
+ end
60
+
61
+ test "mismatch block" do
62
+ called = false
63
+ record :foo, :bar
64
+ e = assert_raises MiniTest::Assertion do
65
+ assert_callback recorder, :foo do |bar|
66
+ called = true
67
+ assert_equal :baz, bar
68
+ end
69
+ end
70
+ assert_match /Expected: :baz\n\s*Actual: :bar/, e.message
71
+ assert called
72
+ end
73
+
74
+ test "fail on args and block" do
75
+ called = false
76
+ e = assert_raises ArgumentError do
77
+ assert_callback recorder, :foo, :bar do
78
+ called = true
79
+ end
80
+ end
81
+ assert_equal "Provide args or block but not both", e.message
82
+ refute called
83
+ end
84
+ end
85
+
86
+ context "refute_callbacks" do
87
+ test "nothing recorded" do
88
+ refute_callbacks recorder
89
+ end
90
+
91
+ test "fail when something recorded" do
92
+ record :foo
93
+ e = assert_raises MiniTest::Assertion do
94
+ refute_callbacks recorder
95
+ end
96
+ assert_match /Something has been recorded/, e.message
97
+ end
98
+ end
99
+
100
+ private
101
+
102
+ def record(name, *args)
103
+ recorder.callback_recorded(name, args)
104
+ end
105
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 'on'
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-04 00:00:00.000000000 Z
12
+ date: 2012-12-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -97,6 +97,7 @@ files:
97
97
  - test/integration_test.rb
98
98
  - test/on_proc_test.rb
99
99
  - test/on_test.rb
100
+ - test/on_test_helper_test.rb
100
101
  homepage: https://github.com/neopoly/on
101
102
  licenses: []
102
103
  post_install_message:
@@ -111,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
112
  version: '0'
112
113
  segments:
113
114
  - 0
114
- hash: -2276299258964583998
115
+ hash: 1483705294558873466
115
116
  required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  none: false
117
118
  requirements:
@@ -120,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
121
  version: '0'
121
122
  segments:
122
123
  - 0
123
- hash: -2276299258964583998
124
+ hash: 1483705294558873466
124
125
  requirements: []
125
126
  rubyforge_project:
126
127
  rubygems_version: 1.8.24
@@ -132,3 +133,4 @@ test_files:
132
133
  - test/integration_test.rb
133
134
  - test/on_proc_test.rb
134
135
  - test/on_test.rb
136
+ - test/on_test_helper_test.rb