smoke 0.5.10 → 0.5.11

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 10
2
+ :patch: 11
3
3
  :major: 0
4
4
  :minor: 5
@@ -14,6 +14,28 @@ module Smoke
14
14
  super((names << "joined").join("_").to_sym, &block)
15
15
  end
16
16
 
17
+ # Rename sources immediately after they've been joined together
18
+ # Usage:
19
+ # Smoke.join(:delicious, :twitter, :flickr) do
20
+ # name :web_stream
21
+ # end
22
+ def name(rename = nil)
23
+ return @name if rename.nil?
24
+ Smoke.rename(@name => rename)
25
+ end
26
+
27
+ def method_missing(symbol, *args, &block)
28
+ ivar = "@#{symbol}"
29
+
30
+ unless args.empty?
31
+ sources.each do |source|
32
+ source.last.instance_variable_set(ivar, args.pop)
33
+ end
34
+ end
35
+
36
+ return self
37
+ end
38
+
17
39
  protected
18
40
  def sources
19
41
  Smoke.active_sources.find_all{|k, v| @names.include?(k) }
@@ -22,6 +44,7 @@ module Smoke
22
44
  def dispatch
23
45
  # Recall dispatch
24
46
  sources.each do |source|
47
+ source.last.send(:prepare!)
25
48
  source.last.send(:dispatch) if source.last.respond_to?(:dispatch)
26
49
  end
27
50
 
@@ -11,9 +11,7 @@ describe "Join" do
11
11
  before do
12
12
  @source = Smoke.join(:a, :b)
13
13
  end
14
-
15
- # it_should_behave_like "all sources"
16
-
14
+
17
15
  it "should be named in a_b_joined" do
18
16
  Smoke[:a_b_joined].should be_an_instance_of(Smoke::Source::Join)
19
17
  end
@@ -34,6 +32,20 @@ describe "Join" do
34
32
  Smoke[:a_b_joined].should respond_to(:output)
35
33
  end
36
34
 
35
+ describe "renaming, within a block" do
36
+ it "should respond to name" do
37
+ Smoke[:a_b_joined].should respond_to(:name)
38
+ end
39
+
40
+ it "should rename the source" do
41
+ Smoke.join(:b, :c) do
42
+ name :bee_and_cee
43
+ end
44
+
45
+ Smoke[:bee_and_cee].should_not be_nil
46
+ end
47
+ end
48
+
37
49
  describe "dispatching" do
38
50
  before :all do
39
51
  FakeWeb.register_uri("http://photos.tld", :response => File.join(SPEC_DIR, 'supports', 'flickr-photo.json'))
@@ -48,6 +60,35 @@ describe "Join" do
48
60
  Smoke[:should_dispatch].should_receive(:dispatch)
49
61
  Smoke.join(:a, :should_dispatch).output
50
62
  end
63
+
64
+ it "should call prepare blocks before dispatching" do
65
+ Smoke.data(:prepare_dispatch) do
66
+ prepare do
67
+ url "http://photos.tld"
68
+ end
69
+
70
+ path :photos, :photo
71
+ end
72
+
73
+ Smoke.join(:prepare_dispatch) do
74
+ name :always_be_prepared
75
+ end
76
+
77
+ lambda { Smoke.always_be_prepared.output }.should_not raise_error(ArgumentError)
78
+ end
79
+ end
80
+
81
+ describe "variable injection" do
82
+ before :all do
83
+ TestSource.source :variable
84
+ TestSource.source :injection
85
+ Smoke.join(:variable, :injection)
86
+ end
87
+
88
+ it "should inject variables to its source items" do
89
+ Smoke.variable_injection_joined.some_ivar("value")
90
+ Smoke.variable.some_ivar.should == "value"
91
+ end
51
92
  end
52
93
  end
53
94
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smoke
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.10
4
+ version: 0.5.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Schwarz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-12 00:00:00 +10:00
12
+ date: 2009-09-18 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -160,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  requirements: []
161
161
 
162
162
  rubyforge_project:
163
- rubygems_version: 1.3.5
163
+ rubygems_version: 1.3.2
164
164
  signing_key:
165
165
  specification_version: 3
166
166
  summary: smoke is a Ruby based DSL that allows you to query web services such as YQL, RSS / Atom and JSON or XML in an elegant manner.