Sha256: f13baea70a1f5379c91a3e57312597d3cebe626ffcc2321723458a97215be987

Contents?: true

Size: 1.14 KB

Versions: 15

Compression:

Stored size: 1.14 KB

Contents

class TestTrack::OfflineSession
  def initialize(identifier_type, identifier_value)
    @identifier_type = identifier_type
    @identifier_value = identifier_value
  end

  def self.with_visitor_for(identifier_type, identifier_value)
    raise ArgumentError, "must provide block to `with_visitor_for`" unless block_given?

    new(identifier_type, identifier_value).send :manage do |visitor_dsl|
      yield visitor_dsl
    end
  end

  private

  attr_reader :identifier_type, :identifier_value

  def visitor
    @visitor ||= TestTrack::Visitor.new(
      id: remote_visitor.id,
      assignments: remote_visitor.assignments
    )
  end

  def remote_visitor
    @remote_visitor ||= TestTrack::Remote::Visitor.from_identifier(identifier_type, identifier_value)
  end

  def manage
    yield TestTrack::VisitorDSL.new(visitor)
  ensure
    notify_unsynced_assignments! if unsynced_assignments?
  end

  def unsynced_assignments?
    visitor.unsynced_assignments.present?
  end

  def notify_unsynced_assignments!
    TestTrack::UnsyncedAssignmentsNotifier.new(
      visitor_id: visitor.id,
      assignments: visitor.unsynced_assignments
    ).notify
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
test_track_rails_client-0.9.14 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.13 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.12 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.11 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.10 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.9 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.8 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.7 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.6 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.5 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.4 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.3 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.2 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.1 app/models/test_track/offline_session.rb
test_track_rails_client-0.9.0 app/models/test_track/offline_session.rb