Sha256: 29ab027b1b31a72140a12f6b8511ac60471156201f60bbaf5b25ff65028f7fd1
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true require "singleton" module Capybara class Experience class Pool < Hash include Singleton def [](key) super(key) || begin driver, _session_name, app_object_id = key.split(":") take(driver: driver, app_object_id: app_object_id, key: key) end end 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 def idle @idle ||= [] end def taken values - idle end def reset_idle! to_h.each do |key, session| self[session_key(session)] = delete(key) end @idle = values nil end private def session_key(session) "#{session.mode}:#{session.object_id}:#{session.app.object_id}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
capybara-experience-0.3.3 | lib/capybara/experience/pool.rb |