spark_api 1.4.28 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|