her 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +19 -1279
- data/.rubocop_todo.yml +232 -0
- data/README.md +16 -0
- data/her.gemspec +3 -2
- data/lib/her/api.rb +8 -7
- data/lib/her/collection.rb +2 -1
- data/lib/her/errors.rb +3 -1
- data/lib/her/json_api/model.rb +8 -12
- data/lib/her/middleware.rb +1 -1
- data/lib/her/middleware/accept_json.rb +1 -0
- data/lib/her/middleware/first_level_parse_json.rb +6 -5
- data/lib/her/middleware/json_api_parser.rb +6 -5
- data/lib/her/middleware/parse_json.rb +2 -1
- data/lib/her/middleware/second_level_parse_json.rb +6 -5
- data/lib/her/model/associations.rb +6 -6
- data/lib/her/model/associations/association.rb +7 -9
- data/lib/her/model/associations/association_proxy.rb +2 -3
- data/lib/her/model/associations/belongs_to_association.rb +1 -1
- data/lib/her/model/attributes.rb +6 -6
- data/lib/her/model/base.rb +2 -2
- data/lib/her/model/http.rb +1 -1
- data/lib/her/model/introspection.rb +5 -3
- data/lib/her/model/nested_attributes.rb +1 -1
- data/lib/her/model/orm.rb +9 -8
- data/lib/her/model/parse.rb +9 -12
- data/lib/her/model/paths.rb +3 -4
- data/lib/her/model/relation.rb +5 -4
- data/lib/her/version.rb +1 -1
- data/spec/api_spec.rb +3 -0
- data/spec/middleware/accept_json_spec.rb +1 -0
- data/spec/middleware/first_level_parse_json_spec.rb +2 -1
- data/spec/middleware/json_api_parser_spec.rb +1 -0
- data/spec/middleware/second_level_parse_json_spec.rb +1 -0
- data/spec/model/associations/association_proxy_spec.rb +1 -0
- data/spec/model/associations_spec.rb +4 -3
- data/spec/model/attributes_spec.rb +5 -3
- data/spec/model/callbacks_spec.rb +14 -15
- data/spec/model/dirty_spec.rb +1 -0
- data/spec/model/http_spec.rb +1 -0
- data/spec/model/introspection_spec.rb +3 -2
- data/spec/model/nested_attributes_spec.rb +1 -0
- data/spec/model/orm_spec.rb +22 -16
- data/spec/model/parse_spec.rb +3 -0
- data/spec/model/paths_spec.rb +1 -0
- data/spec/model/relation_spec.rb +3 -2
- data/spec/model/validations_spec.rb +1 -0
- data/spec/model_spec.rb +1 -0
- data/spec/support/extensions/array.rb +1 -0
- data/spec/support/extensions/hash.rb +1 -0
- metadata +12 -11
data/lib/her/model/relation.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Her
|
2
2
|
module Model
|
3
3
|
class Relation
|
4
|
+
|
4
5
|
# @private
|
5
6
|
attr_accessor :params
|
6
7
|
attr_writer :parent
|
@@ -32,7 +33,7 @@ module Her
|
|
32
33
|
# # Fetched via GET "/users?approved=1"
|
33
34
|
def where(params = {})
|
34
35
|
return self if params.blank? && !@_fetch.nil?
|
35
|
-
|
36
|
+
clone.tap do |r|
|
36
37
|
r.params = r.params.merge(params)
|
37
38
|
r.clear_fetch_cache!
|
38
39
|
end
|
@@ -58,7 +59,7 @@ module Her
|
|
58
59
|
|
59
60
|
# @private
|
60
61
|
def kind_of?(thing)
|
61
|
-
fetch.
|
62
|
+
fetch.is_a?(thing)
|
62
63
|
end
|
63
64
|
|
64
65
|
# Fetch a collection of resources
|
@@ -68,7 +69,7 @@ module Her
|
|
68
69
|
@_fetch ||= begin
|
69
70
|
path = @parent.build_request_path(@parent.collection_path, @params)
|
70
71
|
method = @parent.method_for(:find)
|
71
|
-
@parent.request(@params.merge(:_method => method, :_path => path)) do |parsed_data,
|
72
|
+
@parent.request(@params.merge(:_method => method, :_path => path)) do |parsed_data, _|
|
72
73
|
@parent.new_collection(parsed_data)
|
73
74
|
end
|
74
75
|
end
|
@@ -106,7 +107,7 @@ module Her
|
|
106
107
|
resource
|
107
108
|
end
|
108
109
|
|
109
|
-
ids.length > 1 || ids.first.
|
110
|
+
ids.length > 1 || ids.first.is_a?(Array) ? results : results.first
|
110
111
|
end
|
111
112
|
|
112
113
|
# Fetch first resource with the given attributes.
|
data/lib/her/version.rb
CHANGED
data/spec/api_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "spec_helper.rb")
|
3
4
|
|
4
5
|
describe Her::API do
|
@@ -32,6 +33,7 @@ describe Her::API do
|
|
32
33
|
describe "#request" do
|
33
34
|
before do
|
34
35
|
class SimpleParser < Faraday::Response::Middleware
|
36
|
+
|
35
37
|
def on_complete(env)
|
36
38
|
env[:body] = { data: env[:body] }
|
37
39
|
end
|
@@ -85,6 +87,7 @@ describe Her::API do
|
|
85
87
|
let(:parsed_data) { subject.request(_method: :get, _path: "users/1")[:parsed_data] }
|
86
88
|
before do
|
87
89
|
class CustomParser < Faraday::Response::Middleware
|
90
|
+
|
88
91
|
def on_complete(env)
|
89
92
|
json = MultiJson.load(env[:body], symbolize_keys: true)
|
90
93
|
errors = json.delete(:errors) || []
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require "spec_helper"
|
3
4
|
|
4
5
|
describe Her::Middleware::FirstLevelParseJSON do
|
@@ -31,7 +32,7 @@ describe Her::Middleware::FirstLevelParseJSON do
|
|
31
32
|
end
|
32
33
|
|
33
34
|
it "ensures the errors are a hash if there are no errors" do
|
34
|
-
expect(subject.parse(body_with_errors)[:errors]).to eq(name: %w
|
35
|
+
expect(subject.parse(body_with_errors)[:errors]).to eq(name: %w[not_valid should_be_present])
|
35
36
|
end
|
36
37
|
|
37
38
|
it "ensures that malformed JSON throws an exception" do
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "../spec_helper.rb")
|
3
4
|
|
4
5
|
describe Her::Model::Associations do
|
@@ -296,7 +297,7 @@ describe Her::Model::Associations do
|
|
296
297
|
stub.get("/users/1/comments") { [200, {}, [{ comment: { id: 4, body: "They're having a FIRESALE?" } }].to_json] }
|
297
298
|
stub.get("/users/1/role") { [200, {}, { id: 3, body: "User" }.to_json] }
|
298
299
|
stub.get("/users/1/posts") { [200, {}, [{ id: 1, body: "blogging stuff", admin_id: 1 }].to_json] }
|
299
|
-
stub.get("/organizations/1") { [200, {}, { organization:
|
300
|
+
stub.get("/organizations/1") { [200, {}, { organization: { id: 1, name: "Bluth Company Foo" } }.to_json] }
|
300
301
|
end
|
301
302
|
end
|
302
303
|
end
|
@@ -558,7 +559,7 @@ describe Her::Model::Associations do
|
|
558
559
|
builder.adapter :test do |stub|
|
559
560
|
stub.get("/users/1") { [200, {}, { user: { id: 1, name: "Tobias Fünke", comments: [{ id: 2, body: "Tobias, you blow hard!", user_id: 1 }, { id: 3, body: "I wouldn't mind kissing that man between the cheeks, so to speak", user_id: 1 }], role: { id: 1, body: "Admin" }, organization: { id: 1, name: "Bluth Company" }, organization_id: 1 } }.to_json] }
|
560
561
|
stub.get("/users/1/comments") { [200, {}, { comments: [{ id: 4, body: "They're having a FIRESALE?" }] }.to_json] }
|
561
|
-
stub.get("/organizations/1") { [200, {}, { organization:
|
562
|
+
stub.get("/organizations/1") { [200, {}, { organization: { id: 1, name: "Bluth Company Foo" } }.to_json] }
|
562
563
|
end
|
563
564
|
end
|
564
565
|
end
|
@@ -616,7 +617,7 @@ describe Her::Model::Associations do
|
|
616
617
|
stub.get("/users/2") { [200, {}, { user: { id: 2, name: "Lindsay Fünke", organization_id: 1 } }.to_json] }
|
617
618
|
stub.get("/users/2/comments") { [200, {}, { comments: [{ id: 4, body: "They're having a FIRESALE?" }, { id: 5, body: "Is this the tiny town from Footloose?" }] }.to_json] }
|
618
619
|
stub.get("/users/2/comments/5") { [200, {}, { comment: { id: 5, body: "Is this the tiny town from Footloose?" } }.to_json] }
|
619
|
-
stub.get("/organizations/1") { [200, {}, { organization:
|
620
|
+
stub.get("/organizations/1") { [200, {}, { organization: { id: 1, name: "Bluth Company Foo" } }.to_json] }
|
620
621
|
end
|
621
622
|
end
|
622
623
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "../spec_helper.rb")
|
3
4
|
|
4
5
|
describe Her::Model::Attributes do
|
@@ -164,11 +165,11 @@ describe Her::Model::Attributes do
|
|
164
165
|
store_metadata :my_data
|
165
166
|
end
|
166
167
|
|
167
|
-
@user = Foo::User.new(_errors: %w
|
168
|
+
@user = Foo::User.new(_errors: %w[Foo Bar], _metadata: { secret: true })
|
168
169
|
end
|
169
170
|
|
170
171
|
it "should return response_errors stored in the method provided by `store_response_errors`" do
|
171
|
-
expect(@user.errors).to eq(%w
|
172
|
+
expect(@user.errors).to eq(%w[Foo Bar])
|
172
173
|
end
|
173
174
|
|
174
175
|
it "should remove the default method for errors" do
|
@@ -204,7 +205,7 @@ describe Her::Model::Attributes do
|
|
204
205
|
|
205
206
|
spawn_model "Foo::User" do
|
206
207
|
def document
|
207
|
-
|
208
|
+
attributes[:document][:url]
|
208
209
|
end
|
209
210
|
end
|
210
211
|
end
|
@@ -310,6 +311,7 @@ describe Her::Model::Attributes do
|
|
310
311
|
context "when attribute methods are already defined" do
|
311
312
|
before do
|
312
313
|
class AbstractUser
|
314
|
+
|
313
315
|
def fullname
|
314
316
|
raise NotImplementedError
|
315
317
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "../spec_helper.rb")
|
3
4
|
|
4
5
|
describe "Her::Model and ActiveModel::Callbacks" do
|
@@ -6,12 +7,10 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
6
7
|
Her::API.setup url: "https://api.example.com" do |builder|
|
7
8
|
builder.use Her::Middleware::FirstLevelParseJSON
|
8
9
|
end
|
9
|
-
|
10
|
-
spawn_model "Foo::User"
|
11
10
|
end
|
12
11
|
|
13
12
|
context :before_save do
|
14
|
-
subject {
|
13
|
+
subject { User.create(name: "Tobias Funke") }
|
15
14
|
before do
|
16
15
|
Her::API.default_api.connection.adapter :test do |stub|
|
17
16
|
stub.post("/users") { |env| [200, {}, { id: 1, name: env[:body][:name] }.to_json] }
|
@@ -21,7 +20,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
21
20
|
|
22
21
|
context "when using a symbol callback" do
|
23
22
|
before do
|
24
|
-
|
23
|
+
spawn_model "User" do
|
25
24
|
before_save :alter_name
|
26
25
|
def alter_name
|
27
26
|
name.upcase!
|
@@ -37,7 +36,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
37
36
|
|
38
37
|
context "when using a block callback" do
|
39
38
|
before do
|
40
|
-
|
39
|
+
spawn_model "User" do
|
41
40
|
before_save -> { name.upcase! }
|
42
41
|
end
|
43
42
|
end
|
@@ -50,7 +49,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
50
49
|
|
51
50
|
context "when changing a value of an existing resource in a callback" do
|
52
51
|
before do
|
53
|
-
|
52
|
+
spawn_model "User" do
|
54
53
|
before_save :alter_name
|
55
54
|
def alter_name
|
56
55
|
self.name = "Lumberjack" if persisted?
|
@@ -67,7 +66,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
67
66
|
end
|
68
67
|
|
69
68
|
context :before_create do
|
70
|
-
subject {
|
69
|
+
subject { User.create(name: "Tobias Funke") }
|
71
70
|
before do
|
72
71
|
Her::API.default_api.connection.adapter :test do |stub|
|
73
72
|
stub.post("/users") { |env| [200, {}, { id: 1, name: env[:body][:name] }.to_json] }
|
@@ -76,7 +75,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
76
75
|
|
77
76
|
context "when using a symbol callback" do
|
78
77
|
before do
|
79
|
-
|
78
|
+
spawn_model "User" do
|
80
79
|
before_create :alter_name
|
81
80
|
def alter_name
|
82
81
|
name.upcase!
|
@@ -92,7 +91,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
92
91
|
|
93
92
|
context "when using a block callback" do
|
94
93
|
before do
|
95
|
-
|
94
|
+
spawn_model "User" do
|
96
95
|
before_create -> { name.upcase! }
|
97
96
|
end
|
98
97
|
end
|
@@ -105,7 +104,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
105
104
|
end
|
106
105
|
|
107
106
|
context :after_find do
|
108
|
-
subject {
|
107
|
+
subject { User.find(1) }
|
109
108
|
before do
|
110
109
|
Her::API.default_api.connection.adapter :test do |stub|
|
111
110
|
stub.get("/users/1") { [200, {}, { id: 1, name: "Tobias Funke" }.to_json] }
|
@@ -114,7 +113,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
114
113
|
|
115
114
|
context "when using a symbol callback" do
|
116
115
|
before do
|
117
|
-
|
116
|
+
spawn_model "User" do
|
118
117
|
after_find :alter_name
|
119
118
|
def alter_name
|
120
119
|
name.upcase!
|
@@ -130,7 +129,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
130
129
|
|
131
130
|
context "when using a block callback" do
|
132
131
|
before do
|
133
|
-
|
132
|
+
spawn_model "User" do
|
134
133
|
after_find -> { name.upcase! }
|
135
134
|
end
|
136
135
|
end
|
@@ -143,11 +142,11 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
143
142
|
end
|
144
143
|
|
145
144
|
context :after_initialize do
|
146
|
-
subject {
|
145
|
+
subject { User.new(name: "Tobias Funke") }
|
147
146
|
|
148
147
|
context "when using a symbol callback" do
|
149
148
|
before do
|
150
|
-
|
149
|
+
spawn_model "User" do
|
151
150
|
after_initialize :alter_name
|
152
151
|
def alter_name
|
153
152
|
name.upcase!
|
@@ -163,7 +162,7 @@ describe "Her::Model and ActiveModel::Callbacks" do
|
|
163
162
|
|
164
163
|
context "when using a block callback" do
|
165
164
|
before do
|
166
|
-
|
165
|
+
spawn_model "User" do
|
167
166
|
after_initialize -> { name.upcase! }
|
168
167
|
end
|
169
168
|
end
|
data/spec/model/dirty_spec.rb
CHANGED
data/spec/model/http_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "../spec_helper.rb")
|
3
4
|
|
4
5
|
describe Her::Model::Introspection do
|
@@ -38,7 +39,7 @@ describe Her::Model::Introspection do
|
|
38
39
|
@user.instance_eval do
|
39
40
|
def password
|
40
41
|
"filtered"
|
41
|
-
|
42
|
+
end
|
42
43
|
end
|
43
44
|
expect(@user.inspect).to include("name=\"Tobias Funke\"")
|
44
45
|
expect(@user.inspect).to include("password=\"filtered\"")
|
@@ -73,7 +74,7 @@ describe Her::Model::Introspection do
|
|
73
74
|
expect(Foo::User.her_nearby_class("AccessRecord")).to eq(Foo::AccessRecord)
|
74
75
|
expect(AccessRecord.her_nearby_class("Log")).to eq(Log)
|
75
76
|
expect(Foo::User.her_nearby_class("Log")).to eq(Log)
|
76
|
-
expect{Foo::User.her_nearby_class("X")}.to raise_error(NameError)
|
77
|
+
expect { Foo::User.her_nearby_class("X") }.to raise_error(NameError)
|
77
78
|
end
|
78
79
|
end
|
79
80
|
end
|
data/spec/model/orm_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require File.join(File.dirname(__FILE__), "../spec_helper.rb")
|
3
4
|
|
4
5
|
describe Her::Model::ORM do
|
@@ -73,10 +74,10 @@ describe Her::Model::ORM do
|
|
73
74
|
builder.use Her::Middleware::SecondLevelParseJSON
|
74
75
|
builder.use Faraday::Request::UrlEncoded
|
75
76
|
builder.adapter :test do |stub|
|
76
|
-
stub.get("/users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w
|
77
|
-
stub.get("/users") {
|
78
|
-
stub.post("/users") {
|
79
|
-
stub.delete("/users/1") {
|
77
|
+
stub.get("/users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w[Oh My God] }.to_json] }
|
78
|
+
stub.get("/users") { [200, {}, { :data => [{ :id => 1, :name => "Tobias Fünke" }, { :id => 2, :name => "Lindsay Fünke" }], :metadata => { :total_pages => 10, :next_page => 2 }, :errors => ["Oh", "My", "God"] }.to_json] }
|
79
|
+
stub.post("/users") { [200, {}, { :data => { :name => "George Michael Bluth" }, :metadata => { :foo => "bar" }, :errors => ["Yes", "Sir"] }.to_json] }
|
80
|
+
stub.delete("/users/1") { [200, {}, { :data => { :id => 1 }, :metadata => { :foo => "bar" }, :errors => ["Yes", "Sir"] }.to_json] }
|
80
81
|
end
|
81
82
|
end
|
82
83
|
|
@@ -102,7 +103,7 @@ describe Her::Model::ORM do
|
|
102
103
|
|
103
104
|
it "handles error data on a resource" do
|
104
105
|
@user = User.create(name: "George Michael Bluth")
|
105
|
-
expect(@user.response_errors).to eq(%w
|
106
|
+
expect(@user.response_errors).to eq(%w[Yes Sir])
|
106
107
|
end
|
107
108
|
|
108
109
|
it "handles metadata on a destroyed resource" do
|
@@ -112,7 +113,7 @@ describe Her::Model::ORM do
|
|
112
113
|
|
113
114
|
it "handles error data on a destroyed resource" do
|
114
115
|
@user = User.destroy_existing(1)
|
115
|
-
expect(@user.response_errors).to eq(%w
|
116
|
+
expect(@user.response_errors).to eq(%w[Yes Sir])
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
@@ -123,8 +124,8 @@ describe Her::Model::ORM do
|
|
123
124
|
builder.use Her::Middleware::SecondLevelParseJSON
|
124
125
|
builder.use Faraday::Request::UrlEncoded
|
125
126
|
builder.adapter :test do |stub|
|
126
|
-
stub.get("/users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w
|
127
|
-
stub.post("/users") { [200, {}, { data: { name: "George Michael Bluth" }, metadata: { foo: "bar" }, errors: %w
|
127
|
+
stub.get("/users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w[Oh My God] }.to_json] }
|
128
|
+
stub.post("/users") { [200, {}, { data: { name: "George Michael Bluth" }, metadata: { foo: "bar" }, errors: %w[Yes Sir] }.to_json] }
|
128
129
|
end
|
129
130
|
end
|
130
131
|
|
@@ -150,7 +151,7 @@ describe Her::Model::ORM do
|
|
150
151
|
|
151
152
|
it "handles error data on a resource" do
|
152
153
|
@user = User.create(name: "George Michael Bluth")
|
153
|
-
expect(@user.response_errors).to eq(%w
|
154
|
+
expect(@user.response_errors).to eq(%w[Yes Sir])
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
@@ -161,7 +162,7 @@ describe Her::Model::ORM do
|
|
161
162
|
builder.use Her::Middleware::FirstLevelParseJSON
|
162
163
|
builder.use Faraday::Request::UrlEncoded
|
163
164
|
builder.adapter :test do |stub|
|
164
|
-
stub.get("/users/1") { [200, {}, { id: 1, friends: %w
|
165
|
+
stub.get("/users/1") { [200, {}, { id: 1, friends: %w[Maeby GOB Anne] }.to_json] }
|
165
166
|
stub.get("/users/2") { [200, {}, { id: 1 }.to_json] }
|
166
167
|
end
|
167
168
|
end
|
@@ -185,7 +186,7 @@ describe Her::Model::ORM do
|
|
185
186
|
@user = User.find(1)
|
186
187
|
expect(@user.friends).to eq("* Maeby\n* GOB\n* Anne")
|
187
188
|
@user.instance_eval do
|
188
|
-
@_her_attributes[:friends] = %w
|
189
|
+
@_her_attributes[:friends] = %w[Maeby GOB Anne]
|
189
190
|
end
|
190
191
|
end
|
191
192
|
|
@@ -194,7 +195,7 @@ describe Her::Model::ORM do
|
|
194
195
|
@user.friends = "* George\n* Oscar\n* Lucille"
|
195
196
|
expect(@user.friends).to eq("* George\n* Oscar\n* Lucille")
|
196
197
|
@user.instance_eval do
|
197
|
-
@_her_attributes[:friends] = %w
|
198
|
+
@_her_attributes[:friends] = %w[George Oscar Lucille]
|
198
199
|
end
|
199
200
|
end
|
200
201
|
end
|
@@ -492,10 +493,10 @@ describe Her::Model::ORM do
|
|
492
493
|
stub.get("/users/1") { [200, {}, { id: 1, fullname: "Tobias Fünke", active: true }.to_json] }
|
493
494
|
stub.delete("/users/1") { [status, {}, { id: 1, fullname: "Lindsay Fünke", active: false }.to_json] }
|
494
495
|
|
495
|
-
stub.get("/child_users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w
|
496
|
-
stub.get("/child_users") {
|
497
|
-
stub.post("/child_users") {
|
498
|
-
stub.delete("/child_users/1") {
|
496
|
+
stub.get("/child_users") { [200, {}, { data: [{ id: 1, name: "Tobias Fünke" }, { id: 2, name: "Lindsay Fünke" }], metadata: { total_pages: 10, next_page: 2 }, errors: %w[Oh My God] }.to_json] }
|
497
|
+
stub.get("/child_users") { [200, {}, { :data => [{ :id => 1, :name => "Tobias Fünke" }, { :id => 2, :name => "Lindsay Fünke" }], :metadata => { :total_pages => 10, :next_page => 2 }, :errors => ["Oh", "My", "God"] }.to_json] }
|
498
|
+
stub.post("/child_users") { [200, {}, { :data => { :name => "George Michael Bluth" }, :metadata => { :foo => "bar" }, :errors => ["Yes", "Sir"] }.to_json] }
|
499
|
+
stub.delete("/child_users/1") { [200, {}, { :data => { :id => 1 }, :metadata => { :foo => "bar" }, :errors => ["Yes", "Sir"] }.to_json] }
|
499
500
|
end
|
500
501
|
end
|
501
502
|
|
@@ -652,10 +653,15 @@ describe Her::Model::ORM do
|
|
652
653
|
after_create :after_create_callback
|
653
654
|
after_save :after_save_callback
|
654
655
|
def before_save_callback; end
|
656
|
+
|
655
657
|
def before_create_callback; end
|
658
|
+
|
656
659
|
def before_update_callback; end
|
660
|
+
|
657
661
|
def after_update_callback; end
|
662
|
+
|
658
663
|
def after_create_callback; end
|
664
|
+
|
659
665
|
def after_save_callback; end
|
660
666
|
end
|
661
667
|
end
|