traffic_mansion 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
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