lite_page 1.0.0 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71735671e9e4181369dcfe4804f85b2a37b670ee
4
- data.tar.gz: 8ddbf2000d882bc268da5e5804f628c80c15ca57
3
+ metadata.gz: 70dd796f0dfb46bd35e6b9c9958096cb03812a09
4
+ data.tar.gz: 4675fc3ac77f01e2adeb5779becf01650a533a86
5
5
  SHA512:
6
- metadata.gz: 896939d371bbb321f48c816e3ea5408df25849c3cdb47498d2396535bbeb2ea49ce982ccb1096de0d5c65265ebacaa73f89722d189e011f9ee934c512e899ef6
7
- data.tar.gz: 04e2b601eb106a745717681c15a1d5db66b72b22f323c561de9111bf2bf58024493443aa652e2860ece8bb7329fa29ccf85160cd5fd66a634a341c34c9a6cf2b
6
+ metadata.gz: 564ca2b0f8821524b7eaa69a4e06ef278d23888849d615ddd09d6a1f302e2426ebc5020296f8aebc180a307d336ad84500c9d422fc7781a6eb76884dc41f3f0d
7
+ data.tar.gz: 9dfb69473224e2467dd688669a93dc76f26a8bfaae0c0213ce321a91e9ca6dd4d4f8b95a4a4e707aeaaa907c70aaabb2c3c30eb609161620852a819375698cfe
@@ -1,11 +1,13 @@
1
1
  require 'uri'
2
- require 'lite_page/version'
2
+ require 'lite_page/element_factory'
3
3
  require 'lite_page/page_initializers'
4
+ require 'lite_page/version'
4
5
 
5
6
  module LitePage
6
7
  # Extends the including class with the ElementFactory and ClassMethods modules.
7
8
  def self.included(base)
8
9
  base.extend(ClassMethods)
10
+ base.extend(ElementFactory)
9
11
  end
10
12
 
11
13
  # Initializes the page instance and sets the browser instance
@@ -37,23 +39,5 @@ module LitePage
37
39
  uri.to_s
38
40
  end
39
41
  end
40
-
41
- # Provides convenient method for concisely defining element getters
42
- #
43
- # @param root_elem_var_name [Symbol] the name of the instance variable
44
- # containing the element on which methods should be caleld
45
- # (typically the browser instance).
46
- # @param element_definitions [Hash] the hash used to define element getters
47
- # on the class instance where each key represents the name of the method
48
- # to be defined and whose value is an array containing first, the
49
- # element tag name and second, the selectors with which to locate it.
50
- def def_elements(root_elem_var_name, element_definitions = {})
51
- element_definitions.each do |name, definition|
52
- define_method(name) do |other_selectors = {}|
53
- definition[1].merge!(other_selectors)
54
- instance_variable_get(root_elem_var_name.to_sym).send(*definition)
55
- end
56
- end
57
- end
58
42
  end
59
43
  end
@@ -0,0 +1,21 @@
1
+ module LitePage
2
+ module ElementFactory
3
+ # Provides convenient method for concisely defining element getters
4
+ #
5
+ # @param root_elem_var_name [Symbol] the name of the instance variable
6
+ # containing the element on which methods should be caleld
7
+ # (typically the browser instance).
8
+ # @param element_definitions [Hash] the hash used to define element getters
9
+ # on the class instance where each key represents the name of the method
10
+ # to be defined and whose value is an array containing first, the
11
+ # element tag name and second, the selectors with which to locate it.
12
+ def def_elements(root_elem_var_name, element_definitions = {})
13
+ element_definitions.each do |name, definition|
14
+ define_method(name) do |other_selectors = {}|
15
+ definition[1].merge!(other_selectors)
16
+ instance_variable_get(root_elem_var_name.to_sym).send(*definition)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module LitePage
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -53,42 +53,5 @@ class ClassMethodsTest < Minitest::Spec
53
53
  page.new.page_url(:baz => 'qux', :fizz => 'buzz').must_equal('http://www.example.com?foo=bar&baz=qux&fizz=buzz')
54
54
  end
55
55
  end
56
-
57
- describe '#def_elements' do
58
- before do
59
- class Browser
60
- def echo_args(*args)
61
- args
62
- end
63
-
64
- alias_method :button, :echo_args
65
- alias_method :div, :echo_args
66
- end
67
-
68
- class Page
69
- extend LitePage::ClassMethods
70
-
71
- def initialize
72
- @my_browser = Browser.new
73
- end
74
- end
75
- end
76
-
77
- it 'should define getters for all of the given definitions' do
78
- Page.def_elements(:@my_browser, {
79
- :foo => [:button, :id => 'foo-element'],
80
- :bar => [:div, :class => 'bar-element']
81
- })
82
-
83
- Page.new.foo.must_equal([:id => 'foo-element'])
84
- Page.new.bar.must_equal([:class => 'bar-element'])
85
- end
86
-
87
- it 'should define getters that accept additional selectors' do
88
- Page.def_elements(:@my_browser, :foo => [:button, :id => 'foo-element'])
89
- result = Page.new.foo(:text => /blah/)
90
- result.must_equal([:id => 'foo-element', :text => /blah/])
91
- end
92
- end
93
56
  end
94
57
  end
@@ -0,0 +1,42 @@
1
+ require_relative 'test_helper'
2
+
3
+ class ElementFactoryTest < Minitest::Spec
4
+ describe LitePage::ElementFactory do
5
+ before do
6
+ class Browser
7
+ def echo_args(*args)
8
+ args
9
+ end
10
+
11
+ alias_method :button, :echo_args
12
+ alias_method :div, :echo_args
13
+ end
14
+
15
+ class Page
16
+ extend LitePage::ElementFactory
17
+
18
+ def initialize
19
+ @my_browser = Browser.new
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '#def_elements' do
25
+ it 'should define getters for all of the given definitions' do
26
+ Page.def_elements(:@my_browser, {
27
+ :foo => [:button, :id => 'foo-element'],
28
+ :bar => [:div, :class => 'bar-element']
29
+ })
30
+
31
+ Page.new.foo.must_equal([:id => 'foo-element'])
32
+ Page.new.bar.must_equal([:class => 'bar-element'])
33
+ end
34
+
35
+ it 'should define getters that accept additional selectors' do
36
+ Page.def_elements(:@my_browser, :foo => [:button, :id => 'foo-element'])
37
+ result = Page.new.foo(:text => /blah/)
38
+ result.must_equal([:id => 'foo-element', :text => /blah/])
39
+ end
40
+ end
41
+ end
42
+ end
@@ -4,10 +4,10 @@ class LitePageTest < Minitest::Spec
4
4
  describe LitePage do
5
5
  let(:page) { Class.new { include LitePage } }
6
6
 
7
-
8
7
  describe '::included' do
9
- it 'should extend the class with ClassMethods' do
8
+ it 'should extend the class with ClassMethods and ElementFactory' do
10
9
  page.is_a?(LitePage::ClassMethods).must_equal(true)
10
+ page.is_a?(LitePage::ElementFactory).must_equal(true)
11
11
  end
12
12
  end
13
13
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite_page
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Clark
@@ -126,10 +126,12 @@ files:
126
126
  - README.md
127
127
  - Rakefile
128
128
  - lib/lite_page.rb
129
+ - lib/lite_page/element_factory.rb
129
130
  - lib/lite_page/page_initializers.rb
130
131
  - lib/lite_page/version.rb
131
132
  - lite_page.gemspec
132
133
  - test/class_methods_test.rb
134
+ - test/element_factory_test.rb
133
135
  - test/lite_page_test.rb
134
136
  - test/page_initializers_test.rb
135
137
  - test/test_helper.rb
@@ -159,6 +161,7 @@ specification_version: 4
159
161
  summary: A Page Object Model DSL for watir-webdriver
160
162
  test_files:
161
163
  - test/class_methods_test.rb
164
+ - test/element_factory_test.rb
162
165
  - test/lite_page_test.rb
163
166
  - test/page_initializers_test.rb
164
167
  - test/test_helper.rb