page_magic 2.0.6 → 2.0.12
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/README.md +2 -7
- data/lib/page_magic/session.rb +0 -6
- data/lib/page_magic/version.rb +3 -0
- metadata +81 -88
- data/.codeclimate.yml +0 -4
- data/.pullreview.yml +0 -14
- data/.rspec +0 -1
- data/.rubocop.yml +0 -39
- data/.simplecov +0 -10
- data/.zsh_config +0 -6
- data/Dockerfile +0 -11
- data/Gemfile +0 -24
- data/Gemfile.lock +0 -175
- data/Makefile +0 -17
- data/Rakefile +0 -32
- data/VERSION +0 -1
- data/circle.yml +0 -8
- data/page_magic.gemspec +0 -128
- data/spec/lib/active_support/core_ext/object/to_query_test.rb +0 -78
- data/spec/page_magic/class_methods_spec.rb +0 -92
- data/spec/page_magic/comparator/fuzzy_spec.rb +0 -44
- data/spec/page_magic/comparator/literal_spec.rb +0 -41
- data/spec/page_magic/comparator/null_spec.rb +0 -35
- data/spec/page_magic/comparator/parameter_map_spec.rb +0 -75
- data/spec/page_magic/driver_spec.rb +0 -40
- data/spec/page_magic/drivers/poltergeist_spec.rb +0 -8
- data/spec/page_magic/drivers/rack_test_spec.rb +0 -8
- data/spec/page_magic/drivers/selenium_spec.rb +0 -15
- data/spec/page_magic/drivers_spec.rb +0 -48
- data/spec/page_magic/element/locators_spec.rb +0 -36
- data/spec/page_magic/element/not_found_spec.rb +0 -24
- data/spec/page_magic/element/query/multiple_results_spec.rb +0 -14
- data/spec/page_magic/element/query/single_result_spec.rb +0 -21
- data/spec/page_magic/element/query_spec.rb +0 -38
- data/spec/page_magic/element/selector_spec.rb +0 -166
- data/spec/page_magic/element_context_spec.rb +0 -72
- data/spec/page_magic/element_definition_builder_spec.rb +0 -19
- data/spec/page_magic/element_spec.rb +0 -256
- data/spec/page_magic/elements/config_spec.rb +0 -203
- data/spec/page_magic/elements_spec.rb +0 -125
- data/spec/page_magic/instance_methods_spec.rb +0 -90
- data/spec/page_magic/mapping_spec.rb +0 -181
- data/spec/page_magic/session_methods_spec.rb +0 -40
- data/spec/page_magic/session_spec.rb +0 -164
- data/spec/page_magic/transitions_spec.rb +0 -43
- data/spec/page_magic/utils/string_spec.rb +0 -29
- data/spec/page_magic/utils/url_spec.rb +0 -9
- data/spec/page_magic/wait_methods_spec.rb +0 -35
- data/spec/page_magic/watcher_spec.rb +0 -22
- data/spec/page_magic/watchers_spec.rb +0 -80
- data/spec/page_magic_spec.rb +0 -115
- data/spec/spec_helper.rb +0 -15
- data/spec/support/shared_contexts.rb +0 -5
- data/spec/support/shared_examples.rb +0 -25
data/Rakefile
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
Bundler.require :test, :development
|
4
|
-
|
5
|
-
RuboCop::RakeTask.new
|
6
|
-
|
7
|
-
RSpec::Core::RakeTask.new(:spec) do
|
8
|
-
ENV['coverage'] = 'true'
|
9
|
-
end
|
10
|
-
|
11
|
-
Jeweler::Tasks.new do |gem|
|
12
|
-
gem.name = 'page_magic'
|
13
|
-
gem.homepage = 'https://github.com/ladtech/page_magic'
|
14
|
-
gem.license = 'ruby'
|
15
|
-
gem.summary = 'Framework for modeling and interacting with webpages'
|
16
|
-
gem.description = 'Framework for modeling and interacting with webpages which wraps capybara'
|
17
|
-
gem.email = 'info@lvl-up.uk'
|
18
|
-
gem.authors = ['Leon Davis']
|
19
|
-
gem.required_ruby_version = '>= 2.1'
|
20
|
-
end
|
21
|
-
|
22
|
-
Jeweler::RubygemsDotOrgTasks.new
|
23
|
-
|
24
|
-
require 'rake/testtask'
|
25
|
-
Rake::TestTask.new do |t|
|
26
|
-
t.libs << 'spec'
|
27
|
-
t.pattern = 'spec/**/*_test.rb'
|
28
|
-
t.warning = true
|
29
|
-
t.verbose = true
|
30
|
-
end
|
31
|
-
|
32
|
-
task default: [:spec, :test, 'rubocop:auto_correct']
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2.0.6
|
data/circle.yml
DELETED
data/page_magic.gemspec
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: page_magic 1.2.9 ruby lib
|
6
|
-
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.name = "page_magic"
|
9
|
-
s.version = "1.2.9"
|
10
|
-
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Leon Davis"]
|
14
|
-
s.date = "2017-10-03"
|
15
|
-
s.description = "Framework for modeling and interacting with webpages which wraps capybara"
|
16
|
-
s.email = "info@lad-tech.com"
|
17
|
-
s.extra_rdoc_files = [
|
18
|
-
"README.md"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".codeclimate.yml",
|
22
|
-
".pullreview.yml",
|
23
|
-
".rspec",
|
24
|
-
".rubocop.yml",
|
25
|
-
".simplecov",
|
26
|
-
".yardopts",
|
27
|
-
"Gemfile",
|
28
|
-
"Gemfile.lock",
|
29
|
-
"README.md",
|
30
|
-
"Rakefile",
|
31
|
-
"VERSION",
|
32
|
-
"circle.yml",
|
33
|
-
"lib/active_support/core_ext/object/to_query.rb",
|
34
|
-
"lib/page_magic.rb",
|
35
|
-
"lib/page_magic/class_methods.rb",
|
36
|
-
"lib/page_magic/driver.rb",
|
37
|
-
"lib/page_magic/drivers.rb",
|
38
|
-
"lib/page_magic/drivers/poltergeist.rb",
|
39
|
-
"lib/page_magic/drivers/rack_test.rb",
|
40
|
-
"lib/page_magic/drivers/selenium.rb",
|
41
|
-
"lib/page_magic/element.rb",
|
42
|
-
"lib/page_magic/element/locators.rb",
|
43
|
-
"lib/page_magic/element/query.rb",
|
44
|
-
"lib/page_magic/element/query_builder.rb",
|
45
|
-
"lib/page_magic/element/selector.rb",
|
46
|
-
"lib/page_magic/element/selector_methods.rb",
|
47
|
-
"lib/page_magic/element_context.rb",
|
48
|
-
"lib/page_magic/element_definition_builder.rb",
|
49
|
-
"lib/page_magic/elements.rb",
|
50
|
-
"lib/page_magic/exceptions.rb",
|
51
|
-
"lib/page_magic/instance_methods.rb",
|
52
|
-
"lib/page_magic/matcher.rb",
|
53
|
-
"lib/page_magic/session.rb",
|
54
|
-
"lib/page_magic/session_methods.rb",
|
55
|
-
"lib/page_magic/utils/string.rb",
|
56
|
-
"lib/page_magic/wait_methods.rb",
|
57
|
-
"lib/page_magic/watcher.rb",
|
58
|
-
"lib/page_magic/watchers.rb",
|
59
|
-
"page_magic.gemspec",
|
60
|
-
"spec/element_spec.rb",
|
61
|
-
"spec/lib/active_support/core_ext/object/to_query_test.rb",
|
62
|
-
"spec/page_magic/class_methods_spec.rb",
|
63
|
-
"spec/page_magic/driver_spec.rb",
|
64
|
-
"spec/page_magic/drivers/poltergeist_spec.rb",
|
65
|
-
"spec/page_magic/drivers/rack_test_spec.rb",
|
66
|
-
"spec/page_magic/drivers/selenium_spec.rb",
|
67
|
-
"spec/page_magic/drivers_spec.rb",
|
68
|
-
"spec/page_magic/element/locators_spec.rb",
|
69
|
-
"spec/page_magic/element/query_builder_spec.rb",
|
70
|
-
"spec/page_magic/element/query_spec.rb",
|
71
|
-
"spec/page_magic/element/selector_spec.rb",
|
72
|
-
"spec/page_magic/element_context_spec.rb",
|
73
|
-
"spec/page_magic/element_definition_builder_spec.rb",
|
74
|
-
"spec/page_magic/elements_spec.rb",
|
75
|
-
"spec/page_magic/instance_methods_spec.rb",
|
76
|
-
"spec/page_magic/matcher_spec.rb",
|
77
|
-
"spec/page_magic/session_methods_spec.rb",
|
78
|
-
"spec/page_magic/session_spec.rb",
|
79
|
-
"spec/page_magic/utils/string_spec.rb",
|
80
|
-
"spec/page_magic/wait_methods_spec.rb",
|
81
|
-
"spec/page_magic/watchers_spec.rb",
|
82
|
-
"spec/page_magic_spec.rb",
|
83
|
-
"spec/spec_helper.rb",
|
84
|
-
"spec/support/shared_contexts.rb",
|
85
|
-
"spec/support/shared_contexts/files_context.rb",
|
86
|
-
"spec/support/shared_contexts/nested_elements_html_context.rb",
|
87
|
-
"spec/support/shared_contexts/rack_application_context.rb",
|
88
|
-
"spec/support/shared_contexts/webapp_fixture_context.rb",
|
89
|
-
"spec/support/shared_examples.rb",
|
90
|
-
"spec/watcher_spec.rb"
|
91
|
-
]
|
92
|
-
s.homepage = "https://github.com/ladtech/page_magic"
|
93
|
-
s.licenses = ["ruby"]
|
94
|
-
s.required_ruby_version = Gem::Requirement.new(">= 2.1")
|
95
|
-
s.rubygems_version = "2.4.6"
|
96
|
-
s.summary = "Framework for modeling and interacting with webpages"
|
97
|
-
|
98
|
-
if s.respond_to? :specification_version then
|
99
|
-
s.specification_version = 4
|
100
|
-
|
101
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
102
|
-
s.add_runtime_dependency(%q<activesupport-inflector>, [">= 0"])
|
103
|
-
s.add_runtime_dependency(%q<capybara>, [">= 2.5"])
|
104
|
-
s.add_development_dependency(%q<github-markup>, ["~> 1.4"])
|
105
|
-
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
106
|
-
s.add_development_dependency(%q<redcarpet>, ["~> 3.3"])
|
107
|
-
s.add_development_dependency(%q<rubocop>, ["~> 0.34"])
|
108
|
-
s.add_development_dependency(%q<yard>, ["~> 0.8"])
|
109
|
-
else
|
110
|
-
s.add_dependency(%q<activesupport-inflector>, [">= 0"])
|
111
|
-
s.add_dependency(%q<capybara>, [">= 2.5"])
|
112
|
-
s.add_dependency(%q<github-markup>, ["~> 1.4"])
|
113
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
114
|
-
s.add_dependency(%q<redcarpet>, ["~> 3.3"])
|
115
|
-
s.add_dependency(%q<rubocop>, ["~> 0.34"])
|
116
|
-
s.add_dependency(%q<yard>, ["~> 0.8"])
|
117
|
-
end
|
118
|
-
else
|
119
|
-
s.add_dependency(%q<activesupport-inflector>, [">= 0"])
|
120
|
-
s.add_dependency(%q<capybara>, [">= 2.5"])
|
121
|
-
s.add_dependency(%q<github-markup>, ["~> 1.4"])
|
122
|
-
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
123
|
-
s.add_dependency(%q<redcarpet>, ["~> 3.3"])
|
124
|
-
s.add_dependency(%q<rubocop>, ["~> 0.34"])
|
125
|
-
s.add_dependency(%q<yard>, ["~> 0.8"])
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'minitest'
|
4
|
-
Minitest.autorun
|
5
|
-
require 'active_support/core_ext/object/to_query'
|
6
|
-
|
7
|
-
class ToQueryTest < ::Minitest::Test
|
8
|
-
def test_simple_conversion
|
9
|
-
assert_query_equal 'a=10', a: 10
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_cgi_escaping
|
13
|
-
assert_query_equal 'a%3Ab=c+d', 'a:b' => 'c d'
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_nil_parameter_value
|
17
|
-
empty = Object.new
|
18
|
-
def empty.to_param
|
19
|
-
nil
|
20
|
-
end
|
21
|
-
assert_query_equal 'a=', 'a' => empty
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_nested_conversion
|
25
|
-
assert_query_equal 'person%5Blogin%5D=seckar&person%5Bname%5D=Nicholas',
|
26
|
-
person: Hash[:login, 'seckar', :name, 'Nicholas']
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_multiple_nested
|
30
|
-
assert_query_equal 'account%5Bperson%5D%5Bid%5D=20&person%5Bid%5D=10',
|
31
|
-
Hash[:account, { person: { id: 20 } }, :person, { id: 10 }]
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_array_values
|
35
|
-
assert_query_equal 'person%5Bid%5D%5B%5D=10&person%5Bid%5D%5B%5D=20',
|
36
|
-
person: { id: [10, 20] }
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_array_values_are_not_sorted
|
40
|
-
assert_query_equal 'person%5Bid%5D%5B%5D=20&person%5Bid%5D%5B%5D=10',
|
41
|
-
person: { id: [20, 10] }
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_empty_array
|
45
|
-
assert_equal 'person%5B%5D=', [].to_query('person')
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_nested_empty_hash
|
49
|
-
assert_equal '',
|
50
|
-
{}.to_query
|
51
|
-
assert_query_equal 'a=1&b%5Bc%5D=3',
|
52
|
-
a: 1, b: { c: 3, d: {} }
|
53
|
-
assert_query_equal '',
|
54
|
-
a: { b: { c: {} } }
|
55
|
-
assert_query_equal 'b%5Bc%5D=false&b%5Be%5D=&b%5Bf%5D=&p=12',
|
56
|
-
p: 12, b: { c: false, e: nil, f: '' }
|
57
|
-
assert_query_equal 'b%5Bc%5D=3&b%5Bf%5D=',
|
58
|
-
b: { c: 3, k: {}, f: '' }
|
59
|
-
assert_query_equal 'b=3',
|
60
|
-
a: [], b: 3
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_hash_with_namespace
|
64
|
-
hash = { name: 'Nakshay', nationality: 'Indian' }
|
65
|
-
assert_equal 'user%5Bname%5D=Nakshay&user%5Bnationality%5D=Indian', hash.to_query('user')
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_hash_sorted_lexicographically
|
69
|
-
hash = { type: 'human', name: 'Nakshay' }
|
70
|
-
assert_equal 'name=Nakshay&type=human', hash.to_query
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def assert_query_equal(expected, actual)
|
76
|
-
assert_equal expected.split('&'), actual.to_query.split('&')
|
77
|
-
end
|
78
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe PageMagic::ClassMethods do
|
4
|
-
describe '#load' do
|
5
|
-
subject(:page_class) do
|
6
|
-
Class.new.tap do |clazz|
|
7
|
-
clazz.extend(described_class)
|
8
|
-
clazz.include(PageMagic::InstanceMethods)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:page_title) { 'page title' }
|
13
|
-
let(:page_source) do
|
14
|
-
<<-HTML
|
15
|
-
<html>
|
16
|
-
<head><title>#{page_title}</title></head>
|
17
|
-
</html>
|
18
|
-
HTML
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'returns an instance using that source' do
|
22
|
-
expect(page_class.load(page_source).title).to eq(page_title)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe 'on_load' do
|
27
|
-
subject(:page_class) do
|
28
|
-
Class.new.tap do |clazz|
|
29
|
-
clazz.extend(described_class)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'when a block is not set' do
|
34
|
-
it 'returns a default block' do
|
35
|
-
expect(page_class.on_load).to be(described_class::DEFAULT_ON_LOAD)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'when a block is set' do
|
40
|
-
it 'returns that block' do
|
41
|
-
expected_block = proc {}
|
42
|
-
page_class.on_load(&expected_block)
|
43
|
-
expect(page_class.on_load).to be(expected_block)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#url' do
|
49
|
-
subject(:page_class) do
|
50
|
-
Class.new.tap do |clazz|
|
51
|
-
clazz.extend(described_class)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'get/sets a value' do
|
56
|
-
page_class.url(:url)
|
57
|
-
expect(page_class.url).to eq(:url)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe '#visit' do
|
62
|
-
subject(:page_class) do
|
63
|
-
Class.new.tap do |clazz|
|
64
|
-
clazz.extend(described_class)
|
65
|
-
clazz.include(PageMagic::InstanceMethods)
|
66
|
-
clazz.url ''
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
let(:rack_app) do
|
71
|
-
Class.new do
|
72
|
-
def self.call(_env)
|
73
|
-
[200, {}, ['<html><head><title>page1</title></head></html>']]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'passes all options to create an active session on the registered url' do
|
79
|
-
allow(PageMagic).to receive(:session).and_call_original
|
80
|
-
|
81
|
-
page_class.visit(application: rack_app, options: {}, browser: :rack_test)
|
82
|
-
|
83
|
-
expected_option = { application: rack_app, options: {}, browser: :rack_test, url: page_class.url }
|
84
|
-
expect(PageMagic).to have_received(:session).with(expected_option)
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'returns a session' do
|
88
|
-
session = page_class.visit(application: rack_app, options: {}, browser: :rack_test)
|
89
|
-
expect(session).to be_kind_of(PageMagic::Session)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
RSpec.describe PageMagic::Comparator::Fuzzy do
|
2
|
-
describe '#fuzzy?' do
|
3
|
-
context 'when one value is fuzzy' do
|
4
|
-
it 'returns true' do
|
5
|
-
map = described_class.new(//)
|
6
|
-
expect(map).to be_fuzzy
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
describe 'match?' do
|
12
|
-
context 'when comparator contains the parameter' do
|
13
|
-
it 'returns true' do
|
14
|
-
expect(described_class.new(/f*o/)).to be_match('foo')
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'when comparator does not contains the parameter' do
|
19
|
-
it 'returns false' do
|
20
|
-
expect(described_class.new(/f*o/)).not_to be_match('bar')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe '#<=>' do
|
26
|
-
context 'when other is `Null`' do
|
27
|
-
it 'is lesser' do
|
28
|
-
expect(described_class.new(//) <=> PageMagic::Comparator::Null.new).to be(-1)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when other is `Fuzzy`' do
|
33
|
-
it 'is equal' do
|
34
|
-
expect(described_class.new(//) <=> described_class.new(//)).to be 0
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'when other is `Literal`' do
|
39
|
-
it 'is greater' do
|
40
|
-
expect(described_class.new(//) <=> PageMagic::Comparator::Literal.new('/')).to be 1
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
RSpec.describe PageMagic::Comparator::Literal do
|
2
|
-
describe 'match?' do
|
3
|
-
context 'when parameter is the same' do
|
4
|
-
it 'returns true' do
|
5
|
-
expect(described_class.new('/')).to be_match('/')
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
context 'when it parameter is not the same' do
|
10
|
-
it 'returns false' do
|
11
|
-
expect(described_class.new('/')).not_to be_match('foo')
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#fuzzy?' do
|
17
|
-
it 'returns false' do
|
18
|
-
expect(described_class.new('value')).not_to be_fuzzy
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#<=>' do
|
23
|
-
context 'when other is `Null`' do
|
24
|
-
it 'is greater' do
|
25
|
-
expect(described_class.new('/') <=> PageMagic::Comparator::Null.new).to be 1
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'when other is `Fuzzy`' do
|
30
|
-
it 'is greater' do
|
31
|
-
expect(described_class.new('/') <=> PageMagic::Comparator::Fuzzy.new(//)).to be 1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'when other is `Literal`' do
|
36
|
-
it 'is equal' do
|
37
|
-
expect(described_class.new('/') <=> described_class.new('/')).to be 0
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
RSpec.describe PageMagic::Comparator::Null do
|
2
|
-
describe '#fuzzy?' do
|
3
|
-
context 'when one value is fuzzy' do
|
4
|
-
it 'returns true' do
|
5
|
-
expect(described_class.new).not_to be_fuzzy
|
6
|
-
end
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe 'match?' do
|
11
|
-
it 'returns false' do
|
12
|
-
expect(described_class.new).to be_match(true)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#<=>' do
|
17
|
-
context 'when other is `Null`' do
|
18
|
-
it 'is equal' do
|
19
|
-
expect(described_class.new <=> described_class.new).to be 0
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context 'when other is `Fuzzy`' do
|
24
|
-
it 'is greater' do
|
25
|
-
expect(described_class.new <=> PageMagic::Comparator::Fuzzy.new(//)).to be 1
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'when other is `Literal`' do
|
30
|
-
it 'is greater' do
|
31
|
-
expect(described_class.new <=> PageMagic::Comparator::Literal.new('/')).to be 1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
RSpec.describe PageMagic::Comparator::ParameterMap do
|
2
|
-
describe '#fuzzy?' do
|
3
|
-
context 'when one value is fuzzy' do
|
4
|
-
it 'returns true' do
|
5
|
-
map = described_class.new({ param1: //, param2: '' })
|
6
|
-
expect(map).to be_fuzzy
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
context 'when all values are literal' do
|
11
|
-
it 'returns true' do
|
12
|
-
map = described_class.new({ param1: '', param2: '' })
|
13
|
-
expect(map).not_to be_fuzzy
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#match?' do
|
19
|
-
context 'when param has compatible params' do
|
20
|
-
it 'returns true' do
|
21
|
-
expect(described_class.new({ param: '1' })).to be_match(param: '1')
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'when it does not have compatible params' do
|
26
|
-
it 'returns false' do
|
27
|
-
expect(described_class.new({ param: '1' })).not_to be_match(param: '2')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context 'when it does not meet all of the requirements' do
|
32
|
-
it 'returns false' do
|
33
|
-
expect(described_class.new({ param: '1', another_param: '2' })).not_to be_match(param: '1')
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe '#<=>' do
|
39
|
-
context 'when other is empty' do
|
40
|
-
context 'and self is empty' do
|
41
|
-
it 'is equal' do
|
42
|
-
expect(described_class.new({}) <=> described_class.new({})).to be 0
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'self is not empty' do
|
47
|
-
it 'is greater' do
|
48
|
-
expect(described_class.new({ param: 1 }) <=> described_class.new({})).to be 1
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context 'when other contains matchers' do
|
54
|
-
context 'when other has the same number' do
|
55
|
-
context 'and matchers are of the same type' do
|
56
|
-
it 'is equal' do
|
57
|
-
expect(described_class.new({ param: // }) <=> described_class.new({ param: // })).to be 0
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'and has less literal matchers' do
|
62
|
-
it 'is lesser' do
|
63
|
-
expect(described_class.new({ param: '' }) <=> described_class.new({ param: // })).to be 1
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'when other has the less' do
|
69
|
-
it 'is lesser' do
|
70
|
-
expect(described_class.new({ param: // }) <=> described_class.new({})).to be 1
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe PageMagic::Driver do
|
4
|
-
describe '#build' do
|
5
|
-
it 'returns the result of the block passed to the driver class constructor' do
|
6
|
-
subject = described_class.new(:custom_browser) do
|
7
|
-
:driver
|
8
|
-
end
|
9
|
-
expect(subject.build(:rack_app, browser: :custom_browser, options: {})).to eq(:driver)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'passes rack app to the handler' do
|
13
|
-
subject = described_class.new(:custom_browser) do |app, options, browser|
|
14
|
-
expect(app).to eq(:rack_app)
|
15
|
-
expect(options).to eq(:options)
|
16
|
-
expect(browser).to eq(:browser)
|
17
|
-
end
|
18
|
-
|
19
|
-
subject.build(:rack_app, options: :options, browser: :browser)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe '#supports?' do
|
24
|
-
subject do
|
25
|
-
described_class.new :custom_browser
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'browser is in supported browsers' do
|
29
|
-
it 'returns true' do
|
30
|
-
expect(subject.support?(:custom_browser)).to eq(true)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
context 'browser is not in supported browsers' do
|
35
|
-
it 'returns false' do
|
36
|
-
expect(subject.support?(:unsupported_browser)).to eq(false)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe PageMagic::Drivers::Poltergeist do
|
4
|
-
it "is capybara's poltergeist driver" do
|
5
|
-
driver = described_class.build(:app, browser: :poltergeist, options: {})
|
6
|
-
expect(driver).to be_a(Capybara::Poltergeist::Driver)
|
7
|
-
end
|
8
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe PageMagic::Drivers::Selenium do
|
4
|
-
subject do
|
5
|
-
described_class.build(:app, browser: :selenium, options: {})
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'is selenium' do
|
9
|
-
expect(subject).to be_a(Capybara::Selenium::Driver)
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'sets the browser option' do
|
13
|
-
expect(subject.options[:browser]).to be(:selenium)
|
14
|
-
end
|
15
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe PageMagic::Drivers do
|
4
|
-
describe '#find' do
|
5
|
-
it 'returns the registered driver' do
|
6
|
-
drivers = described_class.new
|
7
|
-
expected_driver = PageMagic::Driver.new(:browser_driver)
|
8
|
-
|
9
|
-
drivers.register expected_driver
|
10
|
-
expect(drivers.find(:browser_driver)).to eq(expected_driver)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe '#load' do
|
15
|
-
require 'tmpdir'
|
16
|
-
|
17
|
-
def scratch_dir
|
18
|
-
@scratch_dir ||= Dir.mktmpdir
|
19
|
-
end
|
20
|
-
|
21
|
-
let(:class_definition) do
|
22
|
-
<<-RUBY
|
23
|
-
class CustomDriver;
|
24
|
-
def self.support?(_browser)
|
25
|
-
true
|
26
|
-
end
|
27
|
-
end
|
28
|
-
RUBY
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'loads the drivers in the specified path' do
|
32
|
-
File.write("#{scratch_dir}/custom_driver.rb", class_definition)
|
33
|
-
|
34
|
-
drivers = described_class.new
|
35
|
-
drivers.load(scratch_dir)
|
36
|
-
expect(drivers.find(:custom_browser)).to be(::CustomDriver)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#register' do
|
41
|
-
it 'stores the driver' do
|
42
|
-
drivers = described_class.new
|
43
|
-
expected_driver = PageMagic::Driver.new(:browser_driver)
|
44
|
-
drivers.register expected_driver
|
45
|
-
expect(drivers.all).to eq([expected_driver])
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|