Class: Capybara::Experience::Pool

Inherits:
Hash
  • Object
show all
Includes:
Singleton
Defined in:
lib/capybara/experience/pool.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#last_sessionObject

Returns the value of attribute last_session.



30
31
32
# File 'lib/capybara/experience/pool.rb', line 30

def last_session
  @last_session
end

Instance Method Details

#[](key) ⇒ Object



9
10
11
12
13
14
# File 'lib/capybara/experience/pool.rb', line 9

def [](key)
  super(key) || begin
    driver, _session_name, app_object_id = key.split(":")
    take(driver: driver.to_sym, app_object_id: app_object_id.to_i, key: key)
  end
end

#idleObject



32
33
34
# File 'lib/capybara/experience/pool.rb', line 32

def idle
  @idle ||= []
end

#reset_idle!Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/capybara/experience/pool.rb', line 40

def reset_idle!
  new_hash = each_with_object({}) do |(key, session), hash|
    hash[session_key(session)] = delete(key)
  end
  replace(new_hash)
  @idle = values
  @last_session = nil

  nil
end

#take(driver: Capybara.current_driver, app_object_id: Capybara.app.object_id, key: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/capybara/experience/pool.rb', line 16

def take(driver: Capybara.current_driver, app_object_id: Capybara.app.object_id, key: nil)
  session = idle.find { |s| s.mode == driver && s.app.object_id == app_object_id }
  if session
    idle.delete(session)
    self[key] = delete(session_key(session)) if key
  else
    session = ::Capybara::Session.new(driver.to_sym, Capybara.app)
    key ||= session_key(session)
    self[key] = session
  end

  session
end

#takenObject



36
37
38
# File 'lib/capybara/experience/pool.rb', line 36

def taken
  values - idle
end