dupe 1.0.0 → 1.0.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.
@@ -19,22 +19,24 @@ module ActiveResource #:nodoc:
|
|
19
19
|
response = request(:get, path, build_request_headers(headers, :get, self.site.merge(path)))
|
20
20
|
ActiveResource::HttpMock.delete_mock(:get, path)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
if ActiveResource::VERSION::MAJOR == 3 && ActiveResource::VERSION::MINOR >= 1
|
24
24
|
response
|
25
25
|
else
|
26
26
|
format.decode(response.body)
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def post(path, body = '', headers = {}) #:nodoc:
|
31
31
|
begin
|
32
32
|
response = request(:post, path, body.to_s, build_request_headers(headers, :post, self.site.merge(path)))
|
33
|
-
|
33
|
+
|
34
34
|
# if the request threw an exception
|
35
35
|
rescue
|
36
|
-
|
37
|
-
|
36
|
+
unless body.blank?
|
37
|
+
resource_hash = Hash.from_xml(body)
|
38
|
+
resource_hash = resource_hash[resource_hash.keys.first]
|
39
|
+
end
|
38
40
|
resource_hash = {} unless resource_hash.kind_of?(Hash)
|
39
41
|
begin
|
40
42
|
mocked_response, new_path = Dupe.network.request(:post, path, resource_hash)
|
@@ -55,11 +57,11 @@ module ActiveResource #:nodoc:
|
|
55
57
|
end
|
56
58
|
response
|
57
59
|
end
|
58
|
-
|
60
|
+
|
59
61
|
def put(path, body = '', headers = {}) #:nodoc:
|
60
62
|
begin
|
61
63
|
response = request(:put, path, body.to_s, build_request_headers(headers, :put, self.site.merge(path)))
|
62
|
-
|
64
|
+
|
63
65
|
# if the request threw an exception
|
64
66
|
rescue
|
65
67
|
unless body.blank?
|
@@ -96,7 +98,7 @@ module ActiveResource #:nodoc:
|
|
96
98
|
mock.delete(path, {}, nil, 200)
|
97
99
|
end
|
98
100
|
response = request(:delete, path, build_request_headers(headers, :delete, self.site.merge(path)))
|
99
|
-
|
101
|
+
|
100
102
|
ActiveResource::HttpMock.delete_mock(:delete, path)
|
101
103
|
response
|
102
104
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe ActiveResource::Connection do
|
3
|
+
describe ActiveResource::Connection do
|
4
4
|
before do
|
5
5
|
Dupe.reset
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
describe "#get" do
|
9
9
|
before do
|
10
10
|
@book = Dupe.create :book, :title => 'Rooby', :label => 'rooby'
|
@@ -13,12 +13,12 @@ describe ActiveResource::Connection do
|
|
13
13
|
self.format = :xml
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
17
|
-
it "should pass a request off to the Dupe network if the original request failed" do
|
16
|
+
|
17
|
+
it "should pass a request off to the Dupe network if the original request failed" do
|
18
18
|
Dupe.network.should_receive(:request).with(:get, '/books.xml').once.and_return(Dupe.find(:books).to_xml(:root => 'books'))
|
19
19
|
books = Book.find(:all)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
it "should parse the xml and turn the result into active resource objects" do
|
23
23
|
books = Book.find(:all)
|
24
24
|
books.length.should == 1
|
@@ -27,7 +27,7 @@ describe ActiveResource::Connection do
|
|
27
27
|
books.first.label.should == 'rooby'
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
describe "#post" do
|
32
32
|
before do
|
33
33
|
@book = Dupe.create :book, :label => 'rooby', :title => 'Rooby'
|
@@ -36,25 +36,25 @@ describe ActiveResource::Connection do
|
|
36
36
|
self.site = 'http://www.example.com'
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should pass a request off to the Dupe network if the original request failed" do
|
41
41
|
Dupe.network.should_receive(:request).with(:post, '/books.xml', Hash.from_xml(@book.to_xml(:root => 'book'))["book"] ).once
|
42
42
|
book = Book.create({:label => 'rooby', :title => 'Rooby'})
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should parse the xml and turn the result into active resource objects" do
|
46
46
|
book = Book.create({:label => 'rooby', :title => 'Rooby'})
|
47
47
|
book.id.should == 2
|
48
48
|
book.title.should == 'Rooby'
|
49
49
|
book.label.should == 'rooby'
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
it "should make ActiveResource throw an unprocessable entity exception if our Post mock throws a Dupe::UnprocessableEntity exception" do
|
53
53
|
Post %r{/books\.xml} do |post_data|
|
54
54
|
raise Dupe::UnprocessableEntity.new(:title => "must be present.") unless post_data["title"]
|
55
55
|
Dupe.create :book, post_data
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
b = Book.create
|
59
59
|
b.new?.should be_true
|
60
60
|
b.errors.should_not be_empty
|
@@ -62,6 +62,24 @@ describe ActiveResource::Connection do
|
|
62
62
|
b.new?.should be_false
|
63
63
|
b.errors.should be_empty
|
64
64
|
end
|
65
|
+
|
66
|
+
it "should handle request with blank body" do
|
67
|
+
class SubscribableBook < ActiveResource::Base
|
68
|
+
self.site = 'http://www.example.com'
|
69
|
+
self.format = :xml
|
70
|
+
|
71
|
+
def self.send_update_emails
|
72
|
+
post(:send_update_emails)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
Post %r{/subscribable_books/send_update_emails\.xml} do |post_data|
|
77
|
+
Dupe.create :email, post_data
|
78
|
+
end
|
79
|
+
|
80
|
+
response = SubscribableBook.send_update_emails
|
81
|
+
response.code.should == 201
|
82
|
+
end
|
65
83
|
end
|
66
84
|
|
67
85
|
describe "#put" do
|
@@ -72,7 +90,7 @@ describe ActiveResource::Connection do
|
|
72
90
|
end
|
73
91
|
@ar_book = Book.find(1)
|
74
92
|
end
|
75
|
-
|
93
|
+
|
76
94
|
it "should pass a request off to the Dupe network if the original request failed" do
|
77
95
|
Dupe.network.should_receive(:request).with(:put, '/books/1.xml', Hash.from_xml(@book.merge(:title => "Rails!").to_xml(:root => 'book'))["book"].symbolize_keys!).once.and_return([nil, '/books/1.xml'])
|
78
96
|
@ar_book.title = 'Rails!'
|
@@ -100,13 +118,13 @@ describe ActiveResource::Connection do
|
|
100
118
|
@e = Dupe.create :expirable_book, :title => 'Impermanence', :state => 'active'
|
101
119
|
end
|
102
120
|
|
103
|
-
it "should handle no-content responses" do
|
121
|
+
it "should handle no-content responses" do
|
104
122
|
response = ExpirableBook.find(@e.id).expire_copyrights!
|
105
123
|
response.body.should be_blank
|
106
124
|
response.code.to_s.should == "204"
|
107
125
|
end
|
108
126
|
end
|
109
|
-
|
127
|
+
|
110
128
|
it "should parse the xml and turn the result into active resource objects" do
|
111
129
|
@book.title.should == "Rooby"
|
112
130
|
@ar_book.title = "Rails!"
|
@@ -119,13 +137,13 @@ describe ActiveResource::Connection do
|
|
119
137
|
@book.id.should == 1
|
120
138
|
@book.label.should == 'rooby'
|
121
139
|
end
|
122
|
-
|
140
|
+
|
123
141
|
it "should make ActiveResource throw an unprocessable entity exception if our Put mock throws a Dupe::UnprocessableEntity exception" do
|
124
142
|
Put %r{/books/(\d+)\.xml} do |id, put_data|
|
125
143
|
raise Dupe::UnprocessableEntity.new(:title => " must be present.") unless put_data[:title]
|
126
144
|
Dupe.find(:book) {|b| b.id == id.to_i}.merge!(put_data)
|
127
145
|
end
|
128
|
-
|
146
|
+
|
129
147
|
@ar_book.title = nil
|
130
148
|
@ar_book.save.should == false
|
131
149
|
@ar_book.errors[:base].should_not be_empty
|
@@ -147,12 +165,12 @@ describe ActiveResource::Connection do
|
|
147
165
|
end
|
148
166
|
@ar_book = Book.find(1)
|
149
167
|
end
|
150
|
-
|
168
|
+
|
151
169
|
it "should pass a request off to the Dupe network if the original request failed" do
|
152
170
|
Dupe.network.should_receive(:request).with(:delete, '/books/1.xml').once
|
153
171
|
@ar_book.destroy
|
154
172
|
end
|
155
|
-
|
173
|
+
|
156
174
|
it "trigger a Dupe.delete to delete the mocked resource from the duped database" do
|
157
175
|
Dupe.find(:books).length.should == 1
|
158
176
|
@ar_book.destroy
|
data/spec/lib_specs/dupe_spec.rb
CHANGED
@@ -193,7 +193,7 @@ describe Dupe do
|
|
193
193
|
post_mock.class.should == Dupe::Network::PostMock
|
194
194
|
post_mock.url_pattern.should == %r{^/books\.xml$}
|
195
195
|
resp, url = post_mock.mocked_response('/books.xml', {:title => "Rooby"})
|
196
|
-
resp.should == Dupe.find(:book).to_xml(:root => 'book')
|
196
|
+
Hash.from_xml(resp).should == Hash.from_xml(Dupe.find(:book).to_xml(:root => 'book'))
|
197
197
|
url.should == "/books/1.xml"
|
198
198
|
end
|
199
199
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dupe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Parker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2012-02-05 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activeresource
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements: []
|
122
122
|
|
123
123
|
rubyforge_project:
|
124
|
-
rubygems_version: 1.8.
|
124
|
+
rubygems_version: 1.8.10
|
125
125
|
signing_key:
|
126
126
|
specification_version: 3
|
127
127
|
summary: Dupe - a testing library for ActiveResource
|