Sha256: 41ea5686e446b880bfd849dcd5d5df756f6eadd0137b14b2aaebb8ccd7071cac

Contents?: true

Size: 1022 Bytes

Versions: 15

Compression:

Stored size: 1022 Bytes

Contents

class TestTrack::IdentitySessionLocator
  attr_reader :identity

  def initialize(identity)
    @identity = identity
  end

  def with_visitor # rubocop:disable Metrics/AbcSize
    raise ArgumentError, "must provide block to `with_visitor`" unless block_given?

    if web_session.present?
      yield web_session.visitor_dsl_for(identity)
    elsif job_session.present?
      yield job_session.visitor_dsl_for(identity)
    else
      TestTrack::OfflineSession.with_visitor_for(identity.test_track_identifier_type, identity.test_track_identifier_value) do |v|
        yield v
      end
    end
  end

  def with_session
    raise ArgumentError, "must provide block to `with_session`" unless block_given?

    if web_session.present?
      yield web_session
    else
      raise "#with_session called outside of web session"
    end
  end

  private

  def web_session
    @web_session ||= RequestStore[:test_track_web_session]
  end

  def job_session
    @job_session ||= RequestStore[:test_track_job_session]
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
test_track_rails_client-7.0.0 app/models/test_track/identity_session_locator.rb
test_track_rails_client-6.0.0 app/models/test_track/identity_session_locator.rb
test_track_rails_client-5.0.1 app/models/test_track/identity_session_locator.rb
test_track_rails_client-5.0.0 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.2 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.1 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.rc3 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.rc2 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha35 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha34 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha33 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha32 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha31 app/models/test_track/identity_session_locator.rb
test_track_rails_client-4.0.0.alpha30 app/models/test_track/identity_session_locator.rb