ae_page_objects 2.0.0.beta1 → 2.0.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ae_page_objects.rb +5 -41
- data/lib/ae_page_objects/core/dsl.rb +3 -0
- data/lib/ae_page_objects/document.rb +14 -6
- data/lib/ae_page_objects/element.rb +2 -0
- data/lib/ae_page_objects/elements/collection.rb +2 -0
- data/lib/ae_page_objects/exceptions.rb +2 -6
- data/lib/ae_page_objects/multiple_windows/browser.rb +7 -0
- data/lib/ae_page_objects/multiple_windows/cross_window_loader_strategy.rb +2 -0
- data/lib/ae_page_objects/multiple_windows/window.rb +5 -1
- data/lib/ae_page_objects/multiple_windows/window_list.rb +4 -1
- data/lib/ae_page_objects/node.rb +2 -0
- data/lib/ae_page_objects/rails.rb +3 -0
- data/lib/ae_page_objects/{core → rails}/application_router.rb +2 -0
- data/lib/ae_page_objects/single_window/browser.rb +3 -1
- data/lib/ae_page_objects/single_window/window.rb +6 -0
- data/lib/ae_page_objects/version.rb +1 -1
- metadata +6 -10
- data/lib/ae_page_objects/core/site.rb +0 -61
- data/lib/ae_page_objects/core/universe.rb +0 -11
- data/lib/ae_page_objects/core_ext/module.rb +0 -34
- data/lib/ae_page_objects/util/inflector.rb +0 -48
- data/lib/ae_page_objects/util/singleton.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d1047792e65a7c7ddf5deca452f5f687e3d0ac1
|
4
|
+
data.tar.gz: d56f0eb00934b7e97aab199c5629867d06bd6c1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4e0f544e11d234643955e2c2464df9fcaac81f70c0a9f7e399ea72123e7f96373f0d51e5674234653a41c694bb1adcf25198052625ae2d5c3ddd09f118b9905
|
7
|
+
data.tar.gz: cbdd37fb41439a93f26e019f8c0bf55d052a77aefb428915e96117528a2f509c3b3b3d4c81e1ece1dfac1902a5902a44e780e0f435edb3d48e335a11a1e3b650
|
data/lib/ae_page_objects.rb
CHANGED
@@ -5,39 +5,9 @@ require 'ae_page_objects/version'
|
|
5
5
|
require 'ae_page_objects/exceptions'
|
6
6
|
|
7
7
|
module AePageObjects
|
8
|
-
autoload :Universe, 'ae_page_objects/core/universe'
|
9
|
-
autoload :Site, 'ae_page_objects/core/site'
|
10
|
-
autoload :BasicRouter, 'ae_page_objects/core/basic_router'
|
11
|
-
autoload :ApplicationRouter, 'ae_page_objects/core/application_router'
|
12
|
-
autoload :Dsl, 'ae_page_objects/core/dsl'
|
13
|
-
|
14
|
-
autoload :Singleton, 'ae_page_objects/util/singleton'
|
15
|
-
autoload :InternalHelpers, 'ae_page_objects/util/internal_helpers'
|
16
|
-
autoload :HashSymbolizer, 'ae_page_objects/util/hash_symbolizer'
|
17
|
-
autoload :Inflector, 'ae_page_objects/util/inflector'
|
18
|
-
|
19
|
-
module MultipleWindows
|
20
|
-
autoload :Browser, 'ae_page_objects/multiple_windows/browser'
|
21
|
-
autoload :Window, 'ae_page_objects/multiple_windows/window'
|
22
|
-
autoload :CrossWindowLoaderStrategy, 'ae_page_objects/multiple_windows/cross_window_loader_strategy'
|
23
|
-
autoload :WindowList, 'ae_page_objects/multiple_windows/window_list'
|
24
|
-
autoload :WindowHandleManager, 'ae_page_objects/multiple_windows/window_handle_manager'
|
25
|
-
end
|
26
|
-
|
27
|
-
module SingleWindow
|
28
|
-
autoload :Browser, 'ae_page_objects/single_window/browser'
|
29
|
-
autoload :Window, 'ae_page_objects/single_window/window'
|
30
|
-
autoload :SameWindowLoaderStrategy, 'ae_page_objects/single_window/same_window_loader_strategy'
|
31
|
-
end
|
32
|
-
|
33
|
-
autoload :DocumentQuery, 'ae_page_objects/document_query'
|
34
|
-
autoload :DocumentLoader, 'ae_page_objects/document_loader'
|
35
|
-
|
36
8
|
autoload :Node, 'ae_page_objects/node'
|
37
9
|
autoload :Document, 'ae_page_objects/document'
|
38
|
-
autoload :DocumentProxy, 'ae_page_objects/document_proxy'
|
39
10
|
autoload :Element, 'ae_page_objects/element'
|
40
|
-
autoload :ElementProxy, 'ae_page_objects/element_proxy'
|
41
11
|
|
42
12
|
autoload :Collection, 'ae_page_objects/elements/collection'
|
43
13
|
autoload :Form, 'ae_page_objects/elements/form'
|
@@ -45,6 +15,7 @@ module AePageObjects
|
|
45
15
|
autoload :Checkbox, 'ae_page_objects/elements/checkbox'
|
46
16
|
|
47
17
|
class << self
|
18
|
+
attr_accessor :default_router
|
48
19
|
|
49
20
|
def browser
|
50
21
|
@browser ||= begin
|
@@ -52,8 +23,10 @@ module AePageObjects
|
|
52
23
|
|
53
24
|
case driver
|
54
25
|
when Capybara::Selenium::Driver then
|
26
|
+
require 'ae_page_objects/multiple_windows/browser'
|
55
27
|
MultipleWindows::Browser.new
|
56
28
|
else
|
29
|
+
require 'ae_page_objects/single_window/browser'
|
57
30
|
SingleWindow::Browser.new
|
58
31
|
end
|
59
32
|
end
|
@@ -89,14 +62,5 @@ module AePageObjects
|
|
89
62
|
end
|
90
63
|
end
|
91
64
|
|
92
|
-
require 'ae_page_objects/
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
65
|
+
require 'ae_page_objects/core/basic_router'
|
66
|
+
AePageObjects.default_router = AePageObjects::BasicRouter.new
|
@@ -1,13 +1,25 @@
|
|
1
1
|
module AePageObjects
|
2
2
|
class Document < Node
|
3
3
|
class << self
|
4
|
+
attr_writer :router
|
5
|
+
|
6
|
+
def router
|
7
|
+
@router ||= begin
|
8
|
+
if [self, superclass].include?(Document)
|
9
|
+
AePageObjects.default_router
|
10
|
+
else
|
11
|
+
superclass.router
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
def can_load_from_current_url?
|
5
17
|
return true if paths.empty?
|
6
18
|
|
7
19
|
url = current_url_without_params
|
8
20
|
|
9
21
|
paths.any? do |path|
|
10
|
-
|
22
|
+
router.path_recognizes_url?(path, url)
|
11
23
|
end
|
12
24
|
end
|
13
25
|
|
@@ -17,7 +29,7 @@ module AePageObjects
|
|
17
29
|
|
18
30
|
path = inner_options.delete(:via) || paths.first
|
19
31
|
|
20
|
-
full_path =
|
32
|
+
full_path = router.generate_path(path, *args)
|
21
33
|
raise PathNotResolvable, "#{self.name} not visitable via #{paths.first}(#{args.inspect})" unless full_path
|
22
34
|
|
23
35
|
Capybara.current_session.visit(full_path)
|
@@ -36,10 +48,6 @@ module AePageObjects
|
|
36
48
|
|
37
49
|
paths << path_method
|
38
50
|
end
|
39
|
-
|
40
|
-
def site
|
41
|
-
@site ||= Site.from(self)
|
42
|
-
end
|
43
51
|
end
|
44
52
|
|
45
53
|
attr_reader :window
|
@@ -4,14 +4,10 @@ module AePageObjects
|
|
4
4
|
class StalePageObject < Error
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
class LoadingFailed < Error
|
7
|
+
class LoadingPageFailed < Error
|
9
8
|
end
|
10
9
|
|
11
|
-
class
|
12
|
-
end
|
13
|
-
|
14
|
-
class LoadingElementFailed < LoadingFailed
|
10
|
+
class LoadingElementFailed < Error
|
15
11
|
end
|
16
12
|
|
17
13
|
class ElementExpectationError < Error
|
@@ -1,3 +1,10 @@
|
|
1
|
+
require 'ae_page_objects/multiple_windows/cross_window_loader_strategy'
|
2
|
+
require 'ae_page_objects/multiple_windows/window_list'
|
3
|
+
|
4
|
+
require 'ae_page_objects/document_loader'
|
5
|
+
require 'ae_page_objects/document_proxy'
|
6
|
+
require 'ae_page_objects/document_query'
|
7
|
+
|
1
8
|
module AePageObjects
|
2
9
|
module MultipleWindows
|
3
10
|
class Browser
|
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'ae_page_objects/multiple_windows/window_handle_manager'
|
2
|
+
|
3
|
+
require 'ae_page_objects/single_window/window'
|
4
|
+
|
1
5
|
module AePageObjects
|
2
6
|
module MultipleWindows
|
3
7
|
class Window < SingleWindow::Window
|
@@ -25,4 +29,4 @@ module AePageObjects
|
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
28
|
-
end
|
32
|
+
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'ae_page_objects/multiple_windows/window_handle_manager'
|
2
|
+
require 'ae_page_objects/multiple_windows/window'
|
3
|
+
|
1
4
|
module AePageObjects
|
2
5
|
module MultipleWindows
|
3
6
|
class WindowList
|
@@ -57,4 +60,4 @@ module AePageObjects
|
|
57
60
|
end
|
58
61
|
end
|
59
62
|
end
|
60
|
-
end
|
63
|
+
end
|
data/lib/ae_page_objects/node.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ae_page_objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donnie Tognazzini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -32,12 +32,8 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- lib/ae_page_objects.rb
|
35
|
-
- lib/ae_page_objects/core/application_router.rb
|
36
35
|
- lib/ae_page_objects/core/basic_router.rb
|
37
36
|
- lib/ae_page_objects/core/dsl.rb
|
38
|
-
- lib/ae_page_objects/core/site.rb
|
39
|
-
- lib/ae_page_objects/core/universe.rb
|
40
|
-
- lib/ae_page_objects/core_ext/module.rb
|
41
37
|
- lib/ae_page_objects/document.rb
|
42
38
|
- lib/ae_page_objects/document_loader.rb
|
43
39
|
- lib/ae_page_objects/document_proxy.rb
|
@@ -55,14 +51,14 @@ files:
|
|
55
51
|
- lib/ae_page_objects/multiple_windows/window_handle_manager.rb
|
56
52
|
- lib/ae_page_objects/multiple_windows/window_list.rb
|
57
53
|
- lib/ae_page_objects/node.rb
|
54
|
+
- lib/ae_page_objects/rails.rb
|
55
|
+
- lib/ae_page_objects/rails/application_router.rb
|
58
56
|
- lib/ae_page_objects/single_window/browser.rb
|
59
57
|
- lib/ae_page_objects/single_window/same_window_loader_strategy.rb
|
60
58
|
- lib/ae_page_objects/single_window/window.rb
|
61
59
|
- lib/ae_page_objects/util/hash_symbolizer.rb
|
62
|
-
- lib/ae_page_objects/util/inflector.rb
|
63
60
|
- lib/ae_page_objects/util/internal_helpers.rb
|
64
61
|
- lib/ae_page_objects/util/page_polling.rb
|
65
|
-
- lib/ae_page_objects/util/singleton.rb
|
66
62
|
- lib/ae_page_objects/version.rb
|
67
63
|
homepage: http://github.com/appfolio/ae_page_objects
|
68
64
|
licenses:
|
@@ -79,9 +75,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
75
|
version: 1.9.3
|
80
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
77
|
requirements:
|
82
|
-
- - "
|
78
|
+
- - ">"
|
83
79
|
- !ruby/object:Gem::Version
|
84
|
-
version:
|
80
|
+
version: 1.3.1
|
85
81
|
requirements: []
|
86
82
|
rubyforge_project:
|
87
83
|
rubygems_version: 2.4.3
|
@@ -1,61 +0,0 @@
|
|
1
|
-
module AePageObjects
|
2
|
-
class Site
|
3
|
-
extend AePageObjects::Singleton
|
4
|
-
|
5
|
-
class << self
|
6
|
-
private :new
|
7
|
-
|
8
|
-
def initialize!
|
9
|
-
instance.initialize!
|
10
|
-
end
|
11
|
-
|
12
|
-
def router=(router)
|
13
|
-
instance.router = router
|
14
|
-
end
|
15
|
-
|
16
|
-
def inherited(site_class)
|
17
|
-
super
|
18
|
-
|
19
|
-
site_class.universe.send(:include, Universe)
|
20
|
-
site_class.universe.page_objects_site_class = site_class
|
21
|
-
end
|
22
|
-
|
23
|
-
def universe
|
24
|
-
parent
|
25
|
-
end
|
26
|
-
|
27
|
-
def from(from_mod)
|
28
|
-
until from_mod == Object
|
29
|
-
if from_mod < Universe
|
30
|
-
return from_mod.page_objects_site_class.instance
|
31
|
-
end
|
32
|
-
|
33
|
-
from_mod = from_mod.parent
|
34
|
-
end
|
35
|
-
|
36
|
-
nil
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
attr_writer :router
|
41
|
-
|
42
|
-
def universe
|
43
|
-
self.class.universe
|
44
|
-
end
|
45
|
-
|
46
|
-
def path_recognizes_url?(*args)
|
47
|
-
self.router.path_recognizes_url?(*args)
|
48
|
-
end
|
49
|
-
|
50
|
-
def generate_path(*args)
|
51
|
-
self.router.generate_path(*args)
|
52
|
-
end
|
53
|
-
|
54
|
-
def router
|
55
|
-
@router ||= ApplicationRouter.new
|
56
|
-
end
|
57
|
-
|
58
|
-
def initialize!
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# lifted from activesupport
|
2
|
-
|
3
|
-
class Module
|
4
|
-
|
5
|
-
# Returns the name of the module containing this one.
|
6
|
-
#
|
7
|
-
# M::N.parent_name # => "M"
|
8
|
-
def parent_name
|
9
|
-
unless defined? @parent_name
|
10
|
-
@parent_name = name =~ /::[^:]+\Z/ ? $`.freeze : nil
|
11
|
-
end
|
12
|
-
@parent_name
|
13
|
-
end
|
14
|
-
|
15
|
-
# Returns the module which contains this one according to its name.
|
16
|
-
#
|
17
|
-
# module M
|
18
|
-
# module N
|
19
|
-
# end
|
20
|
-
# end
|
21
|
-
# X = M::N
|
22
|
-
#
|
23
|
-
# M::N.parent # => M
|
24
|
-
# X.parent # => M
|
25
|
-
#
|
26
|
-
# The parent of top-level and anonymous modules is Object.
|
27
|
-
#
|
28
|
-
# M.parent # => Object
|
29
|
-
# Module.new.parent # => Object
|
30
|
-
#
|
31
|
-
def parent
|
32
|
-
parent_name ? AePageObjects::Inflector.constantize(parent_name) : Object
|
33
|
-
end
|
34
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module AePageObjects
|
2
|
-
module Inflector
|
3
|
-
extend self
|
4
|
-
|
5
|
-
# Ruby 1.9 introduces an inherit argument for Module#const_get and
|
6
|
-
# #const_defined? and changes their default behavior.
|
7
|
-
if Module.method(:const_get).arity == 1
|
8
|
-
# Tries to find a constant with the name specified in the argument string:
|
9
|
-
#
|
10
|
-
# "Module".constantize # => Module
|
11
|
-
# "Test::Unit".constantize # => Test::Unit
|
12
|
-
#
|
13
|
-
# The name is assumed to be the one of a top-level constant, no matter whether
|
14
|
-
# it starts with "::" or not. No lexical context is taken into account:
|
15
|
-
#
|
16
|
-
# C = 'outside'
|
17
|
-
# module M
|
18
|
-
# C = 'inside'
|
19
|
-
# C # => 'inside'
|
20
|
-
# "C".constantize # => 'outside', same as ::C
|
21
|
-
# end
|
22
|
-
#
|
23
|
-
# NameError is raised when the name is not in CamelCase or the constant is
|
24
|
-
# unknown.
|
25
|
-
def constantize(camel_cased_word)
|
26
|
-
names = camel_cased_word.split('::')
|
27
|
-
names.shift if names.empty? || names.first.empty?
|
28
|
-
|
29
|
-
constant = Object
|
30
|
-
names.each do |name|
|
31
|
-
constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
32
|
-
end
|
33
|
-
constant
|
34
|
-
end
|
35
|
-
else
|
36
|
-
def constantize(camel_cased_word) #:nodoc:
|
37
|
-
names = camel_cased_word.split('::')
|
38
|
-
names.shift if names.empty? || names.first.empty?
|
39
|
-
|
40
|
-
constant = Object
|
41
|
-
names.each do |name|
|
42
|
-
constant = constant.const_defined?(name, false) ? constant.const_get(name) : constant.const_missing(name)
|
43
|
-
end
|
44
|
-
constant
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module AePageObjects
|
2
|
-
module Singleton
|
3
|
-
|
4
|
-
def instance
|
5
|
-
@instance ||= new
|
6
|
-
end
|
7
|
-
|
8
|
-
def respond_to?(*args)
|
9
|
-
super || instance.respond_to?(*args)
|
10
|
-
end
|
11
|
-
|
12
|
-
def configure(&block)
|
13
|
-
class_eval(&block)
|
14
|
-
end
|
15
|
-
|
16
|
-
protected
|
17
|
-
|
18
|
-
def method_missing(*args, &block)
|
19
|
-
instance.send(*args, &block)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|