page_magic 1.0.0.alpha7 → 1.0.0.alpha8

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: 41a82b83827dad40deb585e1dbf95b666630dfa4
4
- data.tar.gz: 15441bd24c7ebb9ca36b8c62254e5db21874ea63
3
+ metadata.gz: dfda87e1bb18198d7cd95b36a339ff68be3cf778
4
+ data.tar.gz: 3d95a82ed45417528a116e49ee141a30b0537d41
5
5
  SHA512:
6
- metadata.gz: 169bccf3af8aabefb37196e9b609cf6ba4839a4ad5e002caa4b21c8000c9683523112c595426bc13cd7e32a3c343ce789dc081fb4743489615c5d1b5fb3f1b52
7
- data.tar.gz: 57fc09f6c058bb04b39a7a78d18865946f81959a36621a22d0b89012cdd59270c91dae7900df94b5c543b7c1ae2e90ca4d58f90ad09a6d767addc60dfbf4731c
6
+ metadata.gz: 2bfc886d3de8e0a2ae4993c9820eee29cff4816663a9dd55891d55ebf221a6fbb046f838e38c85873f59e158a072160a08c149eddd3dc24297c4ec0d95be64c1
7
+ data.tar.gz: 908fcba5e372276d9d0729cba67d093d0bdeb50c42f598c7eb7f34ebf461e20f969e871be7def748e69901313ff894d949ba93a9147100100a4f7b1439508311
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0.alpha7
1
+ 1.0.0.alpha8
@@ -29,41 +29,27 @@ module PageMagic
29
29
  end
30
30
 
31
31
  TYPES = [:element, :text_field, :button, :link, :checkbox, :select_list, :radios, :textarea, :section]
32
- TYPES.each do |type|
33
- define_method type do |*args, &block|
34
- first_arg = args.first
35
- if first_arg.is_a?(Symbol)
36
- name, object = args
37
- options = { type: type }
38
- if object.is_a?(Hash)
39
- options[:selector] = object
40
- else
41
- options[:browser_element] = object
42
- end
43
32
 
44
- add_element_definition(name) do |*e_args|
45
- Element.new(name, e_args.delete_at(0), options).tap do |section|
46
- section.expand(*e_args, &(block || proc {}))
47
- end
48
- end
49
33
 
50
- elsif first_arg < Element
51
- section_class = args.delete_at(0)
34
+ TYPES.each do |type|
35
+ define_method type do |*args, &block|
52
36
 
53
- selector = args.find{|arg| arg.is_a?(Hash)}
54
- args.delete(selector)
37
+ section_class = remove_argument(args, Class) || Element
55
38
 
56
- name = args.last
39
+ selector = remove_argument(args, Hash)
40
+ selector ||= section_class.selector if section_class.respond_to?(:selector)
57
41
 
58
- selector = section_class.selector unless selector
42
+ name = remove_argument(args, Symbol)
43
+ name ||= section_class.name.demodulize.to_snake_case.to_sym unless section_class.is_a?(Element)
59
44
 
60
- name = section_class.name.demodulize.to_snake_case.to_sym unless name
45
+ options = selector ? {selector: selector} : {browser_element: args.delete_at(0)}
61
46
 
62
- add_element_definition(name) do |parent_browser_element|
63
- section_class.new(name, parent_browser_element, type: :section, selector: (selector || section_class.selector))
47
+ add_element_definition(name) do |parent_browser_element, *e_args|
48
+ section_class.new(name, parent_browser_element, options.merge(type: type)).tap do |section|
49
+ section.expand(*e_args, &(block || proc {}))
64
50
  end
65
-
66
51
  end
52
+
67
53
  end
68
54
  end
69
55
 
@@ -79,5 +65,11 @@ module PageMagic
79
65
  def element_definitions
80
66
  @element_definitions ||= {}
81
67
  end
68
+
69
+ private
70
+ def remove_argument(args, clazz)
71
+ argument = args.find { |arg| arg.is_a?(clazz) }
72
+ args.delete(argument)
73
+ end
82
74
  end
83
75
  end
@@ -12,6 +12,7 @@ describe PageMagic::Elements do
12
12
  end
13
13
 
14
14
  describe 'adding elements' do
15
+
15
16
  context 'using a selector' do
16
17
  it 'should add an element' do
17
18
  expected_element = PageMagic::Element.new(:name, parent_page_element, type: :text_field, selector: selector)
@@ -20,6 +21,11 @@ describe PageMagic::Elements do
20
21
  end
21
22
  end
22
23
 
24
+ it 'uses the supplied name' do
25
+ page_elements.text_field :alias, selector
26
+ expect(page_elements.elements(parent_page_element).first.name).to eq(:alias)
27
+ end
28
+
23
29
  context 'complex elements' do
24
30
  let!(:section_class) do
25
31
  Class.new(PageMagic::Element) do
@@ -32,132 +38,114 @@ describe PageMagic::Elements do
32
38
 
33
39
  context 'using a predefined class' do
34
40
 
35
- it 'should add a section' do
41
+ it 'should add an element using that class section' do
36
42
  expected_section = section_class.new(:page_section, parent_page_element, type: :section, selector: selector)
37
43
 
38
44
  page_elements.section section_class, :page_section, selector
39
45
  page_elements.elements(parent_page_element).first.should == expected_section
40
46
  end
41
47
 
42
- describe 'selector' do
43
- it 'uses the supplied selector' do
44
- page_elements.section section_class, :alias, selector
48
+ context 'with no selector supplied' do
49
+ it 'defaults the selector to the one on the class' do
50
+ section_class.selector selector
51
+ page_elements.section section_class, :alias
45
52
  expect(page_elements.elements(parent_page_element).first.selector).to eq(selector)
46
53
  end
47
-
48
- context 'with no selector supplied' do
49
- it 'defaults the selector to the one on the class' do
50
- section_class.selector selector
51
- page_elements.section section_class, :alias
52
- expect(page_elements.elements(parent_page_element).first.selector).to eq(selector)
53
- end
54
- end
55
54
  end
56
55
 
57
- context 'name' do
58
- context 'with no name supplied' do
59
- it 'should default to the name of the class if one is not supplied' do
60
- section_class.stub(:name).and_return('PageSection')
61
- page_elements.section section_class, selector
62
- page_elements.elements(parent_page_element).first.name.should == :page_section
63
- end
64
- end
65
-
66
- it 'should use the supplied name' do
67
- page_elements.section section_class, :alias, selector
68
- expect(page_elements.elements(parent_page_element).first.name).to eq(:alias)
56
+ context 'with no name supplied' do
57
+ it 'should default to the name of the class if one is not supplied' do
58
+ section_class.stub(:name).and_return('PageSection')
59
+ page_elements.section section_class, selector
60
+ page_elements.elements(parent_page_element).first.name.should == :page_section
69
61
  end
70
62
  end
71
-
72
- it 'does not require a block' do
73
- expect { page_elements.section :page_section, :object }.not_to raise_exception
74
- end
75
63
  end
64
+ end
76
65
 
77
- context 'using a block' do
78
- context 'browser_element' do
79
- before :each do
80
- @browser = double('browser')
81
- @element = double('element')
82
- @parent_page_element = double('parent_page_element')
83
- @parent_page_element.stub(:browser_element).and_return(@browser)
84
- @browser.should_receive(:find).with(:css, :selector).and_return(@element)
85
- end
86
-
87
- it 'should be assigned when selector is passed to section method' do
88
- element = @element
66
+ context 'using a block' do
67
+ context 'browser_element' do
68
+ before :each do
69
+ @browser = double('browser')
70
+ @element = double('element')
71
+ @parent_page_element = double('parent_page_element')
72
+ @parent_page_element.stub(:browser_element).and_return(@browser)
73
+ @browser.should_receive(:find).with(:css, :selector).and_return(@element)
74
+ end
89
75
 
90
- page_elements.section :page_section, css: :selector do
91
- browser_element.should == element
92
- end
76
+ it 'should be assigned when selector is passed to section method' do
77
+ element = @element
93
78
 
94
- page_elements.element_definitions[:page_section].call(@parent_page_element)
79
+ page_elements.section :page_section, css: :selector do
80
+ browser_element.should == element
95
81
  end
96
82
 
97
- it 'should be assigned when selector is defined in the block passed to the section method' do
98
- element = @element
99
-
100
- page_elements.section :page_section do
101
- selector css: :selector
102
- browser_element.should == element
103
- end
104
-
105
- page_elements.elements(@parent_page_element, nil)
106
- end
83
+ page_elements.element_definitions[:page_section].call(@parent_page_element)
107
84
  end
108
85
 
109
- it 'should pass args through to the block' do
110
- page_elements.section :page_section, css: '.blah' do |arg|
111
- arg[:passed_through] = true
86
+ it 'should be assigned when selector is defined in the block passed to the section method' do
87
+ element = @element
88
+
89
+ page_elements.section :page_section do
90
+ selector css: :selector
91
+ browser_element.should == element
112
92
  end
113
93
 
114
- arg = {}
115
- browser = double('browser', find: :browser_element)
116
- parent_page_element = double('parent_browser_element', browser_element: browser)
117
- page_elements.elements(parent_page_element, arg)
118
- arg[:passed_through].should be_true
94
+ page_elements.elements(@parent_page_element, nil)
119
95
  end
96
+ end
120
97
 
121
- it 'should return your a copy of the core definition' do
122
- page_elements.section section_class, :page_section, selector
123
- first = page_elements.element_definitions[:page_section].call(parent_page_element)
124
- second = page_elements.element_definitions[:page_section].call(parent_page_element)
125
- first.should_not equal(second)
98
+ it 'should pass args through to the block' do
99
+ page_elements.section :page_section, css: '.blah' do |arg|
100
+ arg[:passed_through] = true
126
101
  end
102
+
103
+ arg = {}
104
+ browser = double('browser', find: :browser_element)
105
+ parent_page_element = double('parent_browser_element', browser_element: browser)
106
+ page_elements.elements(parent_page_element, arg)
107
+ arg[:passed_through].should be_true
127
108
  end
128
109
 
129
- describe 'location' do
130
- context 'a prefetched object' do
131
- it 'should add a section' do
132
- expected_section = section_class.new(:page_section, parent_page_element, type: :section, browser_element: :object)
133
- page_elements.section :page_section, :object
134
- expected_section.should == page_elements.elements(parent_page_element).first
135
- end
136
- end
110
+ it 'should return your a copy of the core definition' do
111
+ page_elements.element :page_section, selector
112
+ first = page_elements.element_definitions[:page_section].call(parent_page_element)
113
+ second = page_elements.element_definitions[:page_section].call(parent_page_element)
114
+ first.should_not equal(second)
137
115
  end
116
+ end
138
117
 
139
- describe 'session handle' do
140
- it 'should be on instances created from a class' do
141
- browser_element = double(:browser_element, find: :browser_element)
142
- parent = double('parent', session: :current_session, browser_element: browser_element)
143
- page_elements.section section_class, :page_section, selector
118
+ describe 'location' do
119
+ context 'a prefetched object' do
120
+ it 'should add a section' do
121
+ expected_section = PageMagic::Element.new(:element, parent_page_element, type: :section, browser_element: :object)
122
+ page_elements.element :page_section, :object
123
+ expected_section.should == page_elements.elements(parent_page_element).first
124
+ end
125
+ end
126
+ end
144
127
 
145
- section = page_elements.element_definitions[:page_section].call(parent)
128
+ describe 'session handle' do
129
+ it 'should be on instances created from a class' do
130
+ browser_element = double(:browser_element, find: :browser_element)
131
+ parent = double('parent', session: :current_session, browser_element: browser_element)
132
+ page_elements.element :page_section, selector
146
133
 
147
- section.session.should == :current_session
148
- end
134
+ section = page_elements.element_definitions[:page_section].call(parent)
149
135
 
150
- it 'should be on instances created dynamically using the section method' do
151
- browser_element = double('browser_element')
152
- browser_element.stub(:find)
153
- parent = double('parent', session: :current_session, browser_element: browser_element)
136
+ section.session.should == :current_session
137
+ end
154
138
 
155
- page_elements.section :page_section, css: :selector do
156
- end
139
+ it 'should be on instances created dynamically using the section method' do
140
+ browser_element = double('browser_element')
141
+ browser_element.stub(:find)
142
+ parent = double('parent', session: :current_session, browser_element: browser_element)
157
143
 
158
- section = page_elements.element_definitions[:page_section].call(parent)
159
- section.session.should == :current_session
144
+ page_elements.section :page_section, css: :selector do
160
145
  end
146
+
147
+ section = page_elements.element_definitions[:page_section].call(parent)
148
+ section.session.should == :current_session
161
149
  end
162
150
  end
163
151
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha7
4
+ version: 1.0.0.alpha8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Davis