Skip to content

Commit 4ad9bd0

Browse files
committed
Merge branch 'master' of github.com:ryanhertz/spark_api into add-newsfeed-methods-to-saved-search-model
2 parents f116be9 + 7f2c7fb commit 4ad9bd0

File tree

8 files changed

+78
-17
lines changed

8 files changed

+78
-17
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.18
1+
1.3.21

lib/spark_api/models/finders.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ def find(*arguments)
88
scope = arguments.slice!(0)
99
options = arguments.slice!(0) || {}
1010
case scope
11+
when nil then raise ArgumentError, "Argument for find() can't be nil"
1112
when :all then find_every(options)
1213
when :first then find_every(options).first
1314
when :last then find_every(options).last

lib/spark_api/models/listing.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,8 @@ def shared_notes(fore=nil)
128128
end
129129
end
130130

131-
def street_address
132-
"#{self.StreetNumber} #{self.StreetDirPrefix} #{self.StreetName} #{self.StreetSuffix} #{self.StreetDirSuffix} #{self.StreetAdditionalInfo}".delete(DATA_MASK).strip().gsub(/\s{2,}/, ' ')
131+
def street_address
132+
(self.UnparsedFirstLineAddress || '').delete(DATA_MASK).strip().gsub(/\s{2,}/, ' ')
133133
end
134134

135135
def region_address

lib/spark_api/models/photo.rb

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ module Models
55
class Photo < Base
66
extend Subresource
77
self.element_name = "photos"
8-
8+
99
attr_accessor :update_path
10-
10+
1111
EDITABLE_FIELDS = [:Picture, :FileName, :Name, :Caption, :Primary]
12-
12+
1313
def initialize(opts={})
1414
defaulted_opts = {}
1515
EDITABLE_FIELDS.each do |k|
@@ -19,10 +19,10 @@ def initialize(opts={})
1919
super(opts.merge(defaulted_opts))
2020
end
2121

22-
def primary?
23-
@attributes["Primary"] == true
22+
def primary?
23+
@attributes["Primary"] == true
2424
end
25-
25+
2626
def save(arguments={})
2727
begin
2828
return save!(arguments)
@@ -44,12 +44,12 @@ def save!(arguments={})
4444
load(result)
4545
true
4646
end
47-
47+
4848
def load_picture(file_name)
4949
self.Picture = Base64.encode64(File.open(file_name, 'rb').read).gsub(/\n/, '')
5050
self.FileName = File.basename(file_name)
5151
end
52-
52+
5353
def delete(args={})
5454
connection.delete("#{update_path}/#{self.Id}", args)
5555
end
@@ -58,15 +58,24 @@ def rollback(version)
5858
payload = {"Version" => version}
5959
connection.put "#{update_path}/#{self.Id}/versions/current", payload
6060
end
61-
61+
62+
63+
def rotate!(direction)
64+
unless [:clockwise, :counterclockwise].include? direction.to_sym
65+
raise ArgumentError, "Photo rotate failed. '#{direction}' is not supported."
66+
end
67+
payload = { 'Photos' => [{'Rotate' => direction.to_s }] }
68+
connection.put "#{self.update_path}/#{self.Id}", payload
69+
end
70+
6271
def exists?
6372
@attributes.include?("Id")
6473
end
65-
74+
6675
private
67-
76+
6877
def build_photo_hash
69-
results_hash = {}
78+
results_hash = {}
7079
EDITABLE_FIELDS.each do |k|
7180
key = k.to_s
7281
results_hash[key] = @attributes[key] unless @attributes[key].nil?
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"D": {
3+
"Photos": [
4+
{"Rotate": "clockwise"}
5+
]
6+
}
7+
}

spec/unit/spark_api/models/finders_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,21 @@ class MyResource < Base
3232
resource.Id.should eq(1)
3333
end
3434

35+
describe "find" do
36+
37+
it "should throw an error if no argument is passed" do
38+
stub_api_get("/my_resource/", 'finders.json')
39+
lambda {
40+
MyResource.find()
41+
}.should raise_error(ArgumentError)
42+
end
43+
44+
it "should throw an error when the first argument is nil" do
45+
stub_api_get("/my_resource/", 'finders.json', {:_limit => 1})
46+
lambda {
47+
MyResource.find(nil, {:_limit => 1})
48+
}.should raise_error(ArgumentError)
49+
end
50+
51+
end
3552
end

spec/unit/spark_api/models/listing_spec.rb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"City"=>"Fargo",
1212
"Longitude"=>"",
1313
"StreetName"=>"Someone's",
14+
"UnparsedFirstLineAddress"=>"100 Someone's St",
1415
"YearBuilt"=>nil,
1516
"BuildingAreaTotal"=>"1321.0",
1617
"PublicRemarks"=>nil,
@@ -86,8 +87,22 @@
8687
@listing.should_not respond_to(:Videos)
8788
end
8889

89-
it "should return street address" do
90-
@listing.street_address.should eq("100 Someone's St")
90+
describe '.street_address' do
91+
it 'should return the street address' do
92+
@listing.street_address.should eq("100 Someone's St")
93+
end
94+
95+
it 'should remove data masks' do
96+
@listing.StandardFields["UnparsedFirstLineAddress"] = "********"
97+
@listing.street_address.should eq("")
98+
end
99+
100+
it 'should handle a missing unparsed first line address' do
101+
[nil, '', ' '].each do |current|
102+
@listing.StandardFields['UnparsedFirstLineAddress'] = current
103+
@listing.street_address.should eq('')
104+
end
105+
end
91106
end
92107

93108
it "should return the regional address" do

spec/unit/spark_api/models/photo_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@
8181
subject.Id.should eq("20110826220032167405000000")
8282
end
8383

84+
on_put_it "should rotate a photo" do
85+
stub_api_put('/listings/1234/photos/20110826220032167405000000', 'listings/photos/rotate.json', 'success.json')
86+
subject.Id = "20110826220032167405000000"
87+
subject.rotate!('clockwise')
88+
end
89+
90+
on_put_it "should raise an exception for an invalid rotate parameter" do
91+
stub_api_put('/listings/1234/photos/20110826220032167405000000', 'listings/photos/rotate.json', 'success.json')
92+
subject.Id = "20110826220032167405000000"
93+
expect { subject.rotate!('left') }.to raise_error(ArgumentError)
94+
end
95+
8496
on_delete_it "should delete a photo" do
8597
stub_api_delete('/listings/1234/photos/20110826220032167405000000','success.json')
8698
subject.Id = "20110826220032167405000000"

0 commit comments

Comments
 (0)