Skip to content

Commit ed3bbd8

Browse files
committed
Bump version, created -> created_at, default to Time.now, and a type added.
1 parent 14f6c32 commit ed3bbd8

File tree

5 files changed

+36
-26
lines changed

5 files changed

+36
-26
lines changed

changes.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
0.1.20
1+
0.2.0
22
- Add UserEvents.
33

44
0.1.19

lib/intercom/user_event.rb

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,22 @@ module Intercom
88
# Represents a User Event
99
#
1010
# A user event consists of an event_name and a user the event applies to. The user is identified via email or id.
11-
# Optionally, a created timestamp may be supplied.
11+
# Additionally, a created timestamp is required.
1212
#
1313
# == Examples
1414
#
15-
# user_event = Intercom::UserEvent.create(:event_name => "funkratic", :created => Time.now, :company_id: "6", :user => current_user)
15+
# user_event = Intercom::UserEvent.create(:event_name => "post", :user => current_user, :created => Time.now)
1616
#
1717
# You can also create an user-event and save it like this:
1818
# user_event = Intercom::UserEvent.new
19-
# user_event.event_name = "funkratic"
20-
# user_event.created = Time.now
19+
# user_event.event_name = "publish-post"
2120
# user_event.user = current_user
21+
# user_event.created = Time.now
22+
# user_event.metadata = {
23+
# :title => 'Gravity Review',
24+
# :link => 'https://example.org/posts/22',
25+
# :comments => 'https://example.org/posts/22/comments'
26+
# }
2227
# user_event.save
2328
#
2429
# == Batch
@@ -27,20 +32,23 @@ module Intercom
2732
# without calling .create, as follows:
2833
#
2934
# user_event = Intercom::UserEvent.new
30-
# user_event.event_name = "funkratic"
35+
# user_event.event_name = "publish-post"
3136
# user_event.user = current_user
3237
#
3338
# Then pass them to the save_batch_events class method, along with an (optional) default user:
3439
#
3540
# Intercom::UserEvent.save_batch_events(events, default_user)
3641
#
3742
# Any events without a user will be assigned to the default_user.
43+
#
44+
# Note: if you do not supply a created time, the current time in UTC will be used. Events that have the same
45+
# user, name, and created time (to second granularity) may be treated as duplicates by the server.
3846

3947
class UserEvent
4048
extend RequiresParameters
4149
include HashableObject
4250

43-
attr_accessor :event_name, :user, :created # required
51+
attr_accessor :event_name, :user, :created_at # required
4452
attr_accessor :metadata, :type
4553

4654
def initialize(attributes={})
@@ -51,8 +59,8 @@ def initialize(attributes={})
5159
# Creates a new User Event using params and saves it
5260
# @see #save
5361
def self.create(params)
54-
params[:created] ||= Time.now
55-
requires_parameters(params, %W(event_name user created))
62+
params[:created_at] ||= Time.now
63+
requires_parameters(params, %W(event_name user created_at))
5664
UserEvent.new(params).save
5765
end
5866

@@ -84,8 +92,8 @@ def user_hash
8492
end
8593

8694
def event_hash
87-
event = { :event_name => event_name, :created => created.to_i }
88-
event[:type] = type unless type.nil?
95+
event = { :event_name => event_name, :created => created_at.nil? ? Time.now.utc.to_i : created_at.to_i }
96+
event[:type] = type.nil? ? 'event' : type
8997
event[:user] = user_hash unless user.nil?
9098
event[:metadata] = metadata unless metadata.nil?
9199
event

lib/intercom/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Intercom #:nodoc:
2-
VERSION = "0.1.20"
2+
VERSION = "0.2.0"
33
end

spec/integration/intercom_api_integration_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def fixture(name)
7474
FakeWeb.register_uri(:get, %r(v1/users\?email=), :body => fixture('v1-user'))
7575
user = Intercom::User.find(:email => "[email protected]")
7676
FakeWeb.register_uri(:post, %r(/events), :status => ["202", "Created"])
77-
Intercom::UserEvent.create(:event_name => "signup", :created => 1391691571, :user => user).event_name.must_equal "signup"
77+
Intercom::UserEvent.create(:event_name => "signup", :created_at => 1391691571, :user => user).event_name.must_equal "signup"
7878
end
7979

8080
it "should create batch user events" do
@@ -83,12 +83,12 @@ def fixture(name)
8383

8484
first_event = Intercom::UserEvent.new
8585
first_event.event_name = "first event"
86-
first_event.created = Time.now
86+
first_event.created_at = Time.now
8787
first_event.user = user
8888

8989
second_event = Intercom::UserEvent.new
9090
second_event.event_name = "second event"
91-
second_event.created = Time.now
91+
second_event.created_at = Time.now
9292

9393
FakeWeb.register_uri(:post, %r(/events), :status => ["202", "Created"])
9494
Intercom::UserEvent.save_batch_events([first_event, second_event], user)

spec/unit/intercom/user_event_spec.rb

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,17 @@
88
it "creates a user event" do
99
Intercom.expects(:post).with("/events",
1010
{ :type => 'event.list',
11-
:data => [ {:event_name => "signup", :created => created_time.to_i, :user => { :user_id => user.user_id}
11+
:data => [ {:event_name => "signup", :created => created_time.to_i, :type => 'event',
12+
:user => { :user_id => user.user_id}, :metadata => {:some => "data"}
1213
}]}).returns(:status => 200)
1314

14-
Intercom::UserEvent.create({ :event_name => "signup", :user => user, :created => created_time })
15+
Intercom::UserEvent.create({ :event_name => "signup", :user => user, :created_at => created_time, :metadata => {:some => "data"} })
1516
end
1617

1718
it 'automatically adds a created time upon creation' do
1819
Intercom.expects(:post).with("/events",
1920
{ :type => 'event.list',
20-
:data => [ {:event_name => "sale of item", :created => Time.now.to_i, :user => { :user_id => user.user_id}
21+
:data => [ {:event_name => "sale of item", :created => Time.now.to_i, :type => 'event', :user => { :user_id => user.user_id}
2122
}]}).returns(:status => 200)
2223

2324
Intercom::UserEvent.create({ :event_name => "sale of item", :user => user })
@@ -26,15 +27,15 @@
2627
it "creates a user event with metadata" do
2728
Intercom.expects(:post).with("/events",
2829
{ :type => 'event.list',
29-
:data => [ {:event_name => "signup", :created => created_time.to_i, :user => { :user_id => user.user_id}, :metadata => { :something => "here"}
30+
:data => [ {:event_name => "signup", :created => created_time.to_i, :type => 'event', :user => { :user_id => user.user_id}, :metadata => { :something => "here"}
3031
}]}).returns(:status => 200)
31-
Intercom::UserEvent.create({ :event_name => "signup", :user => user, :created => created_time, :metadata => { :something => "here"} })
32+
Intercom::UserEvent.create({ :event_name => "signup", :user => user, :created_at => created_time, :metadata => { :something => "here"} })
3233
end
3334

3435
it 'fails when no user supplied' do
3536
user_event = Intercom::UserEvent.new
3637
user_event.event_name = "some event"
37-
user_event.created = Time.now
38+
user_event.created_at = Time.now
3839
proc { user_event.save }.must_raise ArgumentError, "Missing User"
3940
end
4041

@@ -43,25 +44,26 @@
4344
let (:event1) do
4445
user_event = Intercom::UserEvent.new
4546
user_event.event_name = "first event"
46-
user_event.created = Time.now
47+
user_event.created_at = Time.now
4748
user_event.user = user
4849
user_event
4950
end
5051

5152
let (:event2) do
5253
user_event = Intercom::UserEvent.new
5354
user_event.event_name = "second event"
54-
user_event.created = Time.now
55+
user_event.created_at = Time.now
5556
user_event
5657
end
5758

5859
it 'creates batched events' do
5960
Intercom.expects(:post).with("/events",
6061
{ :type => 'event.list',
6162
:data => [
62-
{:event_name => "first event", :created => event1.created.to_i,
63-
:user => {:user_id => user.user_id}},
64-
{:event_name => "second event", :created => event2.created.to_i },
63+
{:event_name => "first event", :created => event1.created_at.to_i,
64+
:type => 'event', :user => {:user_id => user.user_id}},
65+
{:event_name => "second event", :created => event2.created_at.to_i,
66+
:type => 'event'},
6567
],
6668
:user => { :user_id => user.user_id}}).returns(:status => 200)
6769
Intercom::UserEvent.save_batch_events([event1, event2], user)

0 commit comments

Comments
 (0)