page_magic 2.0.6 → 2.0.9

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/page_magic/session.rb +0 -6
  4. metadata +55 -90
  5. data/.codeclimate.yml +0 -4
  6. data/.pullreview.yml +0 -14
  7. data/.rspec +0 -1
  8. data/.rubocop.yml +0 -39
  9. data/.simplecov +0 -10
  10. data/.zsh_config +0 -6
  11. data/Dockerfile +0 -11
  12. data/Gemfile +0 -24
  13. data/Gemfile.lock +0 -175
  14. data/Makefile +0 -17
  15. data/Rakefile +0 -32
  16. data/circle.yml +0 -8
  17. data/page_magic.gemspec +0 -128
  18. data/spec/lib/active_support/core_ext/object/to_query_test.rb +0 -78
  19. data/spec/page_magic/class_methods_spec.rb +0 -92
  20. data/spec/page_magic/comparator/fuzzy_spec.rb +0 -44
  21. data/spec/page_magic/comparator/literal_spec.rb +0 -41
  22. data/spec/page_magic/comparator/null_spec.rb +0 -35
  23. data/spec/page_magic/comparator/parameter_map_spec.rb +0 -75
  24. data/spec/page_magic/driver_spec.rb +0 -40
  25. data/spec/page_magic/drivers/poltergeist_spec.rb +0 -8
  26. data/spec/page_magic/drivers/rack_test_spec.rb +0 -8
  27. data/spec/page_magic/drivers/selenium_spec.rb +0 -15
  28. data/spec/page_magic/drivers_spec.rb +0 -48
  29. data/spec/page_magic/element/locators_spec.rb +0 -36
  30. data/spec/page_magic/element/not_found_spec.rb +0 -24
  31. data/spec/page_magic/element/query/multiple_results_spec.rb +0 -14
  32. data/spec/page_magic/element/query/single_result_spec.rb +0 -21
  33. data/spec/page_magic/element/query_spec.rb +0 -38
  34. data/spec/page_magic/element/selector_spec.rb +0 -166
  35. data/spec/page_magic/element_context_spec.rb +0 -72
  36. data/spec/page_magic/element_definition_builder_spec.rb +0 -19
  37. data/spec/page_magic/element_spec.rb +0 -256
  38. data/spec/page_magic/elements/config_spec.rb +0 -203
  39. data/spec/page_magic/elements_spec.rb +0 -125
  40. data/spec/page_magic/instance_methods_spec.rb +0 -90
  41. data/spec/page_magic/mapping_spec.rb +0 -181
  42. data/spec/page_magic/session_methods_spec.rb +0 -40
  43. data/spec/page_magic/session_spec.rb +0 -164
  44. data/spec/page_magic/transitions_spec.rb +0 -43
  45. data/spec/page_magic/utils/string_spec.rb +0 -29
  46. data/spec/page_magic/utils/url_spec.rb +0 -9
  47. data/spec/page_magic/wait_methods_spec.rb +0 -35
  48. data/spec/page_magic/watcher_spec.rb +0 -22
  49. data/spec/page_magic/watchers_spec.rb +0 -80
  50. data/spec/page_magic_spec.rb +0 -115
  51. data/spec/spec_helper.rb +0 -15
  52. data/spec/support/shared_contexts.rb +0 -5
  53. data/spec/support/shared_examples.rb +0 -25
data/Makefile DELETED
@@ -1,17 +0,0 @@
1
- .PHONY: help
2
- DOCKER_IMAGE = lvl-up/page-magic
3
- MOUNT_DIR = /page_magic
4
-
5
- help:
6
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
7
-
8
- docker: ## build project docker image
9
- docker build -t $(DOCKER_IMAGE) .
10
-
11
- test: ## Run tests
12
- docker run -v $(PWD):$(MOUNT_DIR) -w $(MOUNT_DIR) -t $(DOCKER_IMAGE) bundle exec rspec
13
-
14
- build: docker ## build gem
15
- rake build
16
-
17
- all: docker test build ## run all targets before building gem
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/circle.yml DELETED
@@ -1,8 +0,0 @@
1
- machine:
2
- ruby:
3
- version: '2.2'
4
- test:
5
- override:
6
- - bundle exec rake
7
- post:
8
- - CODECLIMATE_REPO_TOKEN=$CODECLIMATE_REPO_TOKEN bundle exec codeclimate-test-reporter
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