spark_api 1.4.28 → 1.5.0
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.
- checksums.yaml +5 -13
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/spark_api/authentication/api_auth.rb +1 -1
- data/lib/spark_api/authentication/oauth2.rb +1 -1
- data/lib/spark_api/authentication/oauth2_impl/grant_type_base.rb +1 -1
- data/lib/spark_api/client.rb +2 -2
- data/lib/spark_api/models.rb +1 -0
- data/lib/spark_api/models/account.rb +7 -1
- data/lib/spark_api/models/account_report.rb +0 -5
- data/lib/spark_api/models/floplan.rb +24 -0
- data/lib/spark_api/models/listing.rb +11 -1
- data/lib/spark_api/models/subresource.rb +2 -2
- data/lib/spark_api/request.rb +2 -2
- data/script/reso_middleware_example.rb +70 -0
- data/spec/fixtures/listings/floplans_index.json +15 -0
- data/spec/spec_helper.rb +9 -4
- data/spec/unit/spark_api/authentication/api_auth_spec.rb +21 -22
- data/spec/unit/spark_api/authentication/base_auth_spec.rb +3 -3
- data/spec/unit/spark_api/authentication/oauth2_impl/faraday_middleware_spec.rb +1 -1
- data/spec/unit/spark_api/authentication/oauth2_impl/grant_type_base_spec.rb +1 -1
- data/spec/unit/spark_api/authentication/oauth2_impl/single_session_provider_spec.rb +2 -2
- data/spec/unit/spark_api/authentication/oauth2_spec.rb +40 -40
- data/spec/unit/spark_api/authentication_spec.rb +2 -2
- data/spec/unit/spark_api/configuration/yaml_spec.rb +44 -44
- data/spec/unit/spark_api/configuration_spec.rb +56 -57
- data/spec/unit/spark_api/faraday_middleware_spec.rb +12 -12
- data/spec/unit/spark_api/models/account_report_spec.rb +2 -22
- data/spec/unit/spark_api/models/account_spec.rb +24 -21
- data/spec/unit/spark_api/models/activity_spec.rb +5 -5
- data/spec/unit/spark_api/models/base_spec.rb +32 -32
- data/spec/unit/spark_api/models/concerns/destroyable_spec.rb +2 -2
- data/spec/unit/spark_api/models/concerns/savable_spec.rb +19 -19
- data/spec/unit/spark_api/models/connect_prefs_spec.rb +1 -1
- data/spec/unit/spark_api/models/constraint_spec.rb +1 -1
- data/spec/unit/spark_api/models/contact_spec.rb +50 -50
- data/spec/unit/spark_api/models/dirty_spec.rb +12 -12
- data/spec/unit/spark_api/models/document_spec.rb +3 -3
- data/spec/unit/spark_api/models/fields_spec.rb +17 -17
- data/spec/unit/spark_api/models/finders_spec.rb +7 -7
- data/spec/unit/spark_api/models/floplan_spec.rb +24 -0
- data/spec/unit/spark_api/models/listing_cart_spec.rb +46 -46
- data/spec/unit/spark_api/models/listing_meta_translations_spec.rb +6 -6
- data/spec/unit/spark_api/models/listing_spec.rb +91 -91
- data/spec/unit/spark_api/models/message_spec.rb +10 -10
- data/spec/unit/spark_api/models/note_spec.rb +10 -10
- data/spec/unit/spark_api/models/notification_spec.rb +6 -6
- data/spec/unit/spark_api/models/open_house_spec.rb +4 -4
- data/spec/unit/spark_api/models/photo_spec.rb +8 -8
- data/spec/unit/spark_api/models/portal_spec.rb +4 -4
- data/spec/unit/spark_api/models/property_types_spec.rb +5 -5
- data/spec/unit/spark_api/models/rental_calendar_spec.rb +13 -11
- data/spec/unit/spark_api/models/rule_spec.rb +2 -2
- data/spec/unit/spark_api/models/saved_search_spec.rb +33 -33
- data/spec/unit/spark_api/models/search_template/quick_search_spec.rb +5 -5
- data/spec/unit/spark_api/models/shared_listing_spec.rb +12 -12
- data/spec/unit/spark_api/models/sort_spec.rb +3 -3
- data/spec/unit/spark_api/models/standard_fields_spec.rb +12 -12
- data/spec/unit/spark_api/models/subresource_spec.rb +33 -15
- data/spec/unit/spark_api/models/system_info_spec.rb +7 -7
- data/spec/unit/spark_api/models/tour_of_home_spec.rb +3 -3
- data/spec/unit/spark_api/models/video_spec.rb +9 -9
- data/spec/unit/spark_api/models/virtual_tour_spec.rb +7 -7
- data/spec/unit/spark_api/models/vow_account_spec.rb +8 -8
- data/spec/unit/spark_api/multi_client_spec.rb +14 -14
- data/spec/unit/spark_api/options_hash_spec.rb +4 -4
- data/spec/unit/spark_api/paginate_spec.rb +71 -71
- data/spec/unit/spark_api/primary_array_spec.rb +5 -5
- data/spec/unit/spark_api/request_spec.rb +65 -59
- data/spec/unit/spark_api_spec.rb +6 -6
- metadata +215 -280
@@ -64,13 +64,13 @@ describe SparkApi do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should raised exception when token is expired" do
|
67
|
-
expect { @connection.get('/expired')}.to raise_error(SparkApi::PermissionDenied){ |e| e.code.
|
67
|
+
expect { @connection.get('/expired')}.to raise_error(SparkApi::PermissionDenied){ |e| expect(e.code).to eq(SparkApi::ResponseCodes::SESSION_TOKEN_EXPIRED) }
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should raised exception on error" do
|
71
|
-
expect { @connection.get('/methodnotallowed')}.to raise_error(SparkApi::NotAllowed){ |e| e.message.
|
72
|
-
expect { @connection.get('/epicfail')}.to raise_error(SparkApi::ClientError){ |e| e.status.
|
73
|
-
expect { @connection.get('/unknownerror')}.to raise_error(SparkApi::ClientError){ |e| e.status.
|
71
|
+
expect { @connection.get('/methodnotallowed')}.to raise_error(SparkApi::NotAllowed){ |e| expect(e.message).to eq("Method Not Allowed") }
|
72
|
+
expect { @connection.get('/epicfail')}.to raise_error(SparkApi::ClientError){ |e| expect(e.status).to be(500) }
|
73
|
+
expect { @connection.get('/unknownerror')}.to raise_error(SparkApi::ClientError){ |e| expect(e.status).to be(499) }
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should raised exception on invalid responses" do
|
@@ -81,20 +81,20 @@ describe SparkApi do
|
|
81
81
|
|
82
82
|
it "should give me a session response" do
|
83
83
|
response = @connection.post('/session').body
|
84
|
-
response.success.
|
84
|
+
expect(response.success).to eq(true)
|
85
85
|
session = SparkApi::Authentication::Session.new(response.results[0])
|
86
|
-
session.auth_token.
|
86
|
+
expect(session.auth_token).to eq("xxxxx")
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should give me an api response" do
|
90
90
|
response = @connection.get('/system').body
|
91
|
-
response.success.
|
92
|
-
response.results.length.
|
91
|
+
expect(response.success).to eq(true)
|
92
|
+
expect(response.results.length).to be > 0
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should include the errors in the response" do
|
96
96
|
expect { @connection.get('/badresourcerequest')}.to raise_error(SparkApi::BadResourceRequest){ |e|
|
97
|
-
e.errors.
|
97
|
+
expect(e.errors).to eq("Some errors and stuff.")
|
98
98
|
}
|
99
99
|
end
|
100
100
|
|
@@ -111,7 +111,7 @@ describe SparkApi do
|
|
111
111
|
:response_headers => {}
|
112
112
|
}
|
113
113
|
|
114
|
-
middleware.decompress_body(env).
|
114
|
+
expect(middleware.decompress_body(env)).to eq("UNCOMPRESSED")
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should unzip gzipped data" do
|
@@ -129,7 +129,7 @@ describe SparkApi do
|
|
129
129
|
}
|
130
130
|
}
|
131
131
|
|
132
|
-
middleware.decompress_body(env).
|
132
|
+
expect(middleware.decompress_body(env)).to eq(bod)
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should inflate deflated data" do
|
@@ -143,7 +143,7 @@ describe SparkApi do
|
|
143
143
|
}
|
144
144
|
}
|
145
145
|
|
146
|
-
middleware.decompress_body(env).
|
146
|
+
expect(middleware.decompress_body(env)).to eq(bod)
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -2,6 +2,8 @@ require './spec/spec_helper'
|
|
2
2
|
|
3
3
|
describe AccountReport do
|
4
4
|
|
5
|
+
it_behaves_like(:account, AccountReport)
|
6
|
+
|
5
7
|
let(:account_report) {
|
6
8
|
AccountReport.new({
|
7
9
|
"Id" => "12345",
|
@@ -51,27 +53,5 @@ describe AccountReport do
|
|
51
53
|
end
|
52
54
|
|
53
55
|
end
|
54
|
-
|
55
|
-
describe 'logo' do
|
56
|
-
|
57
|
-
it 'returns the logo' do
|
58
|
-
logo = SparkApi::Models::Base.new( {"Type" => "Logo"} )
|
59
|
-
not_logo = SparkApi::Models::Base.new( {"Type" => "Nope" } )
|
60
|
-
account_report.images = [logo, not_logo]
|
61
|
-
expect(account_report.logo).to be logo
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'returns nil if there is no logo' do
|
65
|
-
not_logo = SparkApi::Models::Base.new( {"Type" => "Nope" } )
|
66
|
-
account_report.images = [not_logo]
|
67
|
-
expect(account_report.logo).to be nil
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'returns nil if there are no images' do
|
71
|
-
expect(account_report.images).to be nil
|
72
|
-
expect(account_report.logo).to be nil
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
56
|
|
77
57
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require './spec/spec_helper'
|
2
2
|
|
3
3
|
describe Account do
|
4
|
+
|
5
|
+
it_behaves_like(:account, Account)
|
6
|
+
|
4
7
|
describe "units" do
|
5
8
|
before(:each) do
|
6
9
|
@account = Account.new({
|
@@ -98,20 +101,20 @@ describe Account do
|
|
98
101
|
|
99
102
|
it "should respond to attributes" do
|
100
103
|
['Name','Id','Mls','MlsId','Office'].each do |k|
|
101
|
-
(@account.send k.to_sym).
|
104
|
+
expect(@account.send k.to_sym).to be_a(String)
|
102
105
|
end
|
103
106
|
end
|
104
107
|
|
105
108
|
it "should have primary subresources" do
|
106
|
-
@account.emails.primary.Address.
|
107
|
-
@account.phones.primary.Number.
|
108
|
-
@account.addresses.primary.Address.
|
109
|
-
@account.websites.primary.Uri.
|
109
|
+
expect(@account.emails.primary.Address).to eq("work@test.com")
|
110
|
+
expect(@account.phones.primary.Number).to eq("701-555-1212")
|
111
|
+
expect(@account.addresses.primary.Address).to eq("101 Main Ave, Phoenix, AZ 12345")
|
112
|
+
expect(@account.websites.primary.Uri).to eq("http://iamthebestagent.com")
|
110
113
|
end
|
111
114
|
|
112
115
|
it "should be able to provide a primary image" do
|
113
|
-
@account.primary_img("Photo").Name.
|
114
|
-
@account.primary_img("Logo").Name.
|
116
|
+
expect(@account.primary_img("Photo").Name).to eq('My Photo 1')
|
117
|
+
expect(@account.primary_img("Logo").Name).to eq('1 My Logo')
|
115
118
|
end
|
116
119
|
|
117
120
|
after(:each) do
|
@@ -128,19 +131,19 @@ describe Account do
|
|
128
131
|
on_get_it "should get my account" do
|
129
132
|
stub_api_get("/my/account", 'accounts/my.json')
|
130
133
|
account = Account.my
|
131
|
-
account.Id.
|
132
|
-
account.websites.first.Name.
|
134
|
+
expect(account.Id).to eq("20000426173054342350000000")
|
135
|
+
expect(account.websites.first.Name).to eq('My Work Website')
|
133
136
|
end
|
134
137
|
|
135
138
|
on_put_it "should save my portal account" do
|
136
139
|
stub_api_get("/my/account", 'accounts/my_portal.json')
|
137
140
|
stub_api_put("/my/account", 'accounts/my_save.json', 'accounts/my_put.json')
|
138
141
|
account = Account.my
|
139
|
-
account.Id.
|
140
|
-
account.GetEmailUpdates.
|
142
|
+
expect(account.Id).to eq("20110426173054342350000000")
|
143
|
+
expect(account.GetEmailUpdates).to eq(false)
|
141
144
|
account.GetEmailUpdates = true
|
142
145
|
account.save!
|
143
|
-
account.GetEmailUpdates.
|
146
|
+
expect(account.GetEmailUpdates).to eq(true)
|
144
147
|
end
|
145
148
|
end
|
146
149
|
|
@@ -148,10 +151,10 @@ describe Account do
|
|
148
151
|
on_get_it "should get all accounts" do
|
149
152
|
stub_api_get("/accounts", 'accounts/all.json')
|
150
153
|
accounts = Account.get
|
151
|
-
accounts.
|
152
|
-
accounts.length.
|
153
|
-
accounts.first.Id.
|
154
|
-
accounts.last.Id.
|
154
|
+
expect(accounts).to be_an(Array)
|
155
|
+
expect(accounts.length).to eq(3)
|
156
|
+
expect(accounts.first.Id).to eq("20000426173054342350000000")
|
157
|
+
expect(accounts.last.Id).to eq("20110126173054382350000000")
|
155
158
|
end
|
156
159
|
on_put_it "should save password" do
|
157
160
|
stub_api_get("/my/account", 'accounts/my.json')
|
@@ -159,7 +162,7 @@ describe Account do
|
|
159
162
|
stub_api_put("/accounts/#{account.Id}", 'accounts/password_save.json', 'accounts/my.json')
|
160
163
|
account.Password = "1"
|
161
164
|
account.PasswordValidation = "1"
|
162
|
-
account.save.
|
165
|
+
expect(account.save).to be(true)
|
163
166
|
end
|
164
167
|
end
|
165
168
|
|
@@ -167,15 +170,15 @@ describe Account do
|
|
167
170
|
on_get_it "should all office accounts" do
|
168
171
|
stub_api_get("/accounts/by/office/20030426173014239760000000", 'accounts/office.json')
|
169
172
|
accounts = Account.by_office("20030426173014239760000000")
|
170
|
-
accounts.
|
171
|
-
accounts.length.
|
173
|
+
expect(accounts).to be_an(Array)
|
174
|
+
expect(accounts.length).to eq(2)
|
172
175
|
accounts.each do |account|
|
173
|
-
accounts.first.OfficeId.
|
176
|
+
expect(accounts.first.OfficeId).to eq("20030426173014239760000000")
|
174
177
|
end
|
175
178
|
end
|
176
179
|
end
|
177
180
|
|
178
181
|
end
|
179
|
-
|
182
|
+
|
180
183
|
end
|
181
184
|
|
@@ -10,9 +10,9 @@ describe Activity do
|
|
10
10
|
it "gets a current user's activities" do
|
11
11
|
s = stub_api_get("/activities", "activities/get.json")
|
12
12
|
activities = Activity.get
|
13
|
-
activities.
|
14
|
-
activities.size.
|
15
|
-
s.
|
13
|
+
expect(activities).to be_an(Array)
|
14
|
+
expect(activities.size).to eq(2)
|
15
|
+
expect(s).to have_been_requested
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -21,8 +21,8 @@ describe Activity do
|
|
21
21
|
it "gets an individual activity" do
|
22
22
|
s = stub_api_get("/activities/#{id}", "activities/get.json")
|
23
23
|
activity = Activity.find(id)
|
24
|
-
activity.
|
25
|
-
s.
|
24
|
+
expect(activity).to be_an(Activity)
|
25
|
+
expect(s).to have_been_requested
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -22,31 +22,31 @@ describe MyExampleModel, "Example model" do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should be persisted" do
|
25
|
-
@model.persisted
|
25
|
+
expect(@model.persisted?).to eq(true)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should not be persisted" do
|
29
29
|
@new_model = MyExampleModel.new()
|
30
|
-
@new_model.persisted
|
30
|
+
expect(@new_model.persisted?).to eq(false)
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should parse and return ResourceUri without v1" do
|
34
|
-
@model.resource_uri.
|
34
|
+
expect(@model.resource_uri).to eq("/some/place/20101230223226074201000000")
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should parse and return the correct path for a persisted resource" do
|
38
|
-
@model.path.
|
38
|
+
expect(@model.path).to eq("/some/place")
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should parse and return the correct path" do
|
42
42
|
@model = MyExampleModel.new
|
43
|
-
@model.path.
|
43
|
+
expect(@model.path).to eq("/test/example")
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should parse and return the correct path for resource with a parent" do
|
47
47
|
@model = MyExampleModel.new
|
48
48
|
@model.parent = Contact.new({ :Id => "20101230223226074201000000" })
|
49
|
-
@model.path.
|
49
|
+
expect(@model.path).to eq("/contacts/20101230223226074201000000/test/example")
|
50
50
|
end
|
51
51
|
|
52
52
|
end
|
@@ -55,16 +55,16 @@ describe Base, "Base model" do
|
|
55
55
|
|
56
56
|
describe "class methods" do
|
57
57
|
it "should set the element name" do
|
58
|
-
MyExampleModel.element_name.
|
59
|
-
MyDefaultModel.element_name.
|
58
|
+
expect(MyExampleModel.element_name).to eq("example")
|
59
|
+
expect(MyDefaultModel.element_name).to eq("resource")
|
60
60
|
end
|
61
61
|
it "should set the prefix" do
|
62
|
-
MyExampleModel.prefix.
|
63
|
-
MyDefaultModel.prefix.
|
62
|
+
expect(MyExampleModel.prefix).to eq("/test/")
|
63
|
+
expect(MyDefaultModel.prefix).to eq("/")
|
64
64
|
end
|
65
65
|
it "should set the path" do
|
66
|
-
MyExampleModel.path.
|
67
|
-
MyDefaultModel.path.
|
66
|
+
expect(MyExampleModel.path).to eq("/test/example")
|
67
|
+
expect(MyDefaultModel.path).to eq("/resource")
|
68
68
|
end
|
69
69
|
describe "finders" do
|
70
70
|
before(:each) do
|
@@ -72,11 +72,11 @@ describe Base, "Base model" do
|
|
72
72
|
stub_api_get("/test/example", 'base.json')
|
73
73
|
end
|
74
74
|
it "should get all results" do
|
75
|
-
MyExampleModel.get.length.
|
75
|
+
expect(MyExampleModel.get.length).to eq(2)
|
76
76
|
end
|
77
77
|
it "should get first result" do
|
78
|
-
MyExampleModel.first.Id.
|
79
|
-
MyExampleModel.first.Id.
|
78
|
+
expect(MyExampleModel.first.Id).to eq(1)
|
79
|
+
expect(MyExampleModel.first.Id).to eq(MyExampleModel.first.id)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -89,71 +89,71 @@ describe Base, "Base model" do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should access existing attributes" do
|
92
|
-
@model.Name.
|
92
|
+
expect(@model.Name).to eq('My Example')
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should raise errors on access to non-existant attributes" do
|
96
|
-
|
96
|
+
expect { @model.Nonsense }.to raise_error(NoMethodError)
|
97
97
|
end
|
98
98
|
|
99
99
|
it "should set existing attributes" do
|
100
100
|
new_name = 'John Jacob Jingleheimerschmidt'
|
101
101
|
@model.Name = new_name
|
102
|
-
@model.Name.
|
102
|
+
expect(@model.Name).to eq(new_name)
|
103
103
|
end
|
104
104
|
|
105
105
|
it "should set non-existant attributes" do
|
106
106
|
nonsense = 'nonsense'
|
107
107
|
@model.Nonsense = nonsense
|
108
|
-
@model.Nonsense.
|
108
|
+
expect(@model.Nonsense).to eq(nonsense)
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should return a boolean for a predicate for an existing attribute" do
|
112
|
-
@model.Name
|
112
|
+
expect(@model.Name?).to satisfy { |p| [true, false].include?(p) }
|
113
113
|
end
|
114
114
|
|
115
115
|
it "should return a boolean for whether or not a model is persisted through the api" do
|
116
|
-
@model.persisted
|
116
|
+
expect(@model.persisted?).to satisfy { |p| [true, false].include?(p) }
|
117
117
|
end
|
118
118
|
|
119
119
|
it "should raise an Error for a predicate for a non-existant attribute" do
|
120
|
-
|
120
|
+
expect { @model.Nonsense? }.to raise_error(NoMethodError)
|
121
121
|
end
|
122
122
|
|
123
123
|
it "should repond_to existing attributes" do
|
124
|
-
@model.
|
124
|
+
expect(@model).to respond_to(:Name)
|
125
125
|
end
|
126
126
|
|
127
127
|
it "should not respond_to non-existant attributes" do
|
128
|
-
@model.
|
128
|
+
expect(@model).not_to respond_to(:Nonsense)
|
129
129
|
end
|
130
130
|
|
131
131
|
it "should respond_to a setter for an existing attribute" do
|
132
|
-
@model.
|
132
|
+
expect(@model).to respond_to(:Name=)
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should respond_to a setter for a non-existant attribute" do
|
136
|
-
@model.
|
136
|
+
expect(@model).to respond_to(:Nonsense=)
|
137
137
|
end
|
138
138
|
|
139
139
|
it "should respond_to a predicate for an existing attribute" do
|
140
|
-
@model.
|
140
|
+
expect(@model).to respond_to(:Name?)
|
141
141
|
end
|
142
142
|
|
143
143
|
it "should not respond_to a predicate for a non-existant attribute" do
|
144
|
-
@model.
|
144
|
+
expect(@model).not_to respond_to(:Nonsense?)
|
145
145
|
end
|
146
146
|
|
147
147
|
it "should respond_to methods inherited from parent classes" do
|
148
|
-
@model.
|
148
|
+
expect(@model).to respond_to(:freeze)
|
149
149
|
end
|
150
150
|
|
151
151
|
it "should respond_to a will_change! method for an existing attribute" do
|
152
|
-
@model.
|
152
|
+
expect(@model).to respond_to(:Name_will_change!)
|
153
153
|
end
|
154
154
|
|
155
155
|
it "should not respond_to a will_change! method for a non-existant attribute" do
|
156
|
-
@model.
|
156
|
+
expect(@model).not_to respond_to(:Nonsense_will_change!)
|
157
157
|
end
|
158
158
|
|
159
159
|
end
|
@@ -161,7 +161,7 @@ describe Base, "Base model" do
|
|
161
161
|
describe "to_partial_path" do
|
162
162
|
it "should return the partial path" do
|
163
163
|
model = MyExampleModel.new()
|
164
|
-
model.to_partial_path.
|
164
|
+
expect(model.to_partial_path).to eq("my_example_models/my_example_model")
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
@@ -17,7 +17,7 @@ describe Concerns::Destroyable, "Destroyable Concern" do
|
|
17
17
|
describe 'destroyed?' do
|
18
18
|
|
19
19
|
it "should not be destroyed" do
|
20
|
-
@model.destroyed
|
20
|
+
expect(@model.destroyed?).to eq(false)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -27,7 +27,7 @@ describe Concerns::Destroyable, "Destroyable Concern" do
|
|
27
27
|
stub_api_delete("/some/place/20101230223226074201000000")
|
28
28
|
@model = MyExampleModel.first
|
29
29
|
@model.destroy
|
30
|
-
@model.destroyed
|
30
|
+
expect(@model.destroyed?).to eq(true)
|
31
31
|
end
|
32
32
|
|
33
33
|
end
|
@@ -31,9 +31,9 @@ describe Concerns::Savable, "Model" do
|
|
31
31
|
it "should be creatable" do
|
32
32
|
@model = MyExampleModel.new({ :Name => "my name" })
|
33
33
|
s = stub_api_post("/test/example", { :MyExampleModels => [ @model.attributes ] }, "base.json")
|
34
|
-
@model.save.
|
35
|
-
@model.persisted
|
36
|
-
s.
|
34
|
+
expect(@model.save).to eq(true)
|
35
|
+
expect(@model.persisted?).to eq(true)
|
36
|
+
expect(s).to have_been_requested
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should be updatable" do
|
@@ -41,37 +41,37 @@ describe Concerns::Savable, "Model" do
|
|
41
41
|
@model = MyExampleModel.first
|
42
42
|
@model.Name = "new name"
|
43
43
|
s = stub_api_put("/some/place/20101230223226074201000000", @model.dirty_attributes)
|
44
|
-
@model.save.
|
45
|
-
@model.persisted
|
46
|
-
s.
|
44
|
+
expect(@model.save).to eq(true)
|
45
|
+
expect(@model.persisted?).to eq(true)
|
46
|
+
expect(s).to have_been_requested
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should allow the pluralize method to be overriden" do
|
50
50
|
@model = MyOtherExampleModel.new({ :Name => "my name" })
|
51
51
|
s = stub_api_post("/test/example", { :MyOtherExampleModelThatIsPluralized => [ @model.attributes ] }, "base.json")
|
52
|
-
@model.save.
|
53
|
-
@model.persisted
|
54
|
-
s.
|
52
|
+
expect(@model.save).to eq(true)
|
53
|
+
expect(@model.persisted?).to eq(true)
|
54
|
+
expect(s).to have_been_requested
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should not pluralize the resource if it already is" do
|
58
58
|
@model = MyPluralizedModels.new({ :Name => "my name" })
|
59
59
|
s = stub_api_post("/test/example", { :MyPluralizedModels => [ @model.attributes ] }, "base.json")
|
60
|
-
@model.save.
|
61
|
-
@model.persisted
|
62
|
-
s.
|
60
|
+
expect(@model.save).to eq(true)
|
61
|
+
expect(@model.persisted?).to eq(true)
|
62
|
+
expect(s).to have_been_requested
|
63
63
|
end
|
64
64
|
|
65
65
|
it "merges any attributes that come back in the response" do
|
66
66
|
@model = MyExampleModel.new({ :Name => "my name" })
|
67
67
|
s = stub_api_post("/test/example", { :MyExampleModels => [ @model.attributes ] }, "base.json")
|
68
|
-
@model.save.
|
69
|
-
@model.persisted
|
70
|
-
@model.Id.
|
71
|
-
@model.ResourceUri.
|
72
|
-
@model.Name.
|
73
|
-
@model.Test.
|
74
|
-
s.
|
68
|
+
expect(@model.save).to eq(true)
|
69
|
+
expect(@model.persisted?).to eq(true)
|
70
|
+
expect(@model.Id).to eq(1)
|
71
|
+
expect(@model.ResourceUri).to eq("/v1/some/place/20101230223226074201000000")
|
72
|
+
expect(@model.Name).to eq("My Example")
|
73
|
+
expect(@model.Test).to eq(true)
|
74
|
+
expect(s).to have_been_requested
|
75
75
|
end
|
76
76
|
|
77
77
|
describe "update_attributes" do
|