Skip to content

Commit 9dc98b1

Browse files
committed
Merge pull request #97 from ryanhertz/add-permissive-param-to-provided-search
added permissive param to provided searches
2 parents b9c4bb2 + 66d6d70 commit 9dc98b1

File tree

2 files changed

+38
-14
lines changed

2 files changed

+38
-14
lines changed

lib/spark_api/models/saved_search.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ def contacts
6363
end
6464

6565
def listings(args = {})
66-
arguments = {:_filter => self.Filter}.merge(args)
67-
@listings ||= Listing.collect(connection.get("/listings", arguments))
66+
arguments = {:_filter => self.Filter}
67+
arguments.merge!(:RequestMode => 'permissive') if provided_search?
68+
@listings ||= Listing.collect(connection.get("/listings", arguments.merge(args)))
6869
end
6970

7071
def newsfeeds

spec/unit/spark_api/models/saved_search_spec.rb

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,35 @@
9999
resource.ContactIds.size.should eq(0)
100100
end
101101

102+
describe "listings" do
103+
104+
it "should return the searches listings" do
105+
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
106+
stub_api_get("/listings", 'listings/multiple.json',
107+
{:_filter => "City Eq 'Moorhead' And MlsStatus Eq 'Active' And PropertyType Eq 'A'"})
108+
listings = subject.class.find(id).listings
109+
listings.should be_an(Array)
110+
listings[0].should be_a(Listing)
111+
end
112+
113+
it "should include the permissive parameter for provided searches" do
114+
stub_api_get("/provided/savedsearches/#{id}", 'saved_searches/get.json')
115+
resource = subject.class.provided.find(id)
116+
expect(SparkApi.client).to receive(:get).with("/listings",
117+
{:_filter => resource.Filter, :RequestMode => 'permissive'})
118+
resource.listings
119+
end
120+
121+
it "should not include the permissive parameter for saved searches" do
122+
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
123+
resource = subject.class.find(id)
124+
resource.stub(:provided_search?) { false }
125+
expect(SparkApi.client).to receive(:get).with("/listings", {:_filter => resource.Filter})
126+
resource.listings
127+
end
128+
129+
end
130+
102131
end
103132

104133
context "/provided/savedsearches", :support do
@@ -139,18 +168,14 @@
139168
describe "can_have_newsfeed?" do
140169

141170
it "should return false for a provided search" do
142-
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
143-
resource = subject.class.find(id)
144-
resource.stub(:provided_search?) { true }
171+
stub_api_get("/provided/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
172+
resource = subject.class.provided.find(id)
145173
resource.can_have_newsfeed?.should == false
146174
end
147175

148176
it "should return false without at least three filter parameters" do
149177
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
150178
resource = subject.class.find(id)
151-
resource.stub(:provided_search?) { false }
152-
resource.stub(:has_active_newsfeed?) { false }
153-
resource.stub(:has_inactive_newsfeed?) { false }
154179
resource.Filter = "City Eq 'Moorhead' And MlsStatus Eq 'Active'"
155180
resource.can_have_newsfeed?.should == false
156181
end
@@ -177,9 +202,8 @@
177202
end
178203

179204
it "should return false for a provided search" do
180-
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
181-
resource = subject.class.find(id)
182-
resource.stub(:provided_search?) { true }
205+
stub_api_get("/provided/#{subject.class.element_name}/#{id}", 'saved_searches/get.json')
206+
resource = subject.class.provided.find(id)
183207
resource.has_active_newsfeed?.should == false
184208
end
185209
end
@@ -195,9 +219,8 @@
195219
end
196220

197221
it "should return false for a provided search" do
198-
stub_api_get("/#{subject.class.element_name}/#{id}", 'saved_searches/with_inactive_newsfeed.json')
199-
resource = subject.class.find(id)
200-
resource.stub(:provided_search?) { true }
222+
stub_api_get("/provided/#{subject.class.element_name}/#{id}", 'saved_searches/with_inactive_newsfeed.json')
223+
resource = subject.class.provided.find(id)
201224
resource.has_inactive_newsfeed?.should == false
202225
end
203226
end

0 commit comments

Comments
 (0)