traffic_mansion 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a4e05cf8d2d6d40c3e987b8d11a38a95e3eb1a1
4
- data.tar.gz: c3982ed383e534acf243439a2e16bce2bce8d670
3
+ metadata.gz: 6437be2faa31736634daf27280d51bdf320565f8
4
+ data.tar.gz: ab887e60ee77d25a7ecaeb0eb41c23d4d2f6addf
5
5
  SHA512:
6
- metadata.gz: 8943f9f2c4901ae0d748dbf76869db31151151f3caa59a2144e7c1e9c7f94e62be70ac78c259ac067a6b24115d40d285aef63b11ecb15d2ba51f314b68cfff15
7
- data.tar.gz: 1e202381df9c51c6e3618f0f4d5eb4c9f0afbdc414098f9a6599f76bc43b560bb23e34944e1fca317e468695d2902ebc538ab4d3f83a16fd220d13dbcf8f7f96
6
+ metadata.gz: 7a4676cb050c6539846aa0996278aa54db7a7ccc5754e92e969bfca92cea412647aef0c5214772bf0f408edafe0042d779099c6606372ba70f3cc3f7914e4a32
7
+ data.tar.gz: 36908c2d01215069578f34d45af73314430a5648c79f2b6c70377d28515e6a3e5ad37302498094cc1bca26e6c1bbe6c963c333dce8acde4b4645e9b8d8247732
@@ -35,7 +35,9 @@ module TrafficMansion
35
35
  "remote_addr" => remote_ip,
36
36
  "http_referer" => referer
37
37
  }
38
- TrafficMansion::Queue::add "signup", parent_event_id, event_data
38
+ event = TrafficMansion::Queue::add "signup", parent_event_id, event_data
39
+ TrafficMansion::Queue::update_user_id_for_visit parent_event_id, user_id
40
+ event
39
41
  end
40
42
 
41
43
  def self.add_sale user_id, payment_id, amount, product_code, remote_ip, referer, timestamp = Time.now.to_i
@@ -91,6 +93,25 @@ module TrafficMansion
91
93
  TrafficMansion::Queue.where(:user_id => user_id, :type => "signup").first
92
94
  end
93
95
 
96
+ def self.update_user_id_for_visit visit_event_id, user_id
97
+ visit = TrafficMansion::Queue.where(:id => visit_event_id).first
98
+ if visit
99
+ visit.set :user_id, user_id
100
+ end
101
+ end
102
+
103
+ def self.find_user_tracked_data user_id
104
+ visit = TrafficMansion::Queue.where(:type => "visit", :user_id => user_id, :processed => true).first
105
+ if visit && visit.result.present?
106
+ return visit.result
107
+ end
108
+ nil
109
+ end
110
+
111
+ def self.find_not_processed
112
+ where(:processed => false)
113
+ end
114
+
94
115
  def process
95
116
  if !parent? && parent_event_id.nil?
96
117
  update_parent_event_id
@@ -1,3 +1,3 @@
1
1
  module TrafficMansion
2
- VERSION = "0.0.16"
2
+ VERSION = "0.0.17"
3
3
  end
data/spec/queue_spec.rb CHANGED
@@ -34,45 +34,51 @@ describe TrafficMansion::Queue do
34
34
  end
35
35
 
36
36
  describe "self.add_signup" do
37
- let(:parent_event_id) { "campaign_id" }
38
- let(:user_id) { "user_id" }
39
- let(:remote_ip) { "remote_ip" }
40
- let(:referer) { "referer" }
37
+ let!(:parent_event) { TrafficMansion::Queue.add "visit" }
38
+ let(:user_id) { "user_id" }
39
+ let(:remote_ip) { "remote_ip" }
40
+ let(:referer) { "referer" }
41
41
 
42
42
  it "persists the signup" do
43
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
43
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
44
44
  TrafficMansion::Queue.last.type.should eql "signup"
45
45
  end
46
46
 
47
47
  it "persists the parent event id" do
48
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
49
- TrafficMansion::Queue.last.parent_event_id.should eql parent_event_id
48
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
49
+ TrafficMansion::Queue.last.parent_event_id.should eql parent_event.id.to_s
50
50
  end
51
51
 
52
52
  it "persists the user id" do
53
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
53
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
54
54
  TrafficMansion::Queue.last.user_id.should eql user_id
55
55
  end
56
56
 
57
57
  it "persists the user id" do
58
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
58
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
59
59
  TrafficMansion::Queue.last.data["user_id"].should eql user_id
60
60
  end
61
61
 
62
62
  it "persists the remote ip" do
63
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
63
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
64
64
  TrafficMansion::Queue.last.data["remote_addr"].should eql remote_ip
65
65
  end
66
66
 
67
67
  it "persists the referer" do
68
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer
68
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer
69
69
  TrafficMansion::Queue.last.data["http_referer"].should eql referer
70
70
  end
71
71
 
72
72
  it "persists the timestamp" do
73
- TrafficMansion::Queue.add_signup parent_event_id, user_id, remote_ip, referer, 69
73
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer, 69
74
74
  TrafficMansion::Queue.last.data["timestamp"].should eql 69
75
75
  end
76
+
77
+ it "updates the user id of the parent visit" do
78
+ TrafficMansion::Queue.add_signup parent_event.id, user_id, remote_ip, referer, 69
79
+ parent_event.reload
80
+ parent_event.user_id.should eql user_id
81
+ end
76
82
  end
77
83
 
78
84
  describe "self.add_sale" do
@@ -258,6 +264,55 @@ describe TrafficMansion::Queue do
258
264
  end
259
265
  end
260
266
 
267
+ describe "self.update_user_id_for_visit" do
268
+ let!(:event) { TrafficMansion::Queue.add "visit"}
269
+
270
+ it "updates the event's user id with the given one" do
271
+ TrafficMansion::Queue.update_user_id_for_visit event.id, "user_id"
272
+ event.reload
273
+ event.user_id.should eql "user_id"
274
+ end
275
+ end
276
+
277
+ describe "self.find_user_tracked_data" do
278
+ context "when there is a processed visit event that contains a successful TM result" do
279
+ let(:result) { {"result" => "result"} }
280
+
281
+ before :each do
282
+ TrafficMansion::Queue.create :type => "visit", :user_id => "user_id", :processed => true, :result => result
283
+ end
284
+
285
+ it "returns the TM result" do
286
+ TrafficMansion::Queue.find_user_tracked_data("user_id").should eql result
287
+ end
288
+ end
289
+ context "when there is a processed visit event that does not contain a successful TM result" do
290
+ let(:result) { {} }
291
+
292
+ before :each do
293
+ TrafficMansion::Queue.create :type => "visit", :user_id => "user_id", :processed => true, :result => result
294
+ end
295
+
296
+ it "returns nil" do
297
+ TrafficMansion::Queue.find_user_tracked_data("user_id").should be_nil
298
+ end
299
+ end
300
+ context "when there is no processed visit event" do
301
+ it "returns nil" do
302
+ TrafficMansion::Queue.find_user_tracked_data("user_id").should be_nil
303
+ end
304
+ end
305
+ end
306
+
307
+ describe "self.find_not_processed" do
308
+ let!(:processed_event) { TrafficMansion::Queue.create :type => "visit", :processed => true }
309
+ let!(:not_processed_event) { TrafficMansion::Queue.add "visit"}
310
+
311
+ it "returns the non processed events back" do
312
+ TrafficMansion::Queue.find_not_processed.to_a.should eql [not_processed_event]
313
+ end
314
+ end
315
+
261
316
  describe :process do
262
317
  context "when it is a visit event" do
263
318
  let!(:event) { TrafficMansion::Queue.add "visit"}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traffic_mansion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - AgileWings
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-06 00:00:00.000000000 Z
11
+ date: 2013-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler