Module: TestTrack::Identity::ClassMethods
- Defined in:
- app/models/concerns/test_track/identity.rb
Instance Method Summary collapse
-
#test_track_identifier(identifier_type, identifier_value_method) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity.
Instance Method Details
#test_track_identifier(identifier_type, identifier_value_method) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/models/concerns/test_track/identity.rb', line 6 def test_track_identifier(identifier_type, identifier_value_method) instance_methods = Module.new include instance_methods instance_methods.module_eval do define_method :test_track_ab do |*args| discriminator = TestTrack::IdentitySessionDiscriminator.new(self) if discriminator.authenticated_resource_matches_identity? discriminator.controller.send(:test_track_visitor).ab(*args) else identifier_value = send(identifier_value_method) TestTrack::OfflineSession.with_visitor_for(identifier_type, identifier_value) do |v| v.ab(*args) end end end define_method :test_track_vary do |*args, &block| discriminator = TestTrack::IdentitySessionDiscriminator.new(self) if discriminator.authenticated_resource_matches_identity? discriminator.controller.send(:test_track_visitor).vary(*args, &block) else identifier_value = send(identifier_value_method) TestTrack::OfflineSession.with_visitor_for(identifier_type, identifier_value) do |v| v.vary(*args, &block) end end end define_method :test_track_visitor_id do discriminator = TestTrack::IdentitySessionDiscriminator.new(self) if discriminator.authenticated_resource_matches_identity? discriminator.controller.send(:test_track_visitor).id else identifier_value = send(identifier_value_method) TestTrack::OfflineSession.with_visitor_for(identifier_type, identifier_value) do |v| v.id end end end define_method :test_track_sign_up! do discriminator = TestTrack::IdentitySessionDiscriminator.new(self) if discriminator.web_context? identifier_value = send(identifier_value_method) discriminator.controller.send(:test_track_session).sign_up! identifier_type, identifier_value else raise "test_track_sign_up! called outside of a web context" end end define_method :test_track_log_in! do |opts = {}| discriminator = TestTrack::IdentitySessionDiscriminator.new(self) if discriminator.web_context? identifier_value = send(identifier_value_method) discriminator.controller.send(:test_track_session).log_in! identifier_type, identifier_value, opts else raise "test_track_log_in! called outside of a web context" end end end end |