on 0.3.0 → 0.3.1

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.
@@ -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