spark_api 1.4.29 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- 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 +2 -0
- data/lib/spark_api/models/floplan.rb +24 -0
- data/lib/spark_api/models/listing.rb +11 -1
- data/lib/spark_api/models/media.rb +30 -0
- data/lib/spark_api/models/subresource.rb +2 -2
- data/lib/spark_api/models/video.rb +108 -0
- data/lib/spark_api/models/virtual_tour.rb +16 -0
- 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_spec.rb +20 -20
- 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 +184 -248
@@ -21,18 +21,18 @@ describe Message do
|
|
21
21
|
on_get_it "should get all my messages" do
|
22
22
|
stub_api_get("/messages", 'messages/get.json')
|
23
23
|
messages = Message.find(:all)
|
24
|
-
messages.size.
|
24
|
+
expect(messages.size).to eq(2)
|
25
25
|
end
|
26
26
|
|
27
27
|
on_post_it "should save a new message" do
|
28
28
|
stub_api_post("/messages", 'messages/new.json', 'messages/post.json')
|
29
|
-
subject.save.
|
29
|
+
expect(subject.save).to be(true)
|
30
30
|
end
|
31
31
|
|
32
32
|
on_post_it "should save a new message with recipients" do
|
33
33
|
stub_api_post("/messages", 'messages/new_with_recipients.json', 'messages/post.json')
|
34
34
|
subject.attributes["Recipients"] = ["20110112234857732941000000","20110092234857738467000000"]
|
35
|
-
subject.save.
|
35
|
+
expect(subject.save).to be(true)
|
36
36
|
end
|
37
37
|
|
38
38
|
on_post_it "should fail saving" do
|
@@ -40,8 +40,8 @@ describe Message do
|
|
40
40
|
request.to_return(:status => 400, :body => fixture('errors/failure.json'))
|
41
41
|
end
|
42
42
|
m=subject.class.new
|
43
|
-
m.save.
|
44
|
-
expect{ m.save! }.to raise_error(SparkApi::ClientError){ |e| e.status.
|
43
|
+
expect(m.save).to be(false)
|
44
|
+
expect{ m.save! }.to raise_error(SparkApi::ClientError){ |e| expect(e.status).to eq(400) }
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -49,7 +49,7 @@ describe Message do
|
|
49
49
|
on_get_it "should get a single message" do
|
50
50
|
subject.attributes["Id"] = "20110353423434130982000000"
|
51
51
|
stub_api_get("/messages/#{subject.Id}", "messages/get.json")
|
52
|
-
subject.
|
52
|
+
expect(subject).to be_a(Message)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -57,7 +57,7 @@ describe Message do
|
|
57
57
|
on_get_it "should get all the replies" do
|
58
58
|
subject.attributes["Id"] = "20110353423434130982000000"
|
59
59
|
stub_api_get("/messages/#{subject.Id}/replies", "messages/get.json", :_expand => 'Body, Sender')
|
60
|
-
subject.replies.size.
|
60
|
+
expect(subject.replies.size).to eq(2)
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
@@ -67,13 +67,13 @@ describe Message do
|
|
67
67
|
on_get_it "gets unread messages" do
|
68
68
|
stub_api_get("/messages/unread", 'messages/get.json', {})
|
69
69
|
messages = Message.unread
|
70
|
-
messages.size.
|
71
|
-
messages.first.
|
70
|
+
expect(messages.size).to eq(2)
|
71
|
+
expect(messages.first).to be_a Message
|
72
72
|
end
|
73
73
|
|
74
74
|
on_get_it "gets unread messages count" do
|
75
75
|
stub_api_get("/messages/unread", 'messages/count.json', _pagination: 'count')
|
76
|
-
Message.unread_count.
|
76
|
+
expect(Message.unread_count).to eq(78)
|
77
77
|
end
|
78
78
|
|
79
79
|
end
|
@@ -3,10 +3,10 @@ require './spec/spec_helper'
|
|
3
3
|
describe Note do
|
4
4
|
|
5
5
|
it "responds to instance and class methods" do
|
6
|
-
Note.
|
7
|
-
Note.new.
|
8
|
-
Note.new.
|
9
|
-
Note.new.
|
6
|
+
expect(Note).to respond_to(:get)
|
7
|
+
expect(Note.new).to respond_to(:save)
|
8
|
+
expect(Note.new).to respond_to(:save!)
|
9
|
+
expect(Note.new).to respond_to(:delete)
|
10
10
|
end
|
11
11
|
|
12
12
|
context "when shared with a contact" do
|
@@ -16,19 +16,19 @@ describe Note do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should have the correct path" do
|
19
|
-
@note.path.
|
19
|
+
expect(@note.path).to eq("/listings/1234/shared/notes/contacts/5678")
|
20
20
|
end
|
21
21
|
|
22
22
|
context "/listings/<listing_id>/shared/notes/contacts/<contact_id>", :support do
|
23
23
|
on_get_it "GET should get my notes" do
|
24
24
|
stub_api_get("#{@note.path}", 'notes/agent_shared.json')
|
25
25
|
ret = @note.get
|
26
|
-
ret.Note.
|
26
|
+
expect(ret.Note).to eq("lorem ipsum dolor sit amet")
|
27
27
|
end
|
28
28
|
|
29
29
|
on_get_it "should return a nil when no shared notes exist" do
|
30
30
|
stub_api_get("#{@note.path}", 'notes/agent_shared_empty.json')
|
31
|
-
@note.get.
|
31
|
+
expect(@note.get).to be_nil
|
32
32
|
end
|
33
33
|
|
34
34
|
on_delete_it "should allow you to delete an existing note" do
|
@@ -43,15 +43,15 @@ describe Note do
|
|
43
43
|
request.to_return(:status => 500, :body => fixture('generic_failure.json'))
|
44
44
|
end
|
45
45
|
|
46
|
-
expect { n.save! }.to raise_error(SparkApi::ClientError) { |e| e.status.
|
47
|
-
expect { n.save }.to raise_error(SparkApi::ClientError) { |e| e.status.
|
46
|
+
expect { n.save! }.to raise_error(SparkApi::ClientError) { |e| expect(e.status).to eq(500) }
|
47
|
+
expect { n.save }.to raise_error(SparkApi::ClientError) { |e| expect(e.status).to eq(500) }
|
48
48
|
end
|
49
49
|
|
50
50
|
on_put_it "should allow adding of a note" do
|
51
51
|
n = @note.new(:Note => "lorem ipsum dolor")
|
52
52
|
stub_api_put("#{@note.path}", 'notes/new.json', 'notes/add.json')
|
53
53
|
n.save
|
54
|
-
n.ResourceUri.
|
54
|
+
expect(n.ResourceUri).to eq('/v1/listings/20100909200152674436000000/shared/notes/contacts/20110407212043616271000000/')
|
55
55
|
end
|
56
56
|
|
57
57
|
end
|
@@ -19,13 +19,13 @@ describe Notification do
|
|
19
19
|
stub_api_get('/notifications', 'notifications/notifications.json')
|
20
20
|
|
21
21
|
notifications = Notification.get
|
22
|
-
notifications.
|
23
|
-
notifications.count.
|
22
|
+
expect(notifications).to be_an(Array)
|
23
|
+
expect(notifications.count).to equal(3)
|
24
24
|
end
|
25
25
|
|
26
26
|
on_post_it "should create a new notification" do
|
27
27
|
stub_api_post("/notifications", 'notifications/new.json', 'notifications/post.json')
|
28
|
-
subject.save.
|
28
|
+
expect(subject.save).to be(true)
|
29
29
|
end
|
30
30
|
|
31
31
|
on_post_it "should fail saving" do
|
@@ -36,8 +36,8 @@ describe Notification do
|
|
36
36
|
m.attributes['Message'] = 'Your PDF generation has completed!'
|
37
37
|
m.attributes['BrowserUri'] = 'http://myapplication.com/cmas/19581825.pdf'
|
38
38
|
m.attributes['ResourceUri'] = 'http://myapplication.com/cmas/19581825.json'
|
39
|
-
m.save.
|
40
|
-
expect{ m.save! }.to raise_error(SparkApi::ClientError){ |e| e.status.
|
39
|
+
expect(m.save).to be(false)
|
40
|
+
expect{ m.save! }.to raise_error(SparkApi::ClientError){ |e| expect(e.status).to eq(400) }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -56,7 +56,7 @@ describe Notification do
|
|
56
56
|
stub_api_get('/notifications/unread', 'notifications/unread.json', {:_pagination => 'count'})
|
57
57
|
|
58
58
|
notification_count = Notification.unread
|
59
|
-
notification_count.
|
59
|
+
expect(notification_count).to equal(30)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -14,7 +14,7 @@ describe OpenHouse do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should respond to a few methods" do
|
17
|
-
subject.class.
|
17
|
+
expect(subject.class).to respond_to(:find_by_listing_key)
|
18
18
|
end
|
19
19
|
|
20
20
|
context "/listings/<listing_id>/openhouses", :support do
|
@@ -22,9 +22,9 @@ describe OpenHouse do
|
|
22
22
|
stub_auth_request
|
23
23
|
stub_api_get('/listings/20060412165917817933000000/openhouses','listings/open_houses.json')
|
24
24
|
houses = subject.class.find_by_listing_key('20060412165917817933000000')
|
25
|
-
houses.
|
26
|
-
houses.length.
|
27
|
-
houses.first.Id.
|
25
|
+
expect(houses).to be_an(Array)
|
26
|
+
expect(houses.length).to eq(2)
|
27
|
+
expect(houses.first.Id).to eq("20101127153422574618000000")
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -20,14 +20,14 @@ describe Photo do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "responds to" do
|
23
|
-
subject.
|
24
|
-
Photo.
|
23
|
+
expect(subject).to respond_to(:primary?)
|
24
|
+
expect(Photo).to respond_to(:find_by_listing_key)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "knows if it's the primary photo" do
|
28
|
-
subject.primary
|
28
|
+
expect(subject.primary?).to be true
|
29
29
|
subject.Primary = false
|
30
|
-
subject.primary
|
30
|
+
expect(subject.primary?).to be false
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -42,7 +42,7 @@ describe Photo do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should be scoped to a listing" do
|
45
|
-
subject.class.path.
|
45
|
+
expect(subject.class.path).to eq("/listings/1234/photos")
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "/listings/<listing_id>/photos", :support do
|
@@ -53,7 +53,7 @@ describe Photo do
|
|
53
53
|
|
54
54
|
on_get_it "should get an array of photos" do
|
55
55
|
p = Photo.find_by_listing_key('1234')
|
56
|
-
p.
|
56
|
+
expect(p).to be_an(Array)
|
57
57
|
end
|
58
58
|
|
59
59
|
on_post_it "should upload a new photo" do
|
@@ -62,7 +62,7 @@ describe Photo do
|
|
62
62
|
subject.Caption = "Creators of flexMLS!"
|
63
63
|
subject.load_picture("spec/fixtures/logo_fbs.png")
|
64
64
|
subject.save!
|
65
|
-
subject.Id.
|
65
|
+
expect(subject.Id).to eq("20110826220032167405000000")
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -78,7 +78,7 @@ describe Photo do
|
|
78
78
|
subject.Caption = "Creators of flexMLS!"
|
79
79
|
subject.load_picture("spec/fixtures/logo_fbs.png")
|
80
80
|
subject.save!
|
81
|
-
subject.Id.
|
81
|
+
expect(subject.Id).to eq("20110826220032167405000000")
|
82
82
|
end
|
83
83
|
|
84
84
|
on_put_it "should rotate a photo" do
|
@@ -11,13 +11,13 @@ describe Portal do
|
|
11
11
|
it "should return a new portal if the current user doesn't have one yet" do
|
12
12
|
stub_api_get("/portal", "portal/my_non_existant.json")
|
13
13
|
portal = Portal.my
|
14
|
-
portal.persisted
|
14
|
+
expect(portal.persisted?).to eq(false)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should get the current user's portal" do
|
18
18
|
stub_api_get("/portal", "portal/my.json")
|
19
19
|
portal = Portal.my
|
20
|
-
portal.persisted
|
20
|
+
expect(portal.persisted?).to eq(true)
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should create a portal for the current user" do
|
@@ -35,7 +35,7 @@ describe Portal do
|
|
35
35
|
s = stub_api_put("/portal/20100912153422758914000000", "portal/enable.json", "portal/post.json")
|
36
36
|
portal = Portal.my
|
37
37
|
portal.enable
|
38
|
-
s.
|
38
|
+
expect(s).to have_been_requested
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should disable the current user's portal" do
|
@@ -43,7 +43,7 @@ describe Portal do
|
|
43
43
|
s = stub_api_put("/portal/20100912153422758914000000", "portal/disable.json", "portal/post.json")
|
44
44
|
portal = Portal.my
|
45
45
|
portal.disable
|
46
|
-
s.
|
46
|
+
expect(s).to have_been_requested
|
47
47
|
end
|
48
48
|
|
49
49
|
end
|
@@ -3,7 +3,7 @@ require './spec/spec_helper'
|
|
3
3
|
describe PropertyTypes do
|
4
4
|
|
5
5
|
it "should respond to get" do
|
6
|
-
PropertyTypes.
|
6
|
+
expect(PropertyTypes).to respond_to(:get)
|
7
7
|
end
|
8
8
|
|
9
9
|
describe "/propertytypes", :support do
|
@@ -15,8 +15,8 @@ describe PropertyTypes do
|
|
15
15
|
stub_api_get("/propertytypes", "property_types/property_types.json")
|
16
16
|
|
17
17
|
types = PropertyTypes.get
|
18
|
-
types.
|
19
|
-
types.count.
|
18
|
+
expect(types).to be_an(Array)
|
19
|
+
expect(types.count).to be(6)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -29,8 +29,8 @@ describe PropertyTypes do
|
|
29
29
|
stub_api_get("/propertytypes/all", "property_types/property_types.json")
|
30
30
|
|
31
31
|
types = PropertyTypes.all
|
32
|
-
types.
|
33
|
-
types.count.
|
32
|
+
expect(types).to be_an(Array)
|
33
|
+
expect(types.count).to be(6)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -10,21 +10,23 @@ describe RentalCalendar do
|
|
10
10
|
|
11
11
|
on_get_it "should get an array of rental calendars" do
|
12
12
|
p = RentalCalendar.find_by_listing_key('1234')
|
13
|
-
p.
|
14
|
-
p.length.
|
13
|
+
expect(p).to be_an(Array)
|
14
|
+
expect(p.length).to eq(2)
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe "test include_date method" do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
20
|
+
it "knows about included dates" do
|
21
|
+
cal = RentalCalendar.new
|
22
|
+
cal.StartDate = Date.parse("2012-07-12")
|
23
|
+
cal.EndDate = Date.parse("2012-07-18")
|
24
|
+
expect(cal.include_date?(Date.parse("2012-06-01"))).to be false
|
25
|
+
expect(cal.include_date?(Date.parse("2012-07-12"))).to be true
|
26
|
+
expect(cal.include_date?(Date.parse("2012-07-15"))).to be true
|
27
|
+
expect(cal.include_date?(Date.parse("2012-07-18"))).to be true
|
28
|
+
expect(cal.include_date?(Date.parse("2012-08-01"))).to be false
|
29
|
+
end
|
28
30
|
end
|
29
31
|
|
30
|
-
end
|
32
|
+
end
|
@@ -9,8 +9,8 @@ describe Rule do
|
|
9
9
|
stub_api_get('/listings/rules/propertytypes/A','rules/get.json')
|
10
10
|
|
11
11
|
rules = Rule.for_property_type('A')
|
12
|
-
rules.
|
13
|
-
rules.length.
|
12
|
+
expect(rules).to be_an(Array)
|
13
|
+
expect(rules.length).to eq(2)
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -13,19 +13,19 @@ describe SavedSearch do
|
|
13
13
|
on_get_it "should get all SavedSearches" do
|
14
14
|
stub_api_get("/#{subject.class.element_name}", 'saved_searches/get.json')
|
15
15
|
resources = subject.class.get
|
16
|
-
resources.
|
17
|
-
resources.length.
|
18
|
-
resources.first.Id.
|
16
|
+
expect(resources).to be_an(Array)
|
17
|
+
expect(resources.length).to eq(2)
|
18
|
+
expect(resources.first.Id).to eq(id)
|
19
19
|
end
|
20
20
|
|
21
21
|
on_post_it "should create a saved search" do
|
22
22
|
stub_api_post("/#{subject.class.element_name}", "saved_searches/new.json", "saved_searches/post.json")
|
23
23
|
resource = SavedSearch.new({ :Name => "A new search name here" })
|
24
|
-
resource.
|
24
|
+
expect(resource).to respond_to(:save)
|
25
25
|
resource.save
|
26
|
-
resource.persisted
|
27
|
-
resource.attributes['Id'].
|
28
|
-
resource.attributes['ResourceUri'].
|
26
|
+
expect(resource.persisted?).to eq(true)
|
27
|
+
expect(resource.attributes['Id']).to eq("20100815220615294367000000")
|
28
|
+
expect(resource.attributes['ResourceUri']).to eq("/v1/savedsearches/20100815220615294367000000")
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
@@ -35,15 +35,15 @@ describe SavedSearch do
|
|
35
35
|
on_get_it "should get a SavedSearch" do
|
36
36
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
|
37
37
|
resource = subject.class.find(id)
|
38
|
-
resource.Id.
|
39
|
-
resource.Name.
|
38
|
+
expect(resource.Id).to eq(id)
|
39
|
+
expect(resource.Name).to eq("Search name here")
|
40
40
|
end
|
41
41
|
|
42
42
|
on_put_it "should update a SavedSearch" do
|
43
43
|
stub_api_get("/#{subject.class.element_name}/#{id}", "saved_searches/get.json")
|
44
44
|
stub_api_put("/#{subject.class.element_name}/#{id}", "saved_searches/update.json", "saved_searches/post.json")
|
45
45
|
resource = subject.class.find(id)
|
46
|
-
resource.
|
46
|
+
expect(resource).to respond_to(:save)
|
47
47
|
resource.Name = "A new search name here"
|
48
48
|
resource.save
|
49
49
|
end
|
@@ -52,7 +52,7 @@ describe SavedSearch do
|
|
52
52
|
stub_api_get("/#{subject.class.element_name}/#{id}", "saved_searches/get.json")
|
53
53
|
stub_api_delete("/#{subject.class.element_name}/#{id}", "generic_delete.json")
|
54
54
|
resource = subject.class.find(id)
|
55
|
-
resource.
|
55
|
+
expect(resource).to respond_to(:delete)
|
56
56
|
resource.delete
|
57
57
|
end
|
58
58
|
|
@@ -61,8 +61,8 @@ describe SavedSearch do
|
|
61
61
|
stub_api_put("/#{subject.class.element_name}/#{id}/contacts/20101230223226074306000000", nil, "success.json")
|
62
62
|
resource = subject.class.find(id)
|
63
63
|
resource.attach("20101230223226074306000000")
|
64
|
-
resource.ContactIds.size.
|
65
|
-
resource.ContactIds.any? { |c| c == "20101230223226074306000000" }.
|
64
|
+
expect(resource.ContactIds.size).to eq(2)
|
65
|
+
expect(resource.ContactIds.any? { |c| c == "20101230223226074306000000" }).to eq(true)
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should detach a contact by id" do
|
@@ -70,7 +70,7 @@ describe SavedSearch do
|
|
70
70
|
stub_api_delete("/#{subject.class.element_name}/#{id}/contacts/20100815220615294367000000", "generic_delete.json")
|
71
71
|
resource = subject.class.find(id)
|
72
72
|
resource.detach("20100815220615294367000000")
|
73
|
-
resource.ContactIds.size.
|
73
|
+
expect(resource.ContactIds.size).to eq(0)
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should attach a contact by Contact object" do
|
@@ -78,8 +78,8 @@ describe SavedSearch do
|
|
78
78
|
stub_api_put("/#{subject.class.element_name}/#{id}/contacts/20101230223226074306000000", nil, "success.json")
|
79
79
|
resource = subject.class.find(id)
|
80
80
|
resource.attach(Contact.new({ :Id => "20101230223226074306000000" }))
|
81
|
-
resource.ContactIds.size.
|
82
|
-
resource.ContactIds.any? { |c| c == "20101230223226074306000000" }.
|
81
|
+
expect(resource.ContactIds.size).to eq(2)
|
82
|
+
expect(resource.ContactIds.any? { |c| c == "20101230223226074306000000" }).to eq(true)
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should detach a contact by Contact object" do
|
@@ -87,7 +87,7 @@ describe SavedSearch do
|
|
87
87
|
stub_api_delete("/#{subject.class.element_name}/#{id}/contacts/20100815220615294367000000", "generic_delete.json")
|
88
88
|
resource = subject.class.find(id)
|
89
89
|
resource.detach(Contact.new({:Id => "20100815220615294367000000" }))
|
90
|
-
resource.ContactIds.size.
|
90
|
+
expect(resource.ContactIds.size).to eq(0)
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should initialize ContactIds as an array if nil" do
|
@@ -96,7 +96,7 @@ describe SavedSearch do
|
|
96
96
|
resource = subject.class.find(id)
|
97
97
|
resource.ContactIds = nil
|
98
98
|
resource.detach(Contact.new({:Id => "20100815220615294367000000" }))
|
99
|
-
resource.ContactIds.size.
|
99
|
+
expect(resource.ContactIds.size).to eq(0)
|
100
100
|
end
|
101
101
|
|
102
102
|
describe "listings" do
|
@@ -106,8 +106,8 @@ describe SavedSearch do
|
|
106
106
|
stub_api_get("/listings", 'listings/multiple.json',
|
107
107
|
{:_filter => "SavedSearch Eq '#{id}'"})
|
108
108
|
listings = subject.class.find(id).listings
|
109
|
-
listings.
|
110
|
-
listings[0].
|
109
|
+
expect(listings).to be_an(Array)
|
110
|
+
expect(listings[0]).to be_a(Listing)
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should include the permissive parameter for provided searches" do
|
@@ -133,9 +133,9 @@ describe SavedSearch do
|
|
133
133
|
on_get_it "should get provided SavedSearches" do
|
134
134
|
stub_api_get("/provided/#{subject.class.element_name}", 'saved_searches/get.json')
|
135
135
|
resources = subject.class.provided.get
|
136
|
-
resources.
|
137
|
-
resources.length.
|
138
|
-
resources.first.Id.
|
136
|
+
expect(resources).to be_an(Array)
|
137
|
+
expect(resources.length).to eq(2)
|
138
|
+
expect(resources.first.Id).to eq(id)
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
@@ -143,7 +143,7 @@ describe SavedSearch do
|
|
143
143
|
on_get_it "should get tagged SavedSearches" do
|
144
144
|
stub_api_get("/#{subject.class.element_name}/tags/Favorite", 'saved_searches/get.json')
|
145
145
|
resources = subject.class.tagged("Favorite")
|
146
|
-
resources.
|
146
|
+
expect(resources).to be_an(Array)
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -155,24 +155,24 @@ describe SavedSearch do
|
|
155
155
|
|
156
156
|
resource = subject.class.find(id)
|
157
157
|
contacts = resource.contacts
|
158
|
-
contacts.
|
158
|
+
expect(contacts).to be_an(Array)
|
159
159
|
end
|
160
160
|
|
161
161
|
it "should return an empty array if model isn't persisted" do
|
162
162
|
resource = SavedSearch.new
|
163
|
-
resource.contacts.
|
163
|
+
expect(resource.contacts).to be_an(Array)
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
167
167
|
describe "favorite?" do
|
168
168
|
it "should return true if the search has been tagged as a favorite" do
|
169
169
|
search = SavedSearch.new(Tags: ["Favorites"])
|
170
|
-
search.
|
170
|
+
expect(search).to be_favorite
|
171
171
|
end
|
172
172
|
|
173
173
|
it "should return false if the search has not been tagged as a favorite" do
|
174
174
|
search = SavedSearch.new
|
175
|
-
search.
|
175
|
+
expect(search).not_to be_favorite
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
@@ -182,7 +182,7 @@ describe SavedSearch do
|
|
182
182
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/with_newsfeed.json',
|
183
183
|
{ "_expand" => "NewsFeedSubscriptionSummary" } )
|
184
184
|
resource = subject.class.find(id)
|
185
|
-
resource.has_active_newsfeed
|
185
|
+
expect(resource.has_active_newsfeed?).to eq(true)
|
186
186
|
end
|
187
187
|
|
188
188
|
it "should return false if the search doesn't have a newsfeed" do
|
@@ -190,7 +190,7 @@ describe SavedSearch do
|
|
190
190
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/without_newsfeed.json',
|
191
191
|
{ "_expand" => "NewsFeedSubscriptionSummary" } )
|
192
192
|
resource = subject.class.find(id)
|
193
|
-
resource.has_active_newsfeed
|
193
|
+
expect(resource.has_active_newsfeed?).to eq(false)
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
@@ -200,7 +200,7 @@ describe SavedSearch do
|
|
200
200
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/with_inactive_newsfeed.json',
|
201
201
|
{ "_expand" => "NewsFeedSubscriptionSummary" } )
|
202
202
|
resource = subject.class.find(id)
|
203
|
-
resource.has_inactive_newsfeed
|
203
|
+
expect(resource.has_inactive_newsfeed?).to eq(true)
|
204
204
|
end
|
205
205
|
|
206
206
|
it "should return false if the search doesn't have a newsfeed" do
|
@@ -208,7 +208,7 @@ describe SavedSearch do
|
|
208
208
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/without_newsfeed.json',
|
209
209
|
{ "_expand" => "NewsFeedSubscriptionSummary, NewsFeeds" } )
|
210
210
|
resource = subject.class.find(id)
|
211
|
-
resource.has_inactive_newsfeed
|
211
|
+
expect(resource.has_inactive_newsfeed?).to eq(false)
|
212
212
|
end
|
213
213
|
|
214
214
|
end
|
@@ -219,7 +219,7 @@ describe SavedSearch do
|
|
219
219
|
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/with_newsfeed.json',
|
220
220
|
{ "_expand" => "NewsFeeds" } )
|
221
221
|
resource = subject.class.find(id)
|
222
|
-
resource.newsfeeds.
|
222
|
+
expect(resource.newsfeeds).to be_an(Array)
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|