ae_page_objects 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ae_page_objects.rb +1 -1
- data/lib/ae_page_objects/core/application.rb +18 -18
- data/lib/ae_page_objects/core/configuration.rb +2 -5
- data/lib/ae_page_objects/core/constant_resolver.rb +21 -12
- data/lib/ae_page_objects/core/dependencies_hook.rb +1 -1
- data/lib/ae_page_objects/core/{configurable.rb → singleton.rb} +1 -3
- data/lib/ae_page_objects/version.rb +1 -1
- metadata +5 -5
data/lib/ae_page_objects.rb
CHANGED
@@ -14,7 +14,7 @@ module AePageObjects
|
|
14
14
|
autoload :DependenciesHook, 'ae_page_objects/core/dependencies_hook'
|
15
15
|
autoload :Installable, 'ae_page_objects/core/installable'
|
16
16
|
autoload :Configuration, 'ae_page_objects/core/configuration'
|
17
|
-
autoload :
|
17
|
+
autoload :Singleton, 'ae_page_objects/core/singleton'
|
18
18
|
autoload :Application, 'ae_page_objects/core/application'
|
19
19
|
autoload :ApplicationRouter, 'ae_page_objects/core/application_router'
|
20
20
|
autoload :RakeRouter, 'ae_page_objects/core/rake_router'
|
@@ -1,51 +1,51 @@
|
|
1
1
|
module AePageObjects
|
2
2
|
class Application
|
3
|
-
include
|
3
|
+
include AePageObjects::Singleton
|
4
4
|
|
5
5
|
class << self
|
6
6
|
private :new
|
7
7
|
|
8
|
+
attr_accessor :called_from
|
9
|
+
|
8
10
|
delegate :initialize!, :to => :instance
|
11
|
+
delegate :config, :to => :instance
|
9
12
|
|
10
13
|
def inherited(application_class)
|
11
14
|
super
|
15
|
+
|
16
|
+
application_class.called_from = begin
|
17
|
+
call_stack = caller.map { |p| p.sub(/:\d+.*/, '') }
|
18
|
+
File.dirname(call_stack.detect { |p| p !~ %r[railties[\w.-]*/lib/rails|rack[\w.-]*/lib/rack] })
|
19
|
+
end
|
20
|
+
|
12
21
|
application_class.parent.send(:include, ConstantResolver)
|
22
|
+
application_class.parent.page_objects_application = application_class
|
13
23
|
end
|
14
24
|
end
|
15
25
|
|
26
|
+
delegate :root_path, :to => :config
|
27
|
+
|
16
28
|
delegate :router, :to => :config
|
17
29
|
delegate :path_recognizes_url?, :to => :router
|
18
30
|
delegate :generate_path, :to => :router
|
19
31
|
|
20
|
-
def initialize
|
21
|
-
ActiveSupport::Dependencies.autoload_paths.unshift(*all_autoload_paths)
|
22
|
-
|
23
|
-
# Freeze so future modifications will fail rather than do nothing mysteriously
|
24
|
-
config.eager_load_paths.freeze
|
25
|
-
end
|
26
|
-
|
27
32
|
def config
|
28
33
|
@config ||= Configuration.new(self)
|
29
34
|
end
|
30
35
|
|
31
36
|
def initialize!
|
37
|
+
ActiveSupport::Dependencies.autoload_paths.unshift(root_path)
|
32
38
|
eager_load!
|
33
39
|
end
|
34
40
|
|
35
|
-
def all_autoload_paths
|
36
|
-
@all_autoload_paths ||= config.eager_load_paths.uniq
|
37
|
-
end
|
38
|
-
|
39
41
|
private
|
40
42
|
|
41
43
|
def eager_load!
|
42
|
-
|
43
|
-
matcher = /\A#{Regexp.escape(load_path)}\/(.*)\.rb\Z/
|
44
|
+
matcher = /\A#{Regexp.escape(root_path)}\/(.*)\.rb\Z/
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
46
|
+
Dir.glob("#{root_path}/**/*.rb").sort.each do |file|
|
47
|
+
dependency_name = file.sub(matcher, '\1')
|
48
|
+
require_dependency dependency_name
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -1,15 +1,12 @@
|
|
1
1
|
module AePageObjects
|
2
2
|
class Configuration
|
3
|
-
|
3
|
+
attr_accessor :router, :root_path
|
4
4
|
|
5
5
|
def initialize(application)
|
6
6
|
@application = application
|
7
|
+
@root_path = application.class.called_from
|
7
8
|
end
|
8
9
|
|
9
|
-
def eager_load_paths
|
10
|
-
@eager_load_paths ||= ["test/page_objects"]
|
11
|
-
end
|
12
|
-
|
13
10
|
def router
|
14
11
|
@router ||= ApplicationRouter.new
|
15
12
|
end
|
@@ -1,8 +1,15 @@
|
|
1
1
|
module AePageObjects
|
2
2
|
module ConstantResolver
|
3
3
|
extend ActiveSupport::Concern
|
4
|
-
|
4
|
+
|
5
|
+
included do
|
6
|
+
class << self
|
7
|
+
attr_accessor :page_objects_application
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
5
11
|
module ClassMethods
|
12
|
+
|
6
13
|
def const_name_for(from_mod, const_name)
|
7
14
|
name_within_universe = ""
|
8
15
|
if self != from_mod
|
@@ -12,21 +19,23 @@ module AePageObjects
|
|
12
19
|
name_within_universe += "::#{const_name}"
|
13
20
|
end
|
14
21
|
|
15
|
-
def
|
22
|
+
def load_missing_page_objects_constant(from_mod, const_name)
|
16
23
|
path_for_constant = self.const_name_for(from_mod, const_name).underscore
|
17
24
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
file_path = File.join(page_objects_application.instance.root_path, "#{path_for_constant}.rb").sub(/(\.rb)?$/, ".rb")
|
26
|
+
|
27
|
+
if File.file?(file_path) && ! ActiveSupport::Dependencies.loaded.include?(File.expand_path(file_path))
|
28
|
+
ActiveSupport::Dependencies.require_or_load file_path
|
29
|
+
|
30
|
+
unless ActiveSupport::Dependencies.local_const_defined?(from_mod, const_name)
|
31
|
+
qualified_name = ActiveSupport::Dependencies.qualified_name_for(from_mod, const_name)
|
32
|
+
raise LoadError, "Expected #{file_path} to define #{qualified_name}"
|
26
33
|
end
|
34
|
+
|
35
|
+
from_mod.const_get(const_name)
|
36
|
+
else
|
37
|
+
nil
|
27
38
|
end
|
28
|
-
|
29
|
-
nil
|
30
39
|
end
|
31
40
|
end
|
32
41
|
end
|
@@ -15,7 +15,7 @@ module AePageObjects
|
|
15
15
|
|
16
16
|
def load_missing_constant(from_mod, const_name)
|
17
17
|
page_objects = DependenciesHook.containing_page_object_universe(from_mod)
|
18
|
-
page_objects && page_objects.
|
18
|
+
page_objects && page_objects.load_missing_page_objects_constant(from_mod, const_name) || super
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ae_page_objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Donnie Tognazzini
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-
|
18
|
+
date: 2013-06-03 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :runtime
|
@@ -110,7 +110,6 @@ files:
|
|
110
110
|
- lib/ae_page_objects/concerns/visitable.rb
|
111
111
|
- lib/ae_page_objects/core/application.rb
|
112
112
|
- lib/ae_page_objects/core/application_router.rb
|
113
|
-
- lib/ae_page_objects/core/configurable.rb
|
114
113
|
- lib/ae_page_objects/core/configuration.rb
|
115
114
|
- lib/ae_page_objects/core/constant_resolver.rb
|
116
115
|
- lib/ae_page_objects/core/dependencies_hook.rb
|
@@ -119,6 +118,7 @@ files:
|
|
119
118
|
- lib/ae_page_objects/core/dsl/form_for.rb
|
120
119
|
- lib/ae_page_objects/core/internal_helpers.rb
|
121
120
|
- lib/ae_page_objects/core/rake_router.rb
|
121
|
+
- lib/ae_page_objects/core/singleton.rb
|
122
122
|
- lib/ae_page_objects/document.rb
|
123
123
|
- lib/ae_page_objects/element.rb
|
124
124
|
- lib/ae_page_objects/element_proxy.rb
|