wires-test 0.1.3 → 0.1.4

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/wires/test.rb +71 -73
  3. metadata +4 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b19ee2c3fdcbfd811e3f05cc2816446d3a7b1191
4
- data.tar.gz: b0e8297e79d2ad56763979b51fa0921a044ab16b
3
+ metadata.gz: 9a3c4bf5ece47b1d797b828be77984f4891b4c9a
4
+ data.tar.gz: 67706a912177f2717174f1b0f2ca248df8cc4f0a
5
5
  SHA512:
6
- metadata.gz: 9e77daf69bb48615b8d5a1b611a4ccb4c5ca4d09dbd728e64f237d03981fd5600ca0584ab25590803691764e0c4cdac8a4cff64054745128eb812ce7e97ceb61
7
- data.tar.gz: 53ee036fad0eae79d1be14a25ee418a324a36978ad003e111f46c2bce6fbce197cc3b5616c506e5f052b9d0338ce2b60d87a94c1d7a1a630037e45ac5500a203
6
+ metadata.gz: 413d663728075ee10b62f392291def4612af0a612bb21dd3d6a032581158e36c5552a1c9d2d3ae84a7f43376bf88b681d307b19fa40c6378dff70777ef1386f9
7
+ data.tar.gz: e04e33bb642574f228c67bb0e53b40a41135e2a7ac15a8f866b0f0501339756ef9bbd19d37322b09f3b664474e59a766e0a4cccc100618db4250e629273ee0ab
data/lib/wires/test.rb CHANGED
@@ -1,28 +1,25 @@
1
1
 
2
- # Encase all code in a HEREDOC string until the...
3
- <<'-END OF IMPLEMENTATION'
4
-
5
2
  module Wires
6
3
  module Test
7
4
  module Helper
8
5
 
9
- attr_reader :AFFIX_wires_events
6
+ attr_reader :wires_events
10
7
 
11
- def AFFIX_wires_test_setup
12
- @AFFIX_wires_events = []
13
- @AFFIX_wires_test_fire_hook = \
8
+ def wires_test_setup
9
+ @wires_events = []
10
+ @wires_test_fire_hook = \
14
11
  Channel.add_hook(:@before_fire) { |e,c|
15
- @AFFIX_wires_events << [e,c]
12
+ @wires_events << [e,c]
16
13
  }
17
14
  end
18
15
 
19
- def AFFIX_wires_test_teardown
16
+ def wires_test_teardown
20
17
  Wires::Hub.join_children
21
- @AFFIX_wires_events = nil
22
- Channel.remove_hook(:@before_fire, &@AFFIX_wires_test_fire_hook)
18
+ @wires_events = nil
19
+ Channel.remove_hook(:@before_fire, &@wires_test_fire_hook)
23
20
  end
24
21
 
25
- def AFFIX_fired?(event, channel=:__no_channel_was_specified__,
22
+ def fired?(event, channel=:__no_channel_was_specified__,
26
23
  clear:false, exclusive:false, plurality:nil,
27
24
  exact_event:false, exact_channel:false,
28
25
  &block)
@@ -49,7 +46,7 @@ module Wires
49
46
  "#{key_event.inspect}"
50
47
  end
51
48
 
52
- results = @AFFIX_wires_events.select { |e,c|
49
+ results = @wires_events.select { |e,c|
53
50
  c = Channel[c]
54
51
  (exact_event ? (key_event == e) : (key_event =~ e)) && (!key_chan ||
55
52
  (exact_channel ? (key_chan == c) : (key_chan =~ c)))
@@ -58,20 +55,20 @@ module Wires
58
55
  # If passed a block, use it to determine
59
56
  results.select! { |e,c| yield e,c } if block_given?
60
57
 
61
- clear_AFFIX_fired if clear
58
+ clear_fired if clear
62
59
 
63
60
  return false if results.empty?
64
- return false if exclusive and (@AFFIX_wires_events != results)
61
+ return false if exclusive and (@wires_events != results)
65
62
  return false if plurality and (results.size != plurality)
66
63
 
67
64
  true
68
65
  end
69
66
 
70
- def clear_AFFIX_fired
71
- @AFFIX_wires_events.clear
67
+ def clear_fired
68
+ @wires_events.clear
72
69
  end
73
70
 
74
- def AFFIX_wires_test_channel_from_kwargs **kwargs
71
+ def wires_test_channel_from_kwargs **kwargs
75
72
  # Get channel_name from keyword arguments
76
73
  channel_name = \
77
74
  kwargs.has_key?(:channel_name) ?
@@ -90,7 +87,7 @@ module Wires
90
87
  end
91
88
 
92
89
 
93
- shared_context "with AFFIX wires", :AFFIX_wires=>true do
90
+ shared_context "with wires", :wires=>true do
94
91
  unless ancestors.include? Wires::Convenience
95
92
  include Wires::Convenience
96
93
  end
@@ -98,52 +95,75 @@ shared_context "with AFFIX wires", :AFFIX_wires=>true do
98
95
  unless ancestors.include? Wires::Test::Helper
99
96
  include Wires::Test::Helper
100
97
  around do |example|
101
- AFFIX_wires_test_setup
98
+ wires_test_setup
102
99
  example.run
103
- AFFIX_wires_test_teardown
100
+ wires_test_teardown
104
101
  end
105
102
  end
106
103
 
107
104
  extend Wires::Test::RSpec::ExampleGroupMethods
108
105
  end
109
106
 
110
- shared_context "with AFFIX wires stimulus" do |event, **kwargs|
111
- include_context "with AFFIX wires"
107
+ shared_context "with wires stimulus" do |event, **kwargs|
108
+ include_context "with wires"
112
109
 
113
110
  before do
114
- channel_obj = AFFIX_wires_test_channel_from_kwargs **kwargs
111
+ channel_obj = wires_test_channel_from_kwargs **kwargs
115
112
  channel_obj.fire event, blocking:true
116
113
  end
117
114
  end
118
115
 
119
116
 
120
- ::RSpec::Matchers.define :have_AFFIX_fired do
121
- match do |_|
122
- *args, fulfilling = process_expected(*expected)
123
- AFFIX_fired? *args, &fulfilling
117
+ ::RSpec::Matchers.define :have_fired do |*args|
118
+ def where(&block)
119
+ raise ArgumentError, "No block passed to #should have_fired(...).where; "\
120
+ "be sure to use {} instead of do/end so that the "\
121
+ "block binds syntactically to #where instead of "\
122
+ "binding to #should." if block.nil?
123
+ @fulfilling_block = proc{|*args| block.call(*args); true}
124
+ self
125
+ end
126
+
127
+ def fulfilling(&block)
128
+ raise ArgumentError, "No block passed to #should have_fired(...).fulfilling; "\
129
+ "be sure to use {} instead of do/end so that the "\
130
+ "block binds syntactically to #fulfilling instead of "\
131
+ "binding to #should." if block.nil?
132
+ @fulfilling_block = block
133
+ self
134
+ end
135
+
136
+ def once; exactly(1).times; self end
137
+ def twice; exactly(2).times; self end
138
+ def exactly(n) @plurality = n; self end
139
+ def times; @use_plurality = true; self end
140
+
141
+ match do
142
+ plur = @use_plurality ? @plurality : nil
143
+ fired? *args, plurality:plur, &@fulfilling_block
124
144
  end
125
145
 
126
146
  description do
127
- event, channel, _ = process_expected(*expected)
147
+ event, channel, *rest = args
128
148
 
129
149
  str = "have fired #{event.inspect}"
130
150
  str += " on #{channel.inspect}" if channel
131
151
  str
132
152
  end
133
153
 
134
- failure_message_for_should do |*args, &blk|
154
+ failure_message_for_should do
155
+ "expected to #{description}\n"+
135
156
  "received: \n #{actual_events.map(&:inspect).join("\n ")}"
136
157
  end
137
158
 
138
- failure_message_for_should_not do |*args, &blk|
159
+ failure_message_for_should_not do
160
+ "expected not to #{description}\n"+
139
161
  "received: \n #{actual_events.map(&:inspect).join("\n ")}"
140
162
  end
141
163
 
142
164
  def actual_events
143
- matcher_execution_context.instance_variable_get :@AFFIX_wires_events
165
+ matcher_execution_context.instance_variable_get :@wires_events
144
166
  end
145
-
146
- def process_expected(*args, fulfilling:nil); [*args, fulfilling] end
147
167
  end
148
168
 
149
169
 
@@ -152,27 +172,35 @@ module Wires
152
172
  module RSpec
153
173
  module ExampleGroupMethods
154
174
 
155
- def with_AFFIX_stimulus(event, **kwargs, &block)
156
- context "(with AFFIX stimulus #{event.inspect})" do
157
- include_context "with AFFIX wires stimulus", event, **kwargs
175
+ def with_stimulus(event, **kwargs, &block)
176
+ context "(with stimulus #{event.inspect})" do
177
+ include_context "with wires stimulus", event, **kwargs
158
178
  instance_eval &block
159
179
  end
160
180
  end
161
181
 
162
- def it_AFFIX_fires(event, **kwargs, &block)
182
+ def it_fires(event, **kwargs, &block)
163
183
  context "fires #{event.inspect}" do
164
184
  specify do
165
- channel_obj = AFFIX_wires_test_channel_from_kwargs **kwargs
166
- should have_AFFIX_fired event, channel_obj, fulfilling:block
185
+ channel_obj = wires_test_channel_from_kwargs **kwargs
186
+ if block.nil?
187
+ should have_fired(event, channel_obj)
188
+ else
189
+ should have_fired(event, channel_obj).fulfilling(&block)
190
+ end
167
191
  end
168
192
  end
169
193
  end
170
194
 
171
- def it_AFFIX_fires_no(event, **kwargs, &block)
195
+ def it_fires_no(event, **kwargs, &block)
172
196
  context "fires no #{event.inspect}" do
173
197
  specify do
174
- channel_obj = AFFIX_wires_test_channel_from_kwargs **kwargs
175
- should_not have_AFFIX_fired event, channel_obj, fulfilling:block
198
+ channel_obj = wires_test_channel_from_kwargs **kwargs
199
+ if block.nil?
200
+ should_not have_fired(event, channel_obj)
201
+ else
202
+ should_not have_fired(event, channel_obj).fulfilling(&block)
203
+ end
176
204
  end
177
205
  end
178
206
  end
@@ -181,33 +209,3 @@ module Wires
181
209
  end
182
210
  end
183
211
  end
184
-
185
- -END OF IMPLEMENTATION
186
- .gsub(/AFFIX[_ ]/, "") # Remove all AFFIX markers (see Wires::Test.build_alt)
187
- .tap { |code| eval code } # Eval the cleaned code in
188
-
189
-
190
-
191
- module Wires
192
- module Test
193
- # Build an alternate version of Test for an alternate Wires module
194
- # Optionally, specify an affix to be used in method names;
195
- # This helps to differentiate from the original Helper
196
- def self.build_alt(wires_module_path, affix:nil)
197
- affix = affix ? affix.to_s+'_' : ''
198
-
199
- [__FILE__] # List of files to mutate and eval
200
- .map { |file| File.read file }
201
- .each do |code|
202
-
203
- code =~ /(?<='-END OF IMPLEMENTATION').*?(?=-END OF IMPLEMENTATION)/m
204
- code = $&
205
-
206
- code.gsub! /Wires/, "#{wires_module_path}"
207
- code.gsub! /AFFIX[_ ]/, affix
208
-
209
- eval code
210
- end
211
- end
212
- end
213
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wires-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe McIlvain
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-22 00:00:00.000000000 Z
11
+ date: 2014-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wires
@@ -72,8 +72,8 @@ executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
- - lib/wires/test.rb
76
75
  - LICENSE
76
+ - lib/wires/test.rb
77
77
  homepage: https://github.com/jemc/wires-test/
78
78
  licenses:
79
79
  - Copyright 2013 Joe McIlvain. All rights reserved.
@@ -94,9 +94,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.1.11
97
+ rubygems_version: 2.2.0
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: wires-test
101
101
  test_files: []
102
- has_rdoc: