Roman2K-web-service 0.1.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.
- data/LICENSE +7 -0
- data/README.mdown +147 -0
- data/Rakefile +39 -0
- data/lib/web_service.rb +36 -0
- data/lib/web_service/attribute_accessors.rb +147 -0
- data/lib/web_service/core_ext.rb +36 -0
- data/lib/web_service/crud_operations.rb +114 -0
- data/lib/web_service/named_request_methods.rb +19 -0
- data/lib/web_service/remote_collection.rb +155 -0
- data/lib/web_service/resource.rb +177 -0
- data/lib/web_service/response_handling.rb +148 -0
- data/lib/web_service/site.rb +40 -0
- data/test/test_helper.rb +59 -0
- data/test/web_service/attribute_accessors_test.rb +236 -0
- data/test/web_service/core_ext_test.rb +13 -0
- data/test/web_service/crud_operations_test.rb +61 -0
- data/test/web_service/named_request_methods_test.rb +34 -0
- data/test/web_service/remote_collection_test.rb +114 -0
- data/test/web_service/resource_test.rb +200 -0
- data/test/web_service/response_handling_test.rb +66 -0
- data/test/web_service/site_test.rb +62 -0
- data/web-service.gemspec +44 -0
- metadata +137 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WebService::RemoteCollectionTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@resource_details = Object.new
|
6
|
+
@collection = WebService::RemoteCollection.new(@resource_details)
|
7
|
+
end
|
8
|
+
|
9
|
+
def res
|
10
|
+
@resource_details
|
11
|
+
end
|
12
|
+
|
13
|
+
# private
|
14
|
+
|
15
|
+
def test_build_url_for
|
16
|
+
build = lambda { |*args| @collection.ieval { build_url_for(*args) } }
|
17
|
+
|
18
|
+
def res.site; WebService::Site.new("http://example.com") end
|
19
|
+
def res.singleton; false end
|
20
|
+
def res.element_name; "foo" end
|
21
|
+
|
22
|
+
# Collection
|
23
|
+
assert_equal "/foos", build[nil, nil].path
|
24
|
+
|
25
|
+
# Member
|
26
|
+
assert_equal "/foos/1", build[1, nil].path
|
27
|
+
|
28
|
+
# Member (escaped)
|
29
|
+
assert_equal "/foos/example%2ecom", build["example.com", nil].path
|
30
|
+
|
31
|
+
# Member action
|
32
|
+
assert_equal "/foos/1/action", build[1, :action].path
|
33
|
+
|
34
|
+
# Singleton
|
35
|
+
def res.singleton; true end
|
36
|
+
assert_equal "/foo", build[nil, nil].path
|
37
|
+
|
38
|
+
# Non-singleton
|
39
|
+
assert_raise ArgumentError, "singleton resources do not require an ID parameter" do
|
40
|
+
build[1, nil]
|
41
|
+
end
|
42
|
+
def res.singleton; false end
|
43
|
+
|
44
|
+
# Nested collection
|
45
|
+
url = @collection.with_nesting([["bar", 1]]).ieval { build_url_for(nil, nil) }
|
46
|
+
assert_equal "/bars/1/foos", url.path
|
47
|
+
|
48
|
+
# Nested collection missing the ID for the association
|
49
|
+
assert_raise RuntimeError, "attribute `bar_id' is missing" do
|
50
|
+
@collection.with_nesting([["bar", nil]]).ieval { build_url_for(nil, nil) }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# private # utilities
|
55
|
+
|
56
|
+
def test_recognize
|
57
|
+
# Single pattern
|
58
|
+
hash, string, symbol = @collection.instance_eval { recognize([Hash, /^a/, Symbol], "abc", {:options => true}) }
|
59
|
+
assert_equal({:options => true}, hash)
|
60
|
+
assert_equal("abc", string)
|
61
|
+
assert_equal(nil, symbol)
|
62
|
+
|
63
|
+
# Multiple patterns
|
64
|
+
symbol, integer = @collection.instance_eval { recognize([Symbol, [/^\d+$/, Integer]], 3, :other) }
|
65
|
+
assert_equal 3, integer
|
66
|
+
assert_equal :other, symbol
|
67
|
+
|
68
|
+
symbol, integer = @collection.instance_eval { recognize([Symbol, [/^\d+$/, Integer]], "3", :other) }
|
69
|
+
assert_equal "3", integer
|
70
|
+
assert_equal :other, symbol
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class WebService::RemoteCollection::ResponseDataUnserializationTest < Test::Unit::TestCase
|
75
|
+
class Response < Struct.new(:content_type, :body, :parse_count)
|
76
|
+
include WebService::RemoteCollection::ResponseDataUnserialization
|
77
|
+
|
78
|
+
def parse_data
|
79
|
+
self.parse_count ||= 0
|
80
|
+
self.parse_count += 1
|
81
|
+
super
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_data
|
86
|
+
#################
|
87
|
+
# Blank => nil
|
88
|
+
#################
|
89
|
+
response = Response.new
|
90
|
+
response.body = " "
|
91
|
+
assert_equal(nil, response.data)
|
92
|
+
|
93
|
+
# Cache even nil
|
94
|
+
response.data
|
95
|
+
response.data
|
96
|
+
assert_equal(1, response.parse_count)
|
97
|
+
|
98
|
+
#########
|
99
|
+
# JSON
|
100
|
+
#########
|
101
|
+
response = Response.new
|
102
|
+
response.content_type = "application/json"
|
103
|
+
response.body = "{}"
|
104
|
+
assert_equal({}, response.data)
|
105
|
+
|
106
|
+
#########
|
107
|
+
# XML
|
108
|
+
#########
|
109
|
+
response = Response.new
|
110
|
+
response.content_type = "application/xml"
|
111
|
+
response.body = "<entries type='array'></entries>"
|
112
|
+
assert_equal({'entries' => []}, response.data)
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WebService::ResourceTest < Test::Unit::TestCase
|
4
|
+
@@anonymous = Class.new(WebService::Resource)
|
5
|
+
@@anonymous_with_named_parent = Class.new(Foo)
|
6
|
+
|
7
|
+
# class
|
8
|
+
|
9
|
+
def test_element_name
|
10
|
+
# Anonymous class
|
11
|
+
assert_raise NameError do
|
12
|
+
@@anonymous.instance_eval { element_name }
|
13
|
+
end
|
14
|
+
|
15
|
+
# Named class
|
16
|
+
assert_equal "foo", Foo.instance_eval { element_name }
|
17
|
+
|
18
|
+
# Anonymous class with named parent
|
19
|
+
assert_equal "foo", @@anonymous_with_named_parent.instance_eval { element_name }
|
20
|
+
|
21
|
+
# Anonymous class with explicit element name
|
22
|
+
anonymous = Class.new(WebService::Resource)
|
23
|
+
anonymous.element_name = "bar"
|
24
|
+
assert_equal "bar", anonymous.element_name
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_belongs_to
|
28
|
+
# Saving
|
29
|
+
bar = Bar.new("foo" => Foo.new("id" => 1), "a" => "b")
|
30
|
+
|
31
|
+
expect_request bar,
|
32
|
+
:post, "/foos/1/bars", :body => {"bar" => {"foo_id" => 1, "a" => "b"}},
|
33
|
+
:return => {:status => "201", :body => {"bar" => {"c" => "d"}}}
|
34
|
+
|
35
|
+
bar.save
|
36
|
+
assert_equal({"c" => "d"}, bar.attributes)
|
37
|
+
|
38
|
+
# Fetching
|
39
|
+
expect_request Bar, :get, "/bars", :return => {:status => "200", :body => []}
|
40
|
+
Bar.all
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_has_many
|
44
|
+
foo = Foo.new("id" => 1)
|
45
|
+
|
46
|
+
expect_creation_on = lambda do |collection|
|
47
|
+
expect_request collection,
|
48
|
+
:post, "/foos/1/bars", :body => {"bar" => {"foo_id" => 1, "a" => "b"}},
|
49
|
+
:return => {:status => "201", :body => {"bar" => {"c" => "d"}}}
|
50
|
+
end
|
51
|
+
|
52
|
+
# Instantiation
|
53
|
+
bar = foo.bars.build("a" => "b")
|
54
|
+
assert_equal({"foo_id" => 1, "a" => "b"}, bar.attributes)
|
55
|
+
|
56
|
+
# Fetching
|
57
|
+
expect_request foo.bars,
|
58
|
+
:get, "/foos/1/bars",
|
59
|
+
:return => {:status => "200", :body => []}
|
60
|
+
foo.bars.all
|
61
|
+
|
62
|
+
# Creation (bars.create)
|
63
|
+
expect_creation_on[foo.bars]
|
64
|
+
foo.bars.create("a" => "b")
|
65
|
+
|
66
|
+
# Creation (bars.build.save)
|
67
|
+
bar = foo.bars.build "a" => "b"
|
68
|
+
expect_creation_on[bar]
|
69
|
+
bar.save
|
70
|
+
|
71
|
+
# Arbitrary actions
|
72
|
+
expect_request foo.bars,
|
73
|
+
:delete, "/foos/1/bars/99",
|
74
|
+
:return => {:status => "200"}
|
75
|
+
foo.bars.delete(99)
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_has_many=
|
79
|
+
foo = Foo.new("id" => 1)
|
80
|
+
foo.bars.expects(:cache=).with("collection")
|
81
|
+
foo.bars = "collection"
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_has_one
|
85
|
+
# Fetching
|
86
|
+
foo = Foo.new("id" => 1)
|
87
|
+
expect_request foo.instance_eval { association_collection_from_name(:bar, :singleton => true) },
|
88
|
+
:get, "/foos/1/bar",
|
89
|
+
:return => {:status => "200", :body => {"bar" => {"a" => "b"}}}
|
90
|
+
assert_equal Bar.new("a" => "b"), foo.bar
|
91
|
+
|
92
|
+
# Building + saving = creating
|
93
|
+
foo = Foo.new("id" => 1)
|
94
|
+
bar = foo.build_bar("a" => "b")
|
95
|
+
expect_request bar,
|
96
|
+
:post, "/foos/1/bar", :body => {"bar" => {"foo_id" => 1, "a" => "b"}},
|
97
|
+
:return => {:status => "201", :body => {"bar" => {"c" => "d"}}}
|
98
|
+
assert_equal Bar.new("c" => "d"), bar.save
|
99
|
+
|
100
|
+
# Plural-form resource class name
|
101
|
+
foo = Foo.new("id" => 1)
|
102
|
+
expect_request foo.instance_eval { association_collection_from_name(:details, :singleton => true) },
|
103
|
+
:get, "/foos/1/details",
|
104
|
+
:return => {:status => "200", :body => {"details" => {"a" => "b"}}}
|
105
|
+
assert_equal Details.new("a" => "b"), foo.details
|
106
|
+
|
107
|
+
# Constant name resolution
|
108
|
+
assert_raise NameError, /uninitialized constant Things\b/ do
|
109
|
+
Class.new(Foo) { has_one :things }.new.things
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
# public
|
114
|
+
|
115
|
+
def test_to_hash
|
116
|
+
res = WebService::Resource.new(:foo => :bar)
|
117
|
+
assert_equal res.attributes, res.to_hash
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_to_s
|
121
|
+
assert_equal "Foo(new)", Foo.new.to_s
|
122
|
+
assert_equal "Foo[1]", Foo.new('id' => 1).to_s
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_inspect
|
126
|
+
assert_equal "#<Foo(new)>", Foo.new.inspect
|
127
|
+
assert_equal "#<Foo[1]>", Foo.new('id' => 1).inspect
|
128
|
+
assert_equal "#<Foo[1] bar=2.0 baz=\"abcdefghijklmnopqrstuv...\">", Foo.new('id' => 1, 'bar' => 2.0, 'baz' => Array('a'..'z').join).inspect
|
129
|
+
|
130
|
+
# with custom to_s
|
131
|
+
foo = Foo.new
|
132
|
+
def foo.to_s; "custom" end
|
133
|
+
assert_equal "#<Foo(new)>", foo.inspect
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_save
|
137
|
+
#############
|
138
|
+
# Creation
|
139
|
+
#############
|
140
|
+
foo = Foo.new("a" => "b")
|
141
|
+
|
142
|
+
expect_request foo,
|
143
|
+
:post, "/foos", :body => {"foo" => {"a" => "b"}},
|
144
|
+
:return => {:status => '201', :body => {"foo" => {"c" => "d"}}}
|
145
|
+
|
146
|
+
foo.save
|
147
|
+
assert_equal({"c" => "d"}, foo.attributes)
|
148
|
+
|
149
|
+
# Accepted
|
150
|
+
foo = Foo.new("a" => "b")
|
151
|
+
expect_request foo,
|
152
|
+
:post, "/foos", :body => {"foo" => {"a" => "b"}},
|
153
|
+
:return => {:status => '202', :body => " "}
|
154
|
+
foo.save
|
155
|
+
assert_equal({"a" => "b"}, foo.attributes)
|
156
|
+
|
157
|
+
###########
|
158
|
+
# Update
|
159
|
+
###########
|
160
|
+
foo = Foo.new("id" => 1, "a" => "b")
|
161
|
+
|
162
|
+
expect_request foo,
|
163
|
+
:put, "/foos/1", :body => {"foo" => {"id" => 1, "a" => "b"}},
|
164
|
+
:return => {:status => "200", :body => {"foo" => {"c" => "d"}}}
|
165
|
+
|
166
|
+
foo.save
|
167
|
+
assert_equal({"c" => "d"}, foo.attributes)
|
168
|
+
|
169
|
+
##############
|
170
|
+
# Singleton
|
171
|
+
##############
|
172
|
+
type_foo = Class.new(Foo) { self.singleton = true }
|
173
|
+
|
174
|
+
# Creation
|
175
|
+
foo = type_foo.new
|
176
|
+
expect_request foo,
|
177
|
+
:post, "/foo", :body => {"foo" => {}},
|
178
|
+
:return => {:status => "201", :body => {"foo" => {}}}
|
179
|
+
foo.save
|
180
|
+
|
181
|
+
# Update
|
182
|
+
foo = type_foo.new("id" => 1)
|
183
|
+
expect_request foo,
|
184
|
+
:put, "/foo", :body => {"foo" => {"id" => 1}},
|
185
|
+
:return => {:status => "200", :body => {"foo" => {}}}
|
186
|
+
foo.save
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_reload
|
190
|
+
foo = Foo.new("id" => 1, "a" => "b")
|
191
|
+
expect_request foo,
|
192
|
+
:get, "/foos/1",
|
193
|
+
:return => {:status => 200, :body => {"foo" => {"id" => 1, "b" => "c"}}}
|
194
|
+
|
195
|
+
result = foo.reload
|
196
|
+
|
197
|
+
assert_equal Foo.new("id" => 1, "b" => "c"), foo
|
198
|
+
assert_equal foo.object_id, result.object_id
|
199
|
+
end
|
200
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WebService::ResponseHandlingTest < Test::Unit::TestCase
|
4
|
+
M = WebService::ResponseHandling
|
5
|
+
|
6
|
+
def test_connection_error_message
|
7
|
+
error_type = M::ConnectionError
|
8
|
+
|
9
|
+
# Can't use stub since stub(:method => :result) doesn't respond_to?(:method)
|
10
|
+
response = Object.new
|
11
|
+
def response.code; 400 end
|
12
|
+
|
13
|
+
# Nil response / No custom message
|
14
|
+
err = error_type.new(nil)
|
15
|
+
assert_equal "Failed", err.to_s
|
16
|
+
|
17
|
+
# Nil response + Custom message
|
18
|
+
err = error_type.new(nil, "message")
|
19
|
+
assert_equal "Failed: message", err.to_s
|
20
|
+
|
21
|
+
# No response message / No custom message
|
22
|
+
err = error_type.new(response)
|
23
|
+
assert_equal "Failed with 400", err.to_s
|
24
|
+
|
25
|
+
# Nil response message / No custom message
|
26
|
+
def response.message; nil end
|
27
|
+
err = error_type.new(response)
|
28
|
+
assert_equal "Failed with 400", err.to_s
|
29
|
+
|
30
|
+
# Blank response message / No custom message
|
31
|
+
def response.message; "" end
|
32
|
+
err = error_type.new(response)
|
33
|
+
assert_equal "Failed with 400", err.to_s
|
34
|
+
|
35
|
+
# Response message / No custom message
|
36
|
+
def response.message; "Bad Request" end
|
37
|
+
err = error_type.new(response)
|
38
|
+
assert_equal "Failed with 400 (Bad Request)", err.to_s
|
39
|
+
|
40
|
+
# Response message + Custom message
|
41
|
+
err = error_type.new(response, "message")
|
42
|
+
assert_equal "Failed with 400 (Bad Request): message", err.to_s
|
43
|
+
end
|
44
|
+
|
45
|
+
# protected
|
46
|
+
|
47
|
+
def test_handle_response
|
48
|
+
handler = Object.new.extend M
|
49
|
+
|
50
|
+
assert_raise_with_code = lambda do |code, exc|
|
51
|
+
response = stub(:code => code)
|
52
|
+
assert_raise(exc) do
|
53
|
+
handler.instance_eval { handle_response(response) }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
assert_raise_with_code[406, M::NotAcceptable]
|
58
|
+
assert_raise_with_code[502, M::BadGateway]
|
59
|
+
assert_raise_with_code[503, M::ServiceUnavailable]
|
60
|
+
assert_raise_with_code[504, M::GatewayTimeout]
|
61
|
+
|
62
|
+
response = stub(:code => 200)
|
63
|
+
result = handler.instance_eval { handle_response(response) }
|
64
|
+
assert_equal response, response
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class WebService::SiteTest < Test::Unit::TestCase
|
4
|
+
include WebService
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@site = Site.new("http://example")
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_url
|
11
|
+
assert_equal "http://example", @site.url().to_s
|
12
|
+
assert_equal "http://example", @site.url(:prefix => true).to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_credentials
|
16
|
+
site = Site.new("http://example")
|
17
|
+
assert_equal nil, site.credentials
|
18
|
+
|
19
|
+
site = Site.new("http://foo@example")
|
20
|
+
assert_equal ["foo", nil], site.credentials
|
21
|
+
|
22
|
+
site = Site.new("http://foo:bar@example")
|
23
|
+
assert_equal ["foo", "bar"], site.credentials
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_url_for
|
27
|
+
assert_equal "http://example/foo", @site.url_for("/foo").to_s
|
28
|
+
|
29
|
+
@site.expects(:url).with(:public => true).returns URI("http://public")
|
30
|
+
assert_equal "http://public/foo", @site.url_for("/foo", :public => true).to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_root
|
34
|
+
assert_equal "http://example/", @site.root.to_s
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
module Rails
|
39
|
+
def self.env
|
40
|
+
@env ||= Object.new
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class WebService::Site::SwitchTest < Test::Unit::TestCase
|
45
|
+
include WebService
|
46
|
+
|
47
|
+
def setup
|
48
|
+
@site = Site::Switch.new("http://prod", "http://dev")
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_url
|
52
|
+
env = Rails.env
|
53
|
+
|
54
|
+
def env.production?; true end
|
55
|
+
assert_equal "http://prod", @site.url.to_s
|
56
|
+
|
57
|
+
def env.production?; false end
|
58
|
+
assert_equal "http://dev", @site.url.to_s
|
59
|
+
assert_equal "http://prod", @site.url(:public => true).to_s
|
60
|
+
assert_equal "http://dev", @site.url.to_s
|
61
|
+
end
|
62
|
+
end
|
data/web-service.gemspec
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{web-service}
|
5
|
+
s.version = "0.1.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Roman Le N\303\251grate"]
|
9
|
+
s.date = %q{2009-03-17}
|
10
|
+
s.description = %q{REST client; an alternative to ActiveResource}
|
11
|
+
s.email = %q{roman.lenegrate@gmail.com}
|
12
|
+
s.extra_rdoc_files = ["lib/web_service/attribute_accessors.rb", "lib/web_service/core_ext.rb", "lib/web_service/crud_operations.rb", "lib/web_service/named_request_methods.rb", "lib/web_service/remote_collection.rb", "lib/web_service/resource.rb", "lib/web_service/response_handling.rb", "lib/web_service/site.rb", "lib/web_service.rb", "LICENSE", "README.mdown"]
|
13
|
+
s.files = ["lib/web_service/attribute_accessors.rb", "lib/web_service/core_ext.rb", "lib/web_service/crud_operations.rb", "lib/web_service/named_request_methods.rb", "lib/web_service/remote_collection.rb", "lib/web_service/resource.rb", "lib/web_service/response_handling.rb", "lib/web_service/site.rb", "lib/web_service.rb", "LICENSE", "Manifest", "Rakefile", "README.mdown", "test/test_helper.rb", "test/web_service/attribute_accessors_test.rb", "test/web_service/core_ext_test.rb", "test/web_service/crud_operations_test.rb", "test/web_service/named_request_methods_test.rb", "test/web_service/remote_collection_test.rb", "test/web_service/resource_test.rb", "test/web_service/response_handling_test.rb", "test/web_service/site_test.rb", "web-service.gemspec"]
|
14
|
+
s.has_rdoc = true
|
15
|
+
s.homepage = %q{https://github.com/Roman2K/web-service}
|
16
|
+
s.rdoc_options = ["--main", "README.mdown", "--inline-source", "--line-numbers", "--charset", "UTF-8"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{web-service}
|
19
|
+
s.rubygems_version = %q{1.3.1}
|
20
|
+
s.summary = %q{REST client; an alternative to ActiveResource}
|
21
|
+
s.test_files = ["test/test_helper.rb", "test/web_service/attribute_accessors_test.rb", "test/web_service/core_ext_test.rb", "test/web_service/crud_operations_test.rb", "test/web_service/named_request_methods_test.rb", "test/web_service/remote_collection_test.rb", "test/web_service/resource_test.rb", "test/web_service/response_handling_test.rb", "test/web_service/site_test.rb"]
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 2
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.2.2"])
|
29
|
+
s.add_runtime_dependency(%q<class-inheritable-attributes>, [">= 0"])
|
30
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
31
|
+
s.add_development_dependency(%q<test-unit-ext>, [">= 0"])
|
32
|
+
else
|
33
|
+
s.add_dependency(%q<activesupport>, [">= 2.2.2"])
|
34
|
+
s.add_dependency(%q<class-inheritable-attributes>, [">= 0"])
|
35
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
36
|
+
s.add_dependency(%q<test-unit-ext>, [">= 0"])
|
37
|
+
end
|
38
|
+
else
|
39
|
+
s.add_dependency(%q<activesupport>, [">= 2.2.2"])
|
40
|
+
s.add_dependency(%q<class-inheritable-attributes>, [">= 0"])
|
41
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
42
|
+
s.add_dependency(%q<test-unit-ext>, [">= 0"])
|
43
|
+
end
|
44
|
+
end
|