page_magic 2.0.2 → 2.0.3
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/VERSION +1 -1
- data/lib/page_magic/mapping.rb +0 -1
- data/lib/page_magic/session.rb +7 -21
- data/spec/page_magic/session_spec.rb +14 -30
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1a9811611ede317ffdd2a0bbc3a611f6eed20c8c23bd5bd7cbd355f0c66d660
|
4
|
+
data.tar.gz: 728d6cda028973338f615612b213f22c8954ea7e18322d6b4cdb078c7a9e8a9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 756ebdd5a0d88342fe934ef27abc8cf96bdb5ac2478dd89b421ff4d5343812d1aca9e5fde7b19bad993101f38c9ed44ecfa0a8d6d0eb8319ba87604d42da60f0
|
7
|
+
data.tar.gz: 44e72e003481db7ea23ec3716ce36f6fc8f767d805effef34c3f094c08f2ebbe3ace017bf080d56bb067653b46d4fa334d22bfdac4fe81ca98472f1a8fba9f61
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.3
|
data/lib/page_magic/mapping.rb
CHANGED
data/lib/page_magic/session.rb
CHANGED
@@ -32,16 +32,6 @@ module PageMagic
|
|
32
32
|
@current_page
|
33
33
|
end
|
34
34
|
|
35
|
-
# @return [String] path in the browser
|
36
|
-
def current_path
|
37
|
-
raw_session.current_path
|
38
|
-
end
|
39
|
-
|
40
|
-
# @return [String] full url in the browser
|
41
|
-
def current_url
|
42
|
-
raw_session.current_url
|
43
|
-
end
|
44
|
-
|
45
35
|
# Map paths to Page classes. The session will auto load page objects from these mapping when
|
46
36
|
# the {Session#current_path}
|
47
37
|
# is matched.
|
@@ -54,26 +44,22 @@ module PageMagic
|
|
54
44
|
@transitions = Transitions.new(transitions)
|
55
45
|
end
|
56
46
|
|
57
|
-
# execute javascript on the browser
|
58
|
-
# @param [String] script the script to be executed
|
59
|
-
# @return [Object] object returned by the capybara execute_script method
|
60
|
-
# @raise [NotSupportedException] if the capybara driver in use does not support execute script
|
61
|
-
def execute_script(script)
|
62
|
-
raw_session.execute_script(script)
|
63
|
-
rescue Capybara::NotSupportedByDriverError
|
64
|
-
raise NotSupportedException, UNSUPPORTED_OPERATION_MSG
|
65
|
-
end
|
66
|
-
|
67
47
|
# proxies unknown method calls to the currently loaded page object
|
68
48
|
# @return [Object] returned object from the page object method call
|
69
49
|
def method_missing(name, *args, &block)
|
50
|
+
return raw_session.send(name, *args, &block) if raw_session.respond_to?(name)
|
51
|
+
|
70
52
|
current_page.send(name, *args, &block)
|
71
53
|
end
|
72
54
|
|
55
|
+
def on?(page_class)
|
56
|
+
current_page.is_a?(page_class)
|
57
|
+
end
|
58
|
+
|
73
59
|
# @param args see {::Object#respond_to?}
|
74
60
|
# @return [Boolean] true if self or the current page object responds to the give method name
|
75
61
|
def respond_to_missing?(*args)
|
76
|
-
super || current_page.respond_to?(*args)
|
62
|
+
super || current_page.respond_to?(*args) || raw_session.respond_to?(*args)
|
77
63
|
end
|
78
64
|
|
79
65
|
# Direct the browser to the given page or url. {Session#current_page} will be set be an instance of the given/mapped
|
@@ -40,20 +40,6 @@ RSpec.describe PageMagic::Session do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
describe '#current_path' do
|
44
|
-
it "returns the browser's current path" do
|
45
|
-
browser.visit('/url')
|
46
|
-
expect(session.current_path).to eq(browser.current_path)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe '#current_url' do
|
51
|
-
it "returns the browser's current url" do
|
52
|
-
browser.visit('/url')
|
53
|
-
expect(session.current_url).to eq(session.current_url)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
43
|
describe '#define_page_mappings' do
|
58
44
|
context 'when the mapping includes a literal' do
|
59
45
|
it 'creates a matcher to contain the specification' do
|
@@ -71,22 +57,6 @@ RSpec.describe PageMagic::Session do
|
|
71
57
|
end
|
72
58
|
end
|
73
59
|
|
74
|
-
describe '#execute_script' do
|
75
|
-
it 'calls the execute script method on the capybara session' do
|
76
|
-
allow(browser).to receive(:execute_script).with(:script).and_return(:result)
|
77
|
-
expect(session.execute_script(:script)).to be(:result)
|
78
|
-
end
|
79
|
-
|
80
|
-
context 'when the Capybara session does not support #execute_script' do
|
81
|
-
let(:browser) { Capybara::Driver::Base.new }
|
82
|
-
|
83
|
-
it 'raises an error' do
|
84
|
-
expected_message = described_class::UNSUPPORTED_OPERATION_MSG
|
85
|
-
expect { session.execute_script(:script) }.to raise_error(PageMagic::NotSupportedException, expected_message)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
60
|
describe '#method_missing' do
|
91
61
|
before do
|
92
62
|
page.class_eval do
|
@@ -100,6 +70,13 @@ RSpec.describe PageMagic::Session do
|
|
100
70
|
session = described_class.new(browser).visit(page, url: 'http://base.url')
|
101
71
|
expect(session.my_method).to be(:called)
|
102
72
|
end
|
73
|
+
|
74
|
+
context 'when method not on current page' do
|
75
|
+
it 'delegates to the capybara session' do
|
76
|
+
session = described_class.new(browser).visit(page, url: 'http://base.url')
|
77
|
+
expect(session).to have_text('ok')
|
78
|
+
end
|
79
|
+
end
|
103
80
|
end
|
104
81
|
|
105
82
|
describe '#respond_to?' do
|
@@ -123,6 +100,13 @@ RSpec.describe PageMagic::Session do
|
|
123
100
|
expect(session.respond_to?(:my_method)).to eq(true)
|
124
101
|
end
|
125
102
|
end
|
103
|
+
|
104
|
+
context 'when method not on self or the current page' do
|
105
|
+
it 'checks the capybara session' do
|
106
|
+
session = described_class.new(browser)
|
107
|
+
expect(session).to respond_to(:has_text?)
|
108
|
+
end
|
109
|
+
end
|
126
110
|
end
|
127
111
|
|
128
112
|
describe '#visit' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leon Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-07-
|
11
|
+
date: 2021-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|