Sha256: 8c5ec9e5e2b1421653814cb72907dc0376e2e1d03dab876dfb874cde862dc07c

Contents?: true

Size: 825 Bytes

Versions: 11

Compression:

Stored size: 825 Bytes

Contents

class TestTrack::SessionIdentityCollection
  def initialize(controller)
    @controller = controller
  end

  def include?(identity)
    found_identity = identities[identity.test_track_identifier_type] || authenticated_resource_for_identity(identity)
    found_identity.present? && found_identity == identity
  end

  def <<(identity)
    identities[identity.test_track_identifier_type] = identity
  end

  private

  attr_reader :controller

  def identities
    @identities ||= {}
  end

  def authenticated_resource_for_identity(identity)
    authenticated_resource_method_name = "current_#{identity.class.model_name.element}"

    # pass true to `respond_to?` to include private methods
    controller.respond_to?(authenticated_resource_method_name, true) && controller.send(authenticated_resource_method_name)
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
test_track_rails_client-4.0.0.alpha7 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha6 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha5 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha4 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha3 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha2 app/models/test_track/session_identity_collection.rb
test_track_rails_client-4.0.0.alpha1 app/models/test_track/session_identity_collection.rb
test_track_rails_client-3.0.1 app/models/test_track/session_identity_collection.rb
test_track_rails_client-3.0.0 app/models/test_track/session_identity_collection.rb
test_track_rails_client-2.0.0 app/models/test_track/session_identity_collection.rb
test_track_rails_client-1.3.0 app/models/test_track/session_identity_collection.rb