ae_page_objects 0.4.0 → 0.4.1.dt3

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,6 +23,7 @@ module AePageObjects
23
23
  autoload :Visitable, 'ae_page_objects/concerns/visitable'
24
24
  end
25
25
 
26
+ autoload :Window, 'ae_page_objects/window'
26
27
  autoload :Node, 'ae_page_objects/node'
27
28
  autoload :Document, 'ae_page_objects/document'
28
29
  autoload :Element, 'ae_page_objects/element'
@@ -1,11 +1,16 @@
1
1
  module AePageObjects
2
2
  class Document < Node
3
3
  include Concerns::Visitable
4
+
5
+ attr_reader :window
4
6
 
5
7
  def initialize
6
8
  super(Capybara.current_session)
7
- end
8
9
 
10
+ @window = Window.current
11
+ @window.current_document = self
12
+ end
13
+
9
14
  def document
10
15
  self
11
16
  end
@@ -2,6 +2,11 @@ module AePageObjects
2
2
  class Collection < Element
3
3
  class << self
4
4
  attr_accessor :item_class
5
+
6
+ private
7
+ def inherited(subclass)
8
+ subclass.item_class = self.item_class
9
+ end
5
10
  end
6
11
 
7
12
  self.item_class = Element
@@ -1,5 +1,6 @@
1
1
  module AePageObjects
2
2
  module Singleton
3
+
3
4
  def instance
4
5
  @instance ||= new
5
6
  end
@@ -1,3 +1,3 @@
1
1
  module AePageObjects
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.4.1.dt3'.freeze
3
3
  end
@@ -0,0 +1,51 @@
1
+ module AePageObjects
2
+ class Window
3
+ class << self
4
+ def all
5
+ @all ||= {}
6
+ end
7
+
8
+ def current
9
+ current_handle = Capybara.current_session.driver.browser.window_handle
10
+
11
+ window = all.keys.find do |window|
12
+ window.handle == current_handle
13
+ end
14
+
15
+ unless window
16
+ window = new(current_handle)
17
+ all[window] = window
18
+ end
19
+
20
+ window
21
+ end
22
+ end
23
+
24
+ attr_reader :current_document, :handle
25
+
26
+ def initialize(handle)
27
+ @handle = handle
28
+ @current_document = nil
29
+
30
+ self.class.all[self] = self
31
+ end
32
+
33
+ def current_document=(document)
34
+ @current_document.send(:stale!) if @current_document
35
+ @current_document = document
36
+ end
37
+
38
+ def switch_to
39
+ Capybara.current_session.driver.browser.switch_to.window(handle)
40
+ current_document
41
+ end
42
+
43
+ def close
44
+ self.current_document = nil
45
+
46
+ Capybara.current_session.execute_script("window.close();")
47
+
48
+ self.class.all.delete(self)
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ae_page_objects
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
4
+ hash: 4196270005
5
+ prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ - dt
11
+ - 3
12
+ version: 0.4.1.dt3
11
13
  platform: ruby
12
14
  authors:
13
15
  - Donnie Tognazzini
@@ -113,6 +115,7 @@ files:
113
115
  - lib/ae_page_objects/util/internal_helpers.rb
114
116
  - lib/ae_page_objects/util/singleton.rb
115
117
  - lib/ae_page_objects/version.rb
118
+ - lib/ae_page_objects/window.rb
116
119
  homepage: http://github.com/appfolio/ae_page_objects
117
120
  licenses:
118
121
  - MIT