ae_page_objects 0.5.2.mw2 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,8 +26,6 @@ module AePageObjects
26
26
  autoload :Window, 'ae_page_objects/window'
27
27
  autoload :Node, 'ae_page_objects/node'
28
28
  autoload :Document, 'ae_page_objects/document'
29
- autoload :DocumentFinder, 'ae_page_objects/document_finder'
30
- autoload :VariableDocument, 'ae_page_objects/variable_document'
31
29
  autoload :Element, 'ae_page_objects/element'
32
30
  autoload :ElementProxy, 'ae_page_objects/element_proxy'
33
31
 
@@ -2,18 +2,6 @@ module AePageObjects
2
2
  class Document < Node
3
3
  include Concerns::Visitable
4
4
 
5
- class << self
6
- def find(*args, &block)
7
- DocumentFinder.new(self).find(*args, &block)
8
- end
9
-
10
- private
11
-
12
- def site
13
- @site ||= AePageObjects::Site.from(self)
14
- end
15
- end
16
-
17
5
  attr_reader :window
18
6
 
19
7
  def initialize
@@ -26,5 +14,12 @@ module AePageObjects
26
14
  def document
27
15
  self
28
16
  end
17
+
18
+ class << self
19
+ private
20
+ def site
21
+ @site ||= AePageObjects::Site.from(self)
22
+ end
23
+ end
29
24
  end
30
- end
25
+ end
@@ -1,19 +1,10 @@
1
1
  module AePageObjects
2
- class Error < StandardError; end
3
-
4
- class StalePageObject < Error
5
- end
6
-
7
- class LoadingFailed < Error
2
+ class StalePageObject < StandardError
8
3
  end
9
4
 
10
- class PathNotResolvable < Error
5
+ class LoadingFailed < StandardError
11
6
  end
12
7
 
13
- class PageNotFound < Error
8
+ class PathNotResolvable < StandardError
14
9
  end
15
-
16
- class CastError < Error; end
17
- class InvalidCast < CastError; end
18
- class IncorrectCast < CastError; end
19
10
  end
@@ -1,3 +1,3 @@
1
1
  module AePageObjects
2
- VERSION = '0.5.2.mw2'.freeze
2
+ VERSION = '0.5.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,49 +1,39 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ae_page_objects
3
- version: !ruby/object:Gem::Version
4
- hash: -4066462860
5
- prerelease: 6
6
- segments:
7
- - 0
8
- - 5
9
- - 2
10
- - mw
11
- - 2
12
- version: 0.5.2.mw2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
5
+ prerelease:
13
6
  platform: ruby
14
- authors:
7
+ authors:
15
8
  - Donnie Tognazzini
16
9
  autorequire:
17
10
  bindir: bin
18
11
  cert_chain: []
19
-
20
- date: 2013-11-08 00:00:00 Z
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2013-10-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: capybara
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
18
+ requirements:
27
19
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 1
33
- version: "1.1"
34
- prerelease: false
20
+ - !ruby/object:Gem::Version
21
+ version: '1.1'
35
22
  type: :runtime
36
- requirement: *id001
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.1'
37
30
  description: Capybara Page Objects pattern
38
- email:
31
+ email:
39
32
  - engineering@appfolio.com
40
33
  executables: []
41
-
42
34
  extensions: []
43
-
44
35
  extra_rdoc_files: []
45
-
46
- files:
36
+ files:
47
37
  - lib/ae_page_objects.rb
48
38
  - lib/ae_page_objects/concerns/load_ensuring.rb
49
39
  - lib/ae_page_objects/concerns/staleable.rb
@@ -56,7 +46,6 @@ files:
56
46
  - lib/ae_page_objects/core/universe.rb
57
47
  - lib/ae_page_objects/core_ext/module.rb
58
48
  - lib/ae_page_objects/document.rb
59
- - lib/ae_page_objects/document_finder.rb
60
49
  - lib/ae_page_objects/element.rb
61
50
  - lib/ae_page_objects/element_proxy.rb
62
51
  - lib/ae_page_objects/elements/checkbox.rb
@@ -69,41 +58,34 @@ files:
69
58
  - lib/ae_page_objects/util/inflector.rb
70
59
  - lib/ae_page_objects/util/internal_helpers.rb
71
60
  - lib/ae_page_objects/util/singleton.rb
72
- - lib/ae_page_objects/variable_document.rb
73
61
  - lib/ae_page_objects/version.rb
74
62
  - lib/ae_page_objects/window.rb
75
63
  homepage: http://github.com/appfolio/ae_page_objects
76
- licenses:
64
+ licenses:
77
65
  - MIT
78
66
  post_install_message:
79
67
  rdoc_options: []
80
-
81
- require_paths:
68
+ require_paths:
82
69
  - lib
83
- required_ruby_version: !ruby/object:Gem::Requirement
70
+ required_ruby_version: !ruby/object:Gem::Requirement
84
71
  none: false
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ segments:
90
77
  - 0
91
- version: "0"
92
- required_rubygems_version: !ruby/object:Gem::Requirement
78
+ hash: 947206196524353569
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
80
  none: false
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
101
85
  requirements: []
102
-
103
86
  rubyforge_project:
104
87
  rubygems_version: 1.8.25
105
88
  signing_key:
106
89
  specification_version: 3
107
90
  summary: Capybara Page Objects pattern
108
91
  test_files: []
109
-
@@ -1,77 +0,0 @@
1
- module AePageObjects
2
- class DocumentFinder
3
-
4
- def initialize(document_class)
5
- @document_class = document_class
6
- end
7
-
8
- class Conditions
9
- def initialize(conditions, block_condition)
10
- @conditions = conditions || {}
11
- @conditions[:block] = block_condition if block_condition
12
- end
13
-
14
- def match?(page)
15
- @conditions.each do |type, value|
16
- case type
17
- when :title then
18
- return false unless browser.title.include?(value)
19
- when :url then
20
- return false unless page.current_url.include?(value)
21
- when :block then
22
- return false unless value.call(page)
23
- end
24
- end
25
-
26
- true
27
- end
28
- end
29
-
30
- def find(conditions = {}, &extra_condition)
31
- original_window = AePageObjects::Window.current
32
-
33
- # Loop through all the windows and attempt to instantiate the Document. Continue to loop around
34
- # until finding a Document that can be instantiated or timing out.
35
- Capybara.wait_until do
36
- find_window(Conditions.new(conditions, extra_condition))
37
- end
38
-
39
- rescue Capybara::TimeoutError
40
- original_window.switch_to
41
-
42
- all_windows = AePageObjects::Window.all.map do |window|
43
- name = window.current_document && window.current_document.to_s || "<none>"
44
- {:window_handle => window.handle, :document => name }
45
- end
46
-
47
- raise PageNotFound, "Couldn't find page #{@document_class.name} in any of the open windows: #{all_windows.inspect}"
48
- end
49
-
50
- private
51
-
52
- def find_window(conditions)
53
- AePageObjects::Window.all.each do |window|
54
- window.switch_to
55
-
56
- if inst = attempt_to_load(conditions)
57
- return inst
58
- end
59
- end
60
-
61
- nil
62
- end
63
-
64
- def attempt_to_load(conditions)
65
- inst = @document_class.new
66
-
67
- if conditions.match?(inst)
68
- return inst
69
- end
70
-
71
- nil
72
- rescue AePageObjects::LoadingFailed
73
- # These will happen from the new() call above.
74
- nil
75
- end
76
- end
77
- end
@@ -1,50 +0,0 @@
1
- module AePageObjects
2
- class VariableDocument
3
-
4
- # Remove all instance methods so even things like class()
5
- # get handled by method_missing(). <lifted from activerecord>
6
- instance_methods.each do |m|
7
- unless m.to_s =~ /^(?:nil\?|send|object_id|to_a|tap)$|^__|^respond_to|is_a?/
8
- undef_method m
9
- end
10
- end
11
-
12
- def initialize(*documents)
13
- @documents = documents
14
- end
15
-
16
- def is_a?(document_class)
17
- super || !! as_a(document_class)
18
- rescue AePageObjects::Error
19
- false
20
- end
21
-
22
- def as_a(document_class)
23
- unless @documents.include?(document_class)
24
- raise InvalidCast, "Cannot cast as #{document_class.name} from #{@documents.map(&:name).inspect}"
25
- end
26
-
27
- document_class.new
28
- rescue AePageObjects::LoadingFailed => e
29
- raise IncorrectCast, "Failed instantiating a #{document_class}: #{e.message}\nDocuments: #{@documents.map(&:name).inspect}"
30
- end
31
-
32
- private
33
-
34
- def implicit_document_class
35
- @implicit_document_class ||= @documents.first
36
- end
37
-
38
- def implicit_document
39
- @implicit_document ||= as_a(implicit_document_class)
40
- end
41
-
42
- def method_missing(name, *args, &block)
43
- implicit_document.__send__(name, *args, &block)
44
- end
45
-
46
- def respond_to?(*args)
47
- super || implicit_document_class.allocate.respond_to?(*args)
48
- end
49
- end
50
- end