testcentricity_web 2.0.12 → 2.0.13

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: 2c24bd636d9f6a5ebd55b16bae227275bebd8ec6
4
- data.tar.gz: 783057a1b748cc9c6d81e18d82568ba33e2001db
3
+ metadata.gz: aec7592d71cdbcdfb4219ebbf143794875764611
4
+ data.tar.gz: 502ded4e78118e682c8f3c7f51e72be52651fbae
5
5
  SHA512:
6
- metadata.gz: adb6b3a2bff1718a9168f5314b28c4bda337e1ccfdb24d61823425e96238736439a8f188507d4eb5e2996a36201c5b16b4b639ac71f110856756dc75528a52de
7
- data.tar.gz: 28d0d8250d49b169cac358a68cc07dc7250daef509183d86518249140639229e12e42a0f9742020607b42d07951ef60368b6069f049078c7dfd7b9b5b7dc0269
6
+ metadata.gz: f909d3bd1a0850d88c73eecf5519f85736465e3afa990b4a4bd5f1ac8392a29402cc6f512ae7fae441a100f801e111634cf7e2a943801cc844f90ddd2bde384d
7
+ data.tar.gz: c69b601e32fc446c6dd8ea96c3385eb21bad42fc63042785c63f72d5feae89f4f869c5eb9ab6882c325f58cc132796dfc4e518f9f8bcc041b8de5cb5c1091d22
@@ -32,6 +32,10 @@ require 'testcentricity_web/elements/cell_element'
32
32
  require 'testcentricity_web/elements/cell_button'
33
33
  require 'testcentricity_web/elements/cell_checkbox'
34
34
  require 'testcentricity_web/elements/cell_radio'
35
+ require 'testcentricity_web/elements/list_element'
36
+ require 'testcentricity_web/elements/list_button'
37
+ require 'testcentricity_web/elements/list_checkbox'
38
+ require 'testcentricity_web/elements/list_radio'
35
39
 
36
40
  module TestCentricity
37
41
  class PageManager
@@ -65,6 +65,10 @@ module TestCentricity
65
65
  end
66
66
  end
67
67
 
68
+ def self.num_browser_instances
69
+ Capybara.page.driver.browser.window_handles.count
70
+ end
71
+
68
72
  def self.close_current_browser_instance
69
73
  Capybara.page.driver.browser.close
70
74
  Capybara.page.driver.browser.switch_to.window(Capybara.page.driver.browser.window_handles.last)
@@ -31,9 +31,22 @@ module TestCentricity
31
31
  obj.click
32
32
  end
33
33
 
34
- def find_cell_element(row)
34
+ def get_value(row, visible = true)
35
+ obj, = find_cell_element(row, visible)
36
+ cell_object_not_found_exception(obj, @type, row)
37
+ case obj.tag_name.downcase
38
+ when 'input', 'select', 'textarea'
39
+ obj.value
40
+ else
41
+ obj.text
42
+ end
43
+ end
44
+
45
+ alias get_caption get_value
46
+
47
+ def find_cell_element(row, visible = true)
35
48
  set_alt_locator("#{@locator.gsub('ROW_SPEC', row.to_s)}")
36
- find_element
49
+ find_element(visible)
37
50
  end
38
51
 
39
52
  def cell_object_not_found_exception(obj, obj_type, row)
@@ -41,5 +41,9 @@ module TestCentricity
41
41
  ExceptionQueue.enqueue_assert_equal(expected, actual, "Expected list #{object_ref_message}") :
42
42
  assert_equal(expected, actual, "Expected list #{object_ref_message} to be #{expected} but found #{actual}")
43
43
  end
44
+
45
+ def get_list_row_locator(row)
46
+ "#{@locator}/#{@list_item}[#{row}]"
47
+ end
44
48
  end
45
49
  end
@@ -0,0 +1,8 @@
1
+ module TestCentricity
2
+ class ListButton < ListElement
3
+ def initialize(name, parent, locator, context, list)
4
+ super
5
+ @type = :list_button
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,38 @@
1
+ module TestCentricity
2
+ class ListCheckBox < ListElement
3
+ attr_accessor :proxy
4
+
5
+ def initialize(name, parent, locator, context, list, proxy)
6
+ super
7
+ @type = :list_checkbox
8
+ @proxy = proxy
9
+ end
10
+
11
+ def checked?(row)
12
+ obj, = find_list_element(row)
13
+ list_object_not_found_exception(obj, 'List CheckBox', row)
14
+ obj.checked?
15
+ end
16
+
17
+ def set_checkbox_state(row, state)
18
+ obj, = find_list_element(row)
19
+ list_object_not_found_exception(obj, 'List 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} List Checkbox #{object_ref_message}") :
35
+ assert_equal(state, actual, "Expected Row #{row} List Checkbox #{object_ref_message} to be #{state} but found #{actual} instead")
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,51 @@
1
+ module TestCentricity
2
+ class ListElement < UIElement
3
+ attr_accessor :list
4
+ attr_accessor :element_locator
5
+
6
+ def initialize(name, parent, locator, context, list)
7
+ @name = name
8
+ @parent = parent
9
+ @context = context
10
+ @alt_locator = nil
11
+ @list = list
12
+ @element_locator = locator
13
+ locator.nil? ?
14
+ @locator = list.get_list_row_locator('ROW_SPEC') :
15
+ @locator = "#{list.get_list_row_locator('ROW_SPEC')}/#{@element_locator}"
16
+ end
17
+
18
+ def exists?(row)
19
+ obj, = find_list_element(row)
20
+ obj != nil
21
+ end
22
+
23
+ def click(row)
24
+ obj, = find_list_element(row)
25
+ list_object_not_found_exception(obj, @type, row)
26
+ obj.click
27
+ end
28
+
29
+ def get_value(row, visible = true)
30
+ obj, = find_list_element(row, visible)
31
+ list_object_not_found_exception(obj, @type, row)
32
+ case obj.tag_name.downcase
33
+ when 'input', 'select', 'textarea'
34
+ obj.value
35
+ else
36
+ obj.text
37
+ end
38
+ end
39
+
40
+ alias get_caption get_value
41
+
42
+ def find_list_element(row, visible = true)
43
+ set_alt_locator("#{@locator.gsub('ROW_SPEC', row.to_s)}")
44
+ find_element(visible)
45
+ end
46
+
47
+ def list_object_not_found_exception(obj, obj_type, row)
48
+ object_not_found_exception(obj, "Row #{row} #{obj_type}")
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,31 @@
1
+ module TestCentricity
2
+ class ListRadio < ListElement
3
+ attr_accessor :proxy
4
+
5
+ def initialize(name, parent, locator, context, list, proxy)
6
+ super
7
+ @type = :list_radio
8
+ @proxy = proxy
9
+ end
10
+
11
+ def selected?(row)
12
+ obj, = find_list_element(row)
13
+ list_object_not_found_exception(obj, 'List Radio', row)
14
+ obj.checked?
15
+ end
16
+
17
+ def set_selected_state(row, state)
18
+ obj, = find_list_element(row)
19
+ list_object_not_found_exception(obj, 'List 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
@@ -318,6 +318,43 @@ module TestCentricity
318
318
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :page, #{table}, #{column});end))
319
319
  end
320
320
 
321
+ # Declare and instantiate a list button in a row of a list object on this page object.
322
+ #
323
+ # @param element_name [Symbol] name of list button object (as a symbol)
324
+ # @param locator [String] XPath expression that uniquely identifies list button within row of parent list object
325
+ # @param list [Symbol] Name (as a symbol) of parent list object
326
+ # @example
327
+ # list_button :delete_button, "a[@class='delete']", :icon_list
328
+ # list_button :edit_button, "a[@class='edit']", :icon_list
329
+ #
330
+ def self.list_button(element_name, locator, list)
331
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::ListButton.new("#{element_name}", self, "#{locator}", :page, #{list});end))
332
+ end
333
+
334
+ # Declare and instantiate a list checkbox in a row of a list object on this page object.
335
+ #
336
+ # @param element_name [Symbol] name of list checkbox object (as a symbol)
337
+ # @param locator [String] XPath expression that uniquely identifies list checkbox within row of parent list object
338
+ # @param list [Symbol] Name (as a symbol) of parent list object
339
+ # @example
340
+ # list_checkbox :is_registered_check, "a[@class='registered']", :data_list
341
+ #
342
+ def self.list_checkbox(element_name, locator, list)
343
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::ListCheckBox.new("#{element_name}", self, "#{locator}", :page, #{list});end))
344
+ end
345
+
346
+ # Declare and instantiate a list radio in a row of a list object on this page object.
347
+ #
348
+ # @param element_name [Symbol] name of list radio object (as a symbol)
349
+ # @param locator [String] XPath expression that uniquely identifies list radio within row of parent list object
350
+ # @param list [Symbol] Name (as a symbol) of parent list object
351
+ # @example
352
+ # list_radio :sharing_radio, "a[@class='sharing']", :data_list
353
+ #
354
+ def self.list_radio(element_name, locator, list)
355
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::ListRadio.new("#{element_name}", self, "#{locator}", :page, #{list});end))
356
+ end
357
+
321
358
  # Instantiate a single PageSection object for this page object.
322
359
  #
323
360
  # @param section_name [Symbol] name of PageSection object (as a symbol)
@@ -331,6 +331,43 @@ module TestCentricity
331
331
  class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :section, #{table}, #{column});end))
332
332
  end
333
333
 
334
+ # Declare and instantiate a list button in a row of a list object on this section object.
335
+ #
336
+ # @param element_name [Symbol] name of list button object (as a symbol)
337
+ # @param locator [String] XPath expression that uniquely identifies list button within row of parent list object
338
+ # @param list [Symbol] Name (as a symbol) of parent list object
339
+ # @example
340
+ # list_button :delete_button, "a[@class='delete']", :icon_list
341
+ # list_button :edit_button, "a[@class='edit']", :icon_list
342
+ #
343
+ def self.list_button(element_name, locator, list)
344
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::ListButton.new("#{element_name}", self, "#{locator}", :section, #{list});end))
345
+ end
346
+
347
+ # Declare and instantiate a list checkbox in a row of a list object on this section object.
348
+ #
349
+ # @param element_name [Symbol] name of list checkbox object (as a symbol)
350
+ # @param locator [String] XPath expression that uniquely identifies list checkbox within row of parent list object
351
+ # @param list [Symbol] Name (as a symbol) of parent list object
352
+ # @example
353
+ # list_checkbox :is_registered_check, "a[@class='registered']", :data_list
354
+ #
355
+ def self.list_checkbox(element_name, locator, list)
356
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::ListCheckBox.new("#{element_name}", self, "#{locator}", :section, #{list});end))
357
+ end
358
+
359
+ # Declare and instantiate a list radio in a row of a list object on this section object.
360
+ #
361
+ # @param element_name [Symbol] name of list radio object (as a symbol)
362
+ # @param locator [String] XPath expression that uniquely identifies list radio within row of parent list object
363
+ # @param list [Symbol] Name (as a symbol) of parent list object
364
+ # @example
365
+ # list_radio :sharing_radio, "a[@class='sharing']", :data_list
366
+ #
367
+ def self.list_radio(element_name, locator, list)
368
+ class_eval(%(def #{element_name};@#{element_name} ||= TestCentricity::CellRadio.new("#{element_name}", self, "#{locator}", :section, #{list});end))
369
+ end
370
+
334
371
  # Instantiate a single PageSection object within this PageSection object.
335
372
  #
336
373
  # @param section_name [Symbol] name of PageSection object (as a symbol)
@@ -349,8 +386,16 @@ module TestCentricity
349
386
  end
350
387
 
351
388
  def get_locator
352
- @locator.empty? && defined?(section_locator) ? locator = section_locator : locator = @locator
353
- (@context == :section && !@parent.nil? && !@parent.get_locator.nil?) ? "#{@parent.get_locator}|#{locator}" : locator
389
+ if @locator.empty? && defined?(section_locator)
390
+ locator = section_locator
391
+ else
392
+ locator = @locator
393
+ end
394
+ if @context == :section && !@parent.nil? && !@parent.get_locator.nil?
395
+ "#{@parent.get_locator}|#{locator}"
396
+ else
397
+ locator
398
+ end
354
399
  end
355
400
 
356
401
  def get_name
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '2.0.12'
2
+ VERSION = '2.0.13'
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: 2.0.12
4
+ version: 2.0.13
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-04-06 00:00:00.000000000 Z
11
+ date: 2017-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -218,6 +218,10 @@ files:
218
218
  - lib/testcentricity_web/elements/label.rb
219
219
  - lib/testcentricity_web/elements/link.rb
220
220
  - lib/testcentricity_web/elements/list.rb
221
+ - lib/testcentricity_web/elements/list_button.rb
222
+ - lib/testcentricity_web/elements/list_checkbox.rb
223
+ - lib/testcentricity_web/elements/list_element.rb
224
+ - lib/testcentricity_web/elements/list_radio.rb
221
225
  - lib/testcentricity_web/elements/radio.rb
222
226
  - lib/testcentricity_web/elements/select_list.rb
223
227
  - lib/testcentricity_web/elements/table.rb