Skip to content

Commit 56e909d

Browse files
committed
added update_attributes to savable and #favorite? to saved_search
1 parent 4f10c6c commit 56e909d

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

lib/spark_api/models/concerns/savable.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,17 @@ def save!(arguments = {})
2222

2323
def create!(arguments = {})
2424
results = connection.post self.path, post_data.merge(params_for_save), arguments
25-
update_attributes(results.first)
25+
update_attributes_after_create(results.first)
2626
reset_dirty
2727
params_for_save.clear
2828
true
2929
end
3030

31+
def update_attributes(attrs = {})
32+
attrs.each{|k,v| public_send(:"#{k}=", v)}
33+
save!
34+
end
35+
3136
def update!(arguments = {})
3237
return true unless changed? && persisted?
3338
connection.put resource_uri, dirty_attributes, arguments
@@ -48,7 +53,7 @@ def post_data
4853

4954
private
5055

51-
def update_attributes(result)
56+
def update_attributes_after_create(result)
5257
attributes['Id'] = result['Id'] ? result['Id'] : parse_id(result['ResourceUri'])
5358
result.delete('Id')
5459
attributes.merge! result

lib/spark_api/models/saved_search.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ def self.tagged(tag, arguments={})
3535
collect(connection.get("/#{self.element_name}/tags/#{tag}", arguments))
3636
end
3737

38+
def favorite?
39+
@attributes["Tags"] && @attributes["Tags"].include?( "Favorites")
40+
end
41+
3842
# list contacts (private role)
3943
def contacts
4044
return [] unless persisted?

spec/unit/spark_api/models/saved_search_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,18 @@
165165
end
166166
end
167167

168+
describe "favorite?" do
169+
it "should return true if the search has been tagged as a favorite" do
170+
search = SavedSearch.new(Tags: ["Favorites"])
171+
search.should be_favorite
172+
end
173+
174+
it "should return false if the search has not been tagged as a favorite" do
175+
search = SavedSearch.new
176+
search.should_not be_favorite
177+
end
178+
end
179+
168180
describe "can_have_newsfeed?" do
169181

170182
it "should return false without at least three filter parameters" do

0 commit comments

Comments
 (0)