spark_api 1.4.34 → 1.5.3
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 +4 -4
- data/README.md +1 -1
- data/VERSION +1 -1
- data/lib/spark_api/authentication/api_auth.rb +5 -3
- data/lib/spark_api/authentication/oauth2.rb +2 -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/media.rb +30 -0
- data/lib/spark_api/models/video.rb +108 -0
- data/lib/spark_api/models/virtual_tour.rb +16 -0
- data/lib/spark_api/models.rb +1 -0
- data/lib/spark_api/request.rb +17 -1
- data/lib/spark_api.rb +1 -0
- data/spec/spec_helper.rb +9 -4
- data/spec/unit/spark_api/authentication/api_auth_spec.rb +40 -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 +58 -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 +4 -4
- 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 +18 -18
- 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 +79 -63
- data/spec/unit/spark_api_spec.rb +6 -6
- metadata +178 -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 |  |