smoke 0.5.15 → 0.5.16
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/VERSION.yml +1 -1
- data/lib/smoke/origin.rb +2 -2
- data/lib/smoke/output/xml.rb +4 -2
- data/spec/smoke/origin_spec.rb +12 -2
- data/spec/smoke/output/xml_spec.rb +20 -1
- metadata +2 -2
data/VERSION.yml
CHANGED
data/lib/smoke/origin.rb
CHANGED
@@ -6,7 +6,7 @@ module Smoke
|
|
6
6
|
def initialize(name, &block)
|
7
7
|
raise StandardError, "Sources must have a name" unless name
|
8
8
|
@name = name
|
9
|
-
@items, @prepare, @transformation = [], [], []
|
9
|
+
@items, @prepare, @requirements, @transformation = [], [], [], []
|
10
10
|
|
11
11
|
activate!
|
12
12
|
instance_eval(&block) if block_given?
|
@@ -130,7 +130,7 @@ module Smoke
|
|
130
130
|
# # End use
|
131
131
|
# Smoke[:twitter].username(:benschwarz).output
|
132
132
|
def prepare(args = {}, &block)
|
133
|
-
@requirements = args.delete(:require)
|
133
|
+
@requirements = [args.delete(:require)].flatten
|
134
134
|
|
135
135
|
raise ArgumentError, "requires a block" unless block_given?
|
136
136
|
@prepare << block
|
data/lib/smoke/output/xml.rb
CHANGED
@@ -6,8 +6,10 @@ module Smoke
|
|
6
6
|
xml.items {
|
7
7
|
items.each do |item|
|
8
8
|
xml.item {
|
9
|
-
item.
|
10
|
-
|
9
|
+
%w(id type class).each{|m| item["#{m}_".to_sym] = item.delete(m.to_sym) }
|
10
|
+
|
11
|
+
item.each do |k, v|
|
12
|
+
xml.send(k, v)
|
11
13
|
end
|
12
14
|
}
|
13
15
|
end
|
data/spec/smoke/origin_spec.rb
CHANGED
@@ -233,8 +233,12 @@ describe Smoke::Origin do
|
|
233
233
|
prepare :require => [:username, :feed] do
|
234
234
|
url "http://domain.tld/#{feed}/#{username}/feed.json", :type => :json
|
235
235
|
end
|
236
|
-
|
237
|
-
|
236
|
+
end
|
237
|
+
|
238
|
+
Smoke.data :single_requirement do
|
239
|
+
prepare :require => :username do
|
240
|
+
url "http://domain.tld/#{feed}/#{username}/feed.json", :type => :json
|
241
|
+
end
|
238
242
|
end
|
239
243
|
end
|
240
244
|
|
@@ -246,6 +250,12 @@ describe Smoke::Origin do
|
|
246
250
|
Smoke.requirements.requirements.should include(:username)
|
247
251
|
Smoke.requirements.requirements.should include(:feed)
|
248
252
|
Smoke.requirements.requirements.length.should == 2
|
253
|
+
Smoke.requirements.requirements.should be_an_instance_of(Array)
|
254
|
+
end
|
255
|
+
|
256
|
+
it "should have a single requirement, within an array" do
|
257
|
+
Smoke.single_requirement.requirements.should be_an_instance_of(Array)
|
249
258
|
end
|
259
|
+
|
250
260
|
end
|
251
261
|
end
|
@@ -3,7 +3,10 @@ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper.rb")
|
|
3
3
|
describe Smoke::Output::XML do
|
4
4
|
before do
|
5
5
|
@tree = :tree
|
6
|
-
@items = [
|
6
|
+
@items = [
|
7
|
+
{:id => 1, :class => "first", :type => "mammal", :animal => "monkey"},
|
8
|
+
{:id => 2, :class => "second", :type => "mammal", :animal => "elephant"}
|
9
|
+
]
|
7
10
|
@xml = Smoke::Output::XML.generate(@tree, @items)
|
8
11
|
@document = Nokogiri::XML(@xml)
|
9
12
|
end
|
@@ -21,4 +24,20 @@ describe Smoke::Output::XML do
|
|
21
24
|
item.content.should =~ /monkey/
|
22
25
|
end
|
23
26
|
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "Smoke XML output with real data" do
|
30
|
+
before :all do
|
31
|
+
@url = "http://domain.tld/feed.json"
|
32
|
+
FakeWeb.register_uri(@url, :response => File.join(SPEC_DIR, 'supports', 'flickr-photo.json'))
|
33
|
+
|
34
|
+
Smoke.data :real_xml_output do
|
35
|
+
url "http://domain.tld/feed.json", :type => :json
|
36
|
+
path :photos, :photo
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should not error" do
|
41
|
+
Smoke.real_xml_output.output(:xml).should include "<?xml"
|
42
|
+
end
|
24
43
|
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.
|
4
|
+
version: 0.5.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Schwarz
|
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
requirements: []
|
173
173
|
|
174
174
|
rubyforge_project:
|
175
|
-
rubygems_version: 1.3.
|
175
|
+
rubygems_version: 1.3.5
|
176
176
|
signing_key:
|
177
177
|
specification_version: 3
|
178
178
|
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.
|