traffic_mansion 0.0.15 → 0.0.16

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: 8dabb7b8252e7bb3a3377316678e3b85b480b3dc
4
- data.tar.gz: cb16034a271c1e02ba0a4d3040be03f75e0b2d40
3
+ metadata.gz: 8a4e05cf8d2d6d40c3e987b8d11a38a95e3eb1a1
4
+ data.tar.gz: c3982ed383e534acf243439a2e16bce2bce8d670
5
5
  SHA512:
6
- metadata.gz: 2c3b8fa03098c2cb4e40673d8c9f2865fb9aa5304f2ea0778979dac386d27c8240a3ce59bd99e8053bce87cd2ec0f8273ee140c995bb7f792dd18ffd02e56e09
7
- data.tar.gz: e04ce7edd4845f6ac7c14df8a91bbeb059e808121ab2506550a05c71d199a278d75e293abb50b4126bed22eb472a16b1f9042ecd3668a706f0eb0d85fd2a19fa
6
+ metadata.gz: 8943f9f2c4901ae0d748dbf76869db31151151f3caa59a2144e7c1e9c7f94e62be70ac78c259ac067a6b24115d40d285aef63b11ecb15d2ba51f314b68cfff15
7
+ data.tar.gz: 1e202381df9c51c6e3618f0f4d5eb4c9f0afbdc414098f9a6599f76bc43b560bb23e34944e1fca317e468695d2902ebc538ab4d3f83a16fd220d13dbcf8f7f96
@@ -9,6 +9,7 @@ module TrafficMansion
9
9
  field :parent_event_id, :type => String
10
10
  field :user_id, :type => String
11
11
  field :data, :type => Hash
12
+ field :last_error, :type => String
12
13
  field :result, :type => Hash
13
14
  field :processed, :type => Boolean, :default => false
14
15
 
@@ -110,30 +111,43 @@ module TrafficMansion
110
111
  self.parent_event_id = parent_event.id
111
112
  save!
112
113
  else
113
- raise "Could not find a parent event!"
114
+ error = "Could not find a parent event!"
115
+ update_error error
116
+ raise error
114
117
  end
115
118
  end
116
119
 
117
120
  def update_from_parent
118
121
  parent_event = TrafficMansion::Queue.find_by_id parent_event_id
119
- if parent_event && parent_event.processed
122
+ if !parent_event
123
+ error = "Could not find a parent event!"
124
+ raise error
125
+ end
126
+ if parent_event.processed
120
127
  self.data["visit_id"] = parent_event.data["visit_id"].present? ? parent_event.data["visit_id"] : parent_event.result["visit_id"]
121
128
  save!
122
129
  else
123
- raise "Parent was not processed yet!"
130
+ error = "Parent was not processed yet!"
131
+ update_error error
132
+ raise error
124
133
  end
125
134
  end
126
135
 
127
136
  def track
128
137
  tracker = TrafficMansion::Tracker.new data
129
138
  res = tracker.send type, data
139
+ self.set :result, res.get_response
130
140
  if res.success?
131
- self.result = res.get_response
132
- self.processed = true
133
- save!
141
+ self.set :processed, true
134
142
  else
135
- raise "Tracking failed with result: #{res.get_error}"
143
+ error = "Tracking failed with result: #{res.get_error}"
144
+ update_error error
145
+ raise error
136
146
  end
137
147
  end
148
+
149
+ def update_error error
150
+ self.set :last_error, error.to_s
151
+ end
138
152
  end
139
153
  end
@@ -1,3 +1,3 @@
1
1
  module TrafficMansion
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.16"
3
3
  end
data/spec/queue_spec.rb CHANGED
@@ -276,7 +276,7 @@ describe TrafficMansion::Queue do
276
276
  end
277
277
 
278
278
  context "when the repsonse is not success" do
279
- let(:result) { mock("TMResult", :success? => false, :get_error => "error text") }
279
+ let(:result) { mock("TMResult", :success? => false, :get_error => "error text", :get_response => nil) }
280
280
 
281
281
  before :each do
282
282
  TrafficMansion::Tracker.any_instance.stub(:send => result)
@@ -344,7 +344,7 @@ describe TrafficMansion::Queue do
344
344
  end
345
345
 
346
346
  context "when the repsonse is not success" do
347
- let(:result) { mock("TMResult", :success? => false, :get_error => "error text") }
347
+ let(:result) { mock("TMResult", :success? => false, :get_error => "error text", :get_response => nil) }
348
348
 
349
349
  before :each do
350
350
  TrafficMansion::Tracker.any_instance.stub(:send => result)
@@ -360,4 +360,49 @@ describe TrafficMansion::Queue do
360
360
  end
361
361
  end
362
362
  end
363
+
364
+ describe :track do
365
+ let!(:event) { TrafficMansion::Queue.add "visit"}
366
+ let(:response) { {:code => "1"} }
367
+ let(:result) { mock("TMResult", :success? => true, :get_error => "error text", :get_response => response) }
368
+
369
+ before :each do
370
+ TrafficMansion::Tracker.any_instance.stub(:send => result)
371
+ end
372
+
373
+ it "saves the TM result" do
374
+ event.track
375
+ event.result.should be response
376
+ end
377
+
378
+ context "when the result is success" do
379
+ let(:result) { mock("TMResult", :success? => true, :get_error => "error text", :get_response => response) }
380
+
381
+ before :each do
382
+ TrafficMansion::Tracker.any_instance.stub(:send => result)
383
+ end
384
+
385
+ it "sets the event as processed" do
386
+ event.track
387
+ event.processed.should be true
388
+ end
389
+ end
390
+
391
+ context "when the result is not success" do
392
+ let(:result) { mock("TMResult", :success? => false, :get_error => "error text", :get_response => response) }
393
+
394
+ before :each do
395
+ TrafficMansion::Tracker.any_instance.stub(:send => result)
396
+ end
397
+
398
+ it "sets the event as not processed" do
399
+ lambda{ event.track }
400
+ event.processed.should be false
401
+ end
402
+
403
+ it "raises an error" do
404
+ lambda{ event.track }.should raise_error("Tracking failed with result: error text")
405
+ end
406
+ end
407
+ end
363
408
  end
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.15
4
+ version: 0.0.16
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-01 00:00:00.000000000 Z
11
+ date: 2013-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler