test_track_rails_client 1.0.0 → 1.1.0

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,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
  - - ! '>='