Skip to content

Commit 54111cb

Browse files
committed
Add decrement method to incrementable traits
1 parent ec6ed9d commit 54111cb

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ intercom.users.save(user)
8282
# Perform incrementing
8383
user.increment('karma')
8484
intercom.users.save(user)
85+
# Perform decrementing
86+
user.decrement('karma', 5)
87+
intercom.users.save(user)
8588
# Iterate over all users
8689
intercom.users.all.each {|user| puts %Q(#{user.email} - #{user.custom_attributes["average_monthly_spend"]}) }
8790
intercom.users.all.map {|user| user.email }

lib/intercom/traits/incrementable_attributes.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ def increment(key, value=1)
77
existing_value ||= 0
88
self.custom_attributes[key] = existing_value + value
99
end
10+
11+
def decrement(key, value=1)
12+
existing_value = self.custom_attributes[key] || 0
13+
self.custom_attributes[key] = existing_value - value
14+
end
15+
1016
end
1117
end
1218
end

spec/unit/intercom/user_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,34 @@
148148
end
149149
end
150150

151+
describe "decrementing custom_attributes fields" do
152+
before :each do
153+
@now = Time.now
154+
@user = Intercom::User.new("email" => "[email protected]", :user_id => "i-1224242", :custom_attributes => {"mad" => 123, "another" => 432, "other" => @now.to_i, :thing => "yay"})
155+
end
156+
157+
it "decrements down by 1 with no args" do
158+
@user.decrement("mad")
159+
@user.to_hash["custom_attributes"]["mad"].must_equal 122
160+
end
161+
162+
it "decrements down by given value" do
163+
@user.decrement("mad", 3)
164+
@user.to_hash["custom_attributes"]["mad"].must_equal 120
165+
end
166+
167+
it "can decrement new custom data fields" do
168+
@user.decrement("new_field", 5)
169+
@user.to_hash["custom_attributes"]["new_field"].must_equal -5
170+
end
171+
172+
it "can call decrement on the same key twice and decrement by 2" do
173+
@user.decrement("mad")
174+
@user.decrement("mad")
175+
@user.to_hash["custom_attributes"]["mad"].must_equal 121
176+
end
177+
end
178+
151179
it "fetches a user" do
152180
client.expects(:get).with("/users", {"email" => "[email protected]"}).returns(test_user)
153181
user = client.users.find("email" => "[email protected]")

0 commit comments

Comments
 (0)