test_track_rails_client 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjRkODQyZjM0ODM2YzM0NzFhYTE5YTU4ZWQ4YjhhYjQ0ZTg2OWQxYw==
4
+ ZWRlMmZlOWFkYmQwZmJiMWE5YzAyZDdmYjBkOTIwYTRlZDM2MmZjYg==
5
5
  data.tar.gz: !binary |-
6
- OGViNGE1Y2NlNTM2NWVhYWI5ZjcxZmIyZGNhYTRjOTA4NTBmMDE0NA==
6
+ OGZmNTJjMGZiYjI2N2YyMzAxNGVhNzg2ZDk0MTRlYzM2YzdkMDA5MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTM5YmZkYTNhNTllZmNhNWNmNzYwODM0ZmNmNzE3NTg1ZDFiYjg1MmY3Mjg2
10
- Yjk5NGFmZTA0NWM2ZjhlYTFiNmNkNjc4NzA3NWE3YTdlODg3MWU4MDNjNjZj
11
- YzZhYTMyNzM5NTFkNjMyYzcwZTk2Y2Y4YzdmODJkZDI2OTkwZGU=
9
+ NWI4NGRhMzI4OTcwMzBlNWI1NmM0MDJhOWE5YWEzNzk5ODI3ZjM3OGFhNzZj
10
+ YzFkMTlhZjU5YjA3YzgxMjQ1ODgwODUyNWY3OTEwOGVhOTIyMjJkNjZmNzAx
11
+ OGQ0ZWIzZjZhN2MwOGNiYTAxODNhYjk3MWQwOGIwZDEzN2YxNjE=
12
12
  data.tar.gz: !binary |-
13
- YzMyOWIzYmNiODcwZTI1NzZhYjg0NGY3OWUwZjRjMDExMWIzYTIxZDZhMjZi
14
- NzAwNjVmYWM1MGQxNzU0MTlkYTBmNzg0ZGQ3ZDRkY2JiNWUxMzk5Y2FhZjAw
15
- YTEyYjUwMjNhNTM5OTVmMzAwNWZiN2I4ZjE5NjRmYjU3YjlkMDQ=
13
+ NGM5NzAyNWMyYzc1OWY0NTYzZTE5YjcwYTdkZTk5NDhmMGQyMjA0NWYzYzE1
14
+ ZGVjZWQzYWVlODgwODlhODkxZGI1MmZmMjg0NThkZTU0YTY0NGYzMmVkZGE4
15
+ OTFjMTUyMDM5MGM1YjQzODAwYzIxZGUwMzliZDMwZGYzNTIwMTI=
@@ -12,6 +12,7 @@ class TestTrack::Session
12
12
  yield
13
13
  ensure
14
14
  manage_cookies!
15
+ manage_response_headers!
15
16
  notify_unsynced_assignments! if sync_assignments?
16
17
  create_alias! if signed_up?
17
18
  end
@@ -48,7 +49,11 @@ class TestTrack::Session
48
49
  alias signed_up? signed_up
49
50
 
50
51
  def visitor
51
- @visitor ||= TestTrack::Visitor.new(id: cookies[visitor_cookie_name])
52
+ @visitor ||= TestTrack::Visitor.new(id: visitor_id)
53
+ end
54
+
55
+ def visitor_id
56
+ cookies[visitor_cookie_name] || request_headers[visitor_request_header_name]
52
57
  end
53
58
 
54
59
  def set_cookie(name, value)
@@ -100,10 +105,26 @@ class TestTrack::Session
100
105
  controller.request
101
106
  end
102
107
 
108
+ def response
109
+ controller.response
110
+ end
111
+
103
112
  def cookies
104
113
  controller.send(:cookies)
105
114
  end
106
115
 
116
+ def request_headers
117
+ request.headers
118
+ end
119
+
120
+ def response_headers
121
+ response.headers
122
+ end
123
+
124
+ def manage_response_headers!
125
+ response_headers[visitor_response_header_name] = visitor.id if visitor.id_overridden_by_existing_visitor?
126
+ end
127
+
107
128
  def notify_unsynced_assignments!
108
129
  payload = {
109
130
  mixpanel_distinct_id: mixpanel_distinct_id,
@@ -170,6 +191,14 @@ class TestTrack::Session
170
191
  ENV['TEST_TRACK_VISITOR_COOKIE_NAME'] || 'tt_visitor_id'
171
192
  end
172
193
 
194
+ def visitor_request_header_name
195
+ ENV['TEST_TRACK_VISITOR_REQUEST_HEADER_NAME'] || 'X-TT-Visitor-ID'
196
+ end
197
+
198
+ def visitor_response_header_name
199
+ ENV['TEST_TRACK_VISITOR_RESPONSE_HEADER_NAME'] || 'X-Set-TT-Visitor-ID'
200
+ end
201
+
173
202
  def fully_qualified_cookie_domain_enabled?
174
203
  ENV['TEST_TRACK_FULLY_QUALIFIED_COOKIE_DOMAIN_ENABLED'] == '1'
175
204
  end
@@ -98,6 +98,10 @@ class TestTrack::Visitor
98
98
  !offline? && @remote_visitor.present?
99
99
  end
100
100
 
101
+ def id_overridden_by_existing_visitor?
102
+ @id_overridden_by_existing_visitor || false
103
+ end
104
+
101
105
  private
102
106
 
103
107
  def assignments
@@ -113,6 +117,7 @@ class TestTrack::Visitor
113
117
  end
114
118
 
115
119
  def merge!(other)
120
+ @id_overridden_by_existing_visitor = id != other.id
116
121
  @id = other.id
117
122
  @assignment_registry = assignment_registry.merge(other.assignment_registry)
118
123
  @unsynced_assignments = nil
@@ -1,3 +1,3 @@
1
1
  module TestTrackRailsClient
2
- VERSION = "1.0.0" # rubocop:disable Style/MutableConstant
2
+ VERSION = "1.1.0" # rubocop:disable Style/MutableConstant
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_track_rails_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan O'Neill
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2017-04-12 00:00:00.000000000 Z
16
+ date: 2017-05-30 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: rails
@@ -419,8 +419,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
419
419
  requirements:
420
420
  - - ! '>='
421
421
  - !ruby/object:Gem::Version
422
- version: !binary |-
423
- MS45LjM=
422
+ version: 1.9.3
424
423
  required_rubygems_version: !ruby/object:Gem::Requirement
425
424
  requirements:
426
425
  - - ! '>='