page_magic 2.0.3 → 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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/page_magic/drivers/selenium.rb +1 -1
  4. data/lib/page_magic/session.rb +12 -3
  5. metadata +55 -90
  6. data/.codeclimate.yml +0 -4
  7. data/.pullreview.yml +0 -14
  8. data/.rspec +0 -1
  9. data/.rubocop.yml +0 -39
  10. data/.simplecov +0 -10
  11. data/.zsh_config +0 -6
  12. data/Dockerfile +0 -11
  13. data/Gemfile +0 -24
  14. data/Gemfile.lock +0 -178
  15. data/Makefile +0 -17
  16. data/Rakefile +0 -32
  17. data/circle.yml +0 -8
  18. data/page_magic.gemspec +0 -128
  19. data/spec/lib/active_support/core_ext/object/to_query_test.rb +0 -78
  20. data/spec/page_magic/class_methods_spec.rb +0 -92
  21. data/spec/page_magic/comparator/fuzzy_spec.rb +0 -44
  22. data/spec/page_magic/comparator/literal_spec.rb +0 -41
  23. data/spec/page_magic/comparator/null_spec.rb +0 -35
  24. data/spec/page_magic/comparator/parameter_map_spec.rb +0 -75
  25. data/spec/page_magic/driver_spec.rb +0 -40
  26. data/spec/page_magic/drivers/poltergeist_spec.rb +0 -8
  27. data/spec/page_magic/drivers/rack_test_spec.rb +0 -8
  28. data/spec/page_magic/drivers/selenium_spec.rb +0 -15
  29. data/spec/page_magic/drivers_spec.rb +0 -48
  30. data/spec/page_magic/element/locators_spec.rb +0 -36
  31. data/spec/page_magic/element/not_found_spec.rb +0 -24
  32. data/spec/page_magic/element/query/multiple_results_spec.rb +0 -14
  33. data/spec/page_magic/element/query/single_result_spec.rb +0 -21
  34. data/spec/page_magic/element/query_spec.rb +0 -38
  35. data/spec/page_magic/element/selector_spec.rb +0 -166
  36. data/spec/page_magic/element_context_spec.rb +0 -72
  37. data/spec/page_magic/element_definition_builder_spec.rb +0 -19
  38. data/spec/page_magic/element_spec.rb +0 -256
  39. data/spec/page_magic/elements/config_spec.rb +0 -203
  40. data/spec/page_magic/elements_spec.rb +0 -125
  41. data/spec/page_magic/instance_methods_spec.rb +0 -90
  42. data/spec/page_magic/mapping_spec.rb +0 -181
  43. data/spec/page_magic/session_methods_spec.rb +0 -40
  44. data/spec/page_magic/session_spec.rb +0 -149
  45. data/spec/page_magic/transitions_spec.rb +0 -43
  46. data/spec/page_magic/utils/string_spec.rb +0 -29
  47. data/spec/page_magic/utils/url_spec.rb +0 -9
  48. data/spec/page_magic/wait_methods_spec.rb +0 -35
  49. data/spec/page_magic/watcher_spec.rb +0 -22
  50. data/spec/page_magic/watchers_spec.rb +0 -80
  51. data/spec/page_magic_spec.rb +0 -115
  52. data/spec/spec_helper.rb +0 -15
  53. data/spec/support/shared_contexts.rb +0 -5
  54. data/spec/support/shared_examples.rb +0 -25
@@ -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,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Drivers::RackTest do
4
- it "is capybara's rack test driver" do
5
- driver = described_class.build(:app, browser: :rack_test, options: {})
6
- expect(driver).to be_a(Capybara::RackTest::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
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe PageMagic::Element::Locators do
4
- subject { element_clazz.new }
5
-
6
- let(:element_clazz) do
7
- Class.new do
8
- extend(PageMagic::Elements)
9
- include(PageMagic::Element::Locators)
10
- end
11
- end
12
-
13
- describe '#element_by_name' do
14
- it 'returns the required element' do
15
- selector = { id: 'child' }
16
- element_clazz.element :child1, selector
17
- element_clazz.element :child2, id: 'child 2'
18
-
19
- child_1_builder = PageMagic::ElementDefinitionBuilder.new(
20
- definition_class: PageMagic::Element,
21
- selector: PageMagic::Element::Selector.find(:id).build(:element, 'child')
22
- )
23
-
24
- expect(subject.element_by_name(:child1)).to eq(child_1_builder)
25
- end
26
-
27
- context 'element not found' do
28
- it 'raises an error' do
29
- expected_message = (described_class::ELEMENT_NOT_DEFINED_MSG % :child)
30
- expect do
31
- subject.element_by_name(:child)
32
- end.to raise_exception PageMagic::ElementMissingException, expected_message
33
- end
34
- end
35
- end
36
- end