lite_page 1.0.0 → 1.1.0

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