testcentricity_web 1.0.21 → 1.0.22

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: e6c93ad1ea623efdc142f9b7638bd4f9f416f487
4
- data.tar.gz: 1899a7cc85da93895514242c5ae8c3d51fede5c5
3
+ metadata.gz: b68b85fdae4ff17195153396ec001aeba087248c
4
+ data.tar.gz: edba7bcd859ddab9b29ee02ccda4f3aea7b0deac
5
5
  SHA512:
6
- metadata.gz: 68a89cbddeef0718e0dffceab0db6fb1aaefce7628b7689f8bdda43972e12b69ba3781bbdeaecac5ceabf75af686225a45c80fb0e7e255df0ca4c451a17f1e66
7
- data.tar.gz: 14c4797b8b0a7cd7416c561678c52e613103bb6d5649e8d5c91bf62fe1fed6f5bc9035558b1bbbf4427fff8dc82f4a898015ba74593eb51bfdfe4af0209dc25a
6
+ metadata.gz: 6fbd4d428b2b7150477244be54f3267c20a26ad2d7e7f0573d2e34008b94ab0db66603eb741935147af4e2604a584c1267e9a1fd25ce63b53ae6ac54219b0d00
7
+ data.tar.gz: fcb4f8c48ba0a1c5b37be42263adb908462642eedcbfd73325065aa64b2f2364e0f47b334d04292fa52c0505c390fca476acc7d5a52eb5cc96d2728bbdea442b
@@ -28,7 +28,10 @@ require 'testcentricity_web/elements/select_list'
28
28
  require 'testcentricity_web/elements/list'
29
29
  require 'testcentricity_web/elements/table'
30
30
  require 'testcentricity_web/elements/textfield'
31
-
31
+ require 'testcentricity_web/elements/cell_element'
32
+ require 'testcentricity_web/elements/cell_button'
33
+ require 'testcentricity_web/elements/cell_checkbox'
34
+ require 'testcentricity_web/elements/cell_radio'
32
35
 
33
36
  module TestCentricity
34
37
  class PageManager
@@ -0,0 +1,8 @@
1
+ module TestCentricity
2
+ class CellButton < CellElement
3
+ def initialize(name, parent, locator, context, table, column)
4
+ super
5
+ @type = :cell_button
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,38 @@
1
+ module TestCentricity
2
+ class CellCheckBox < CellElement
3
+ attr_accessor :proxy
4
+
5
+ def initialize(name, parent, locator, context, table, column, proxy)
6
+ super
7
+ @type = :cell_checkbox
8
+ @proxy = proxy
9
+ end
10
+
11
+ def checked?(row)
12
+ obj, = find_cell_element(row)
13
+ cell_object_not_found_exception(obj, 'Cell CheckBox', row)
14
+ obj.checked?
15
+ end
16
+
17
+ def set_checkbox_state(row, state)
18
+ obj, = find_cell_element(row)
19
+ cell_object_not_found_exception(obj, 'Cell CheckBox', row)
20
+ obj.set(state)
21
+ end
22
+
23
+ def check(row)
24
+ set_checkbox_state(row, true)
25
+ end
26
+
27
+ def uncheck(row)
28
+ set_checkbox_state(row, false)
29
+ end
30
+
31
+ def verify_check_state(row, state, enqueue = false)
32
+ actual = checked?(row)
33
+ enqueue ?
34
+ ExceptionQueue.enqueue_assert_equal(state, actual, "Expected Row #{row}/Col #{@column} Cell Checkbox #{object_ref_message}") :
35
+ assert_equal(state, actual, "Expected Row #{row}/Col #{@column} Cell Checkbox #{object_ref_message} to be #{state} but found #{actual} instead")
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,36 @@
1
+ module TestCentricity
2
+ class CellElement < UIElement
3
+ attr_accessor :table
4
+ attr_accessor :column
5
+
6
+ def initialize(name, parent, locator, context, table, column)
7
+ @name = name
8
+ @parent = parent
9
+ @context = context
10
+ @alt_locator = nil
11
+ @table = table
12
+ @column = column
13
+ @locator = "#{@table.get_table_cell_locator('ROW_SPEC', column)}/#{locator}"
14
+ end
15
+
16
+ def exists?(row)
17
+ obj, = find_cell_element(row)
18
+ obj != nil
19
+ end
20
+
21
+ def click(row)
22
+ obj, = find_cell_element(row)
23
+ cell_object_not_found_exception(obj, @type, row)
24
+ obj.click
25
+ end
26
+
27
+ def find_cell_element(row)
28
+ set_alt_locator("#{@locator.gsub('ROW_SPEC', row)}")
29
+ find_element
30
+ end
31
+
32
+ def cell_object_not_found_exception(obj, obj_type, row)
33
+ object_not_found_exception(obj, "Row #{row}/Col #{@column} #{obj_type}")
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,31 @@
1
+ module TestCentricity
2
+ class CellRadio < CellElement
3
+ attr_accessor :proxy
4
+
5
+ def initialize(name, parent, locator, context, table, column, proxy)
6
+ super
7
+ @type = :cell_radio
8
+ @proxy = proxy
9
+ end
10
+
11
+ def selected?(row)
12
+ obj, = find_cell_element(row)
13
+ cell_object_not_found_exception(obj, 'Cell Radio', row)
14
+ obj.checked?
15
+ end
16
+
17
+ def set_selected_state(row, state)
18
+ obj, = find_cell_element(row)
19
+ cell_object_not_found_exception(obj, 'Cell Radio', row)
20
+ obj.set(state)
21
+ end
22
+
23
+ def select(row)
24
+ set_selected_state(row, true)
25
+ end
26
+
27
+ def unselect(row)
28
+ set_selected_state(row, false)
29
+ end
30
+ end
31
+ end
@@ -440,9 +440,7 @@ module TestCentricity
440
440
  end
441
441
  end
442
442
 
443
- private
444
-
445
- def set_table_cell_locator(row, column)
443
+ def get_table_cell_locator(row, column)
446
444
  if @table_section.nil?
447
445
  row_spec = "#{@locator}/#{@table_body}/#{@table_row}"
448
446
  row_spec = "#{row_spec}[#{row}]"
@@ -451,7 +449,13 @@ module TestCentricity
451
449
  row_spec = "#{row_spec}[#{row}]/#{@table_row}[1]"
452
450
  end
453
451
  column_spec = "/#{@table_column}[#{column}]"
454
- set_alt_locator("#{row_spec}#{column_spec}")
452
+ "#{row_spec}#{column_spec}"
453
+ end
454
+
455
+ private
456
+
457
+ def set_table_cell_locator(row, column)
458
+ set_alt_locator(get_table_cell_locator(row, column))
455
459
  end
456
460
 
457
461
  def find_table_cell(row, column)
@@ -272,6 +272,46 @@ module TestCentricity
272
272
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::FileField.new("#{element_name}", self, "#{locator}", :page);end))
273
273
  end
274
274
 
275
+ # Declare and instantiate a cell button in a table column on this page object.
276
+ #
277
+ # @param element_name [Symbol] name of cell button object (as a symbol)
278
+ # @param locator [String] XPath expression that uniquely identifies cell button within row and column of parent table object
279
+ # @param table [Symbol] Name (as a symbol) of parent table object
280
+ # @param column [Integer] 1-based index of table column that contains the cell button object
281
+ # @example
282
+ # cell_button :show_button, "a[@class='show']", :data_table, 5
283
+ # cell_button :edit_button, "a[@class='edit']", :data_table, 5
284
+ #
285
+ def self.cell_button(element_name, locator, table, column)
286
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellButton.new("#{element_name}", self, "#{locator}", :page, #{table}, #{column});end))
287
+ end
288
+
289
+ # Declare and instantiate a cell checkbox in a table column on this page object.
290
+ #
291
+ # @param element_name [Symbol] name of cell checkbox object (as a symbol)
292
+ # @param locator [String] XPath expression that uniquely identifies cell checkbox within row and column of parent table object
293
+ # @param table [Symbol] Name (as a symbol) of parent table object
294
+ # @param column [Integer] 1-based index of table column that contains the cell checkbox object
295
+ # @example
296
+ # cell_checkbox :is_registered_check, "a[@class='registered']", :data_table, 4
297
+ #
298
+ def self.cell_checkbox(element_name, locator, table, column)
299
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellCheckBox.new("#{element_name}", self, "#{locator}", :page, #{table}, #{column});end))
300
+ end
301
+
302
+ # Declare and instantiate a cell radio in a table column on this page object.
303
+ #
304
+ # @param element_name [Symbol] name of cell radio object (as a symbol)
305
+ # @param locator [String] XPath expression that uniquely identifies cell radio within row and column of parent table object
306
+ # @param table [Symbol] Name (as a symbol) of parent table object
307
+ # @param column [Integer] 1-based index of table column that contains the cell radio object
308
+ # @example
309
+ # cell_radio :track_a_radio, "a[@class='track_a']", :data_table, 8
310
+ #
311
+ def self.cell_radio(element_name, locator, table, column)
312
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :page, #{table}, #{column});end))
313
+ end
314
+
275
315
  # Instantiate a single PageSection object for this page object.
276
316
  #
277
317
  # @param section_name [Symbol] name of PageSection object (as a symbol)
@@ -281,6 +281,46 @@ module TestCentricity
281
281
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::FileField.new("#{element_name}", self, "#{locator}", :section);end))
282
282
  end
283
283
 
284
+ # Declare and instantiate a cell button in a table column on this page section.
285
+ #
286
+ # @param element_name [Symbol] name of cell button object (as a symbol)
287
+ # @param locator [String] XPath expression that uniquely identifies cell button within row and column of parent table object
288
+ # @param table [Symbol] Name (as a symbol) of parent table object
289
+ # @param column [Integer] 1-based index of table column that contains the cell button object
290
+ # @example
291
+ # cell_button :show_button, "a[@class='show']", :data_table, 5
292
+ # cell_button :edit_button, "a[@class='edit']", :data_table, 5
293
+ #
294
+ def self.cell_button(element_name, locator, table, column)
295
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellButton.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
296
+ end
297
+
298
+ # Declare and instantiate a cell checkbox in a table column on this page section.
299
+ #
300
+ # @param element_name [Symbol] name of cell checkbox object (as a symbol)
301
+ # @param locator [String] XPath expression that uniquely identifies cell checkbox within row and column of parent table object
302
+ # @param table [Symbol] Name (as a symbol) of parent table object
303
+ # @param column [Integer] 1-based index of table column that contains the cell checkbox object
304
+ # @example
305
+ # cell_checkbox :is_registered_check, "a[@class='registered']", :data_table, 4
306
+ #
307
+ def self.cell_checkbox(element_name, locator, table, column)
308
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellCheckBox.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
309
+ end
310
+
311
+ # Declare and instantiate a cell radio in a table column on this page section.
312
+ #
313
+ # @param element_name [Symbol] name of cell radio object (as a symbol)
314
+ # @param locator [String] XPath expression that uniquely identifies cell radio within row and column of parent table object
315
+ # @param table [Symbol] Name (as a symbol) of parent table object
316
+ # @param column [Integer] 1-based index of table column that contains the cell radio object
317
+ # @example
318
+ # cell_radio :track_a_radio, "a[@class='track_a']", :data_table, 8
319
+ #
320
+ def self.cell_radio(element_name, locator, table, column)
321
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
322
+ end
323
+
284
324
  # Instantiate a single PageSection object within this PageSection object.
285
325
  #
286
326
  # @param section_name [Symbol] name of PageSection object (as a symbol)
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '1.0.21'
2
+ VERSION = '1.0.22'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testcentricity_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.21
4
+ version: 1.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.J. Mrozinski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-07 00:00:00.000000000 Z
11
+ date: 2017-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -194,6 +194,10 @@ files:
194
194
  - lib/testcentricity_web/data_objects_helper.rb
195
195
  - lib/testcentricity_web/drag_drop_helper.rb
196
196
  - lib/testcentricity_web/elements/button.rb
197
+ - lib/testcentricity_web/elements/cell_button.rb
198
+ - lib/testcentricity_web/elements/cell_checkbox.rb
199
+ - lib/testcentricity_web/elements/cell_element.rb
200
+ - lib/testcentricity_web/elements/cell_radio.rb
197
201
  - lib/testcentricity_web/elements/checkbox.rb
198
202
  - lib/testcentricity_web/elements/file_field.rb
199
203
  - lib/testcentricity_web/elements/image.rb