page_magic 2.0.6 → 2.0.9

Sign up to get free protection for your applications and to get access to all the features.
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