test-factory 0.3.92 → 0.4.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTQ5Y2M4NTU0NzFjOTBlZTVmMzA0YWMxZmU0ZTI1MDc0OGQzNTAxZg==
4
+ ODQ2MDNiODE1ZWVlMTEyNDBiNWYxMzUyOGU5ZjczNjM5MGNjNjExYQ==
5
5
  data.tar.gz: !binary |-
6
- YmU5NDk1ZWQ0MjFjYWIxYTVkYWU2MDY2ZmE1NzRmNDc2Mzk4MDE3OA==
6
+ ZTc3YmZiMzBiY2E4ZDFiZmI0N2I4MjFjMTE5MDNkY2I3NTk2NzI0Mw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MGI2OGMzMmQ0NDY5YTE4ZmFiM2VhMzU3NmNlMjBhYWQ5Y2M4NGY3MTNjNzQz
10
- ZmE4NjQ2MTM2ZWE1MDk4NWU5OTRjNGU2MTUwMjQ4MGQ0YTFmYzEyZTg4ZmEy
11
- MjE2Mjg1OTk0ZmY0ODVlZGY0ZWI4YzQxNmVlY2QwYzA0NjM0ZDQ=
9
+ Y2M2NTBiNjYyM2U2ZTdkMWNlYTdjNDBlYjM3ODVmMjNiMTA2NWNlODQ3MzFi
10
+ NGFmNGE1Y2ZiNDI0ZjA1OGNjMzFiMjBkMmQxNWUxNTRlOTBmNDAwZDJmN2I4
11
+ YzJiYmU5ZjZiOTdjYTE2MDEwZTUwOTFlNmE3OTM5YzI4YzBiMjE=
12
12
  data.tar.gz: !binary |-
13
- ZGMwOWIwOGJjZmRhODk3ZmY4Njk1MGVkZjk0MTY2MTgzNzMxODYwMjI3OTU4
14
- MTEyZjJhNTU3ZmVmODRlZDUwMjkzNmQ0MWU1MWI0YTYwNzZmMTI3NGFmOTM1
15
- NDNhOGZmZGI4MjE1YWZiODBhMGNmZTllMjgyZjM1OTliYjA0Yzc=
13
+ OTBkZjAzN2I5ZDQwOWQ2ZDQ5ZDM2ZDkwMGExYmZkM2ViMGZhOWJhMDA1MmU1
14
+ NDc1NGFlNzZlNTMwMDc1OWJhYmVlYTIxYTllOWM1M2IwM2MzMGFlYjdjN2Uw
15
+ NDM0Mjc1NzcyMWNlNmIxMDQ0ZWIxMDU5ZDRjYjkxMDBiY2ZkOWE=
@@ -53,6 +53,5 @@ class CollectionsFactory < Array
53
53
 
54
54
  end
55
55
 
56
- class CollectionFactory < CollectionsFactory
57
- # Just an alias class name.
58
- end
56
+ # Just an alias class name.
57
+ class CollectionFactory < CollectionsFactory; end
@@ -107,7 +107,6 @@ module Enumerable
107
107
 
108
108
  end # Enumerable
109
109
 
110
-
111
110
  class Numeric
112
111
 
113
112
  # Converts a number object to a string containing commas every 3rd digit. Adds
@@ -120,4 +119,15 @@ class Numeric
120
119
  int.reverse + dec
121
120
  end
122
121
 
123
- end # Numeric
122
+ end # Numeric
123
+
124
+ class String
125
+
126
+ # Used to remove commas from long number strings,
127
+ # then converting the result to a Float so that it
128
+ # can be used in calculations.
129
+ def groom
130
+ self.gsub(',','').to_f
131
+ end
132
+
133
+ end # String
@@ -100,7 +100,8 @@ module DataFactory
100
100
  # 3) Since the listed fields get filled out in random order, be sure that
101
101
  # this is okay in the context of your page--in other words, if field A
102
102
  # needs to be specified before field B then having them both in your
103
- # fill_out step would be inappropriate.
103
+ # fill_out step would be inappropriate. If you need a specific order,
104
+ # use #ordered_fill instead.
104
105
  #
105
106
  # 4) This method supports text fields, select lists, check boxes, and
106
107
  # radio buttons, but only if their element definitions don't take a
@@ -113,7 +114,19 @@ module DataFactory
113
114
  # end
114
115
  #
115
116
  def fill_out(page, *fields)
116
- fill_out_item(nil, page, *fields)
117
+ f_o_i true, nil, page, *fields
118
+ end
119
+
120
+ # Use when you need to specify the order that the fields should be
121
+ # updated.
122
+ #
123
+ # @example
124
+ # on PageClass do |page|
125
+ # ordered_fill page, :text_field_name, :radio_name, :select_list_name, :checkbox_name
126
+ # end
127
+ #
128
+ def ordered_fill(page, *fields)
129
+ f_o_i false, nil, page, *fields
117
130
  end
118
131
 
119
132
  # Same as #fill_out, but used with methods that take a
@@ -125,11 +138,20 @@ module DataFactory
125
138
  # end
126
139
  #
127
140
  def fill_out_item(name, page, *fields)
128
- fields.shuffle.each do |field|
129
- lmnt = page.send(*[field, name].compact)
130
- var = instance_variable_get "@#{field}"
131
- lmnt.class.to_s == 'Watir::Select' ? lmnt.pick!(var) : lmnt.fit(var)
132
- end
141
+ f_o_i true, name, page, *fields
142
+ end
143
+
144
+ # Use instead of #fill_out_item when you need to
145
+ # specify the order that the fields should be
146
+ # updated.
147
+ #
148
+ # @example
149
+ # on PageClass do |page|
150
+ # ordered_item_fill 'Joe Schmoe', page, :text_field_name, :radio_name, :select_list_name, :checkbox_name
151
+ # end
152
+ #
153
+ def ordered_item_fill(name, page, *fields)
154
+ f_o_i false, name, page, *fields
133
155
  end
134
156
 
135
157
  # This is a specialized method for use with any select list boxes
@@ -203,4 +225,19 @@ module DataFactory
203
225
  end
204
226
  end
205
227
 
228
+ # =======
229
+ private
230
+ # =======
231
+
232
+ # Do not use this method directly.
233
+ #
234
+ def f_o_i(shuffle, name, page, *fields)
235
+ shuffle ? fields.shuffle! : fields
236
+ fields.each do |field|
237
+ lmnt = page.send(*[field, name].compact)
238
+ var = instance_variable_get "@#{field}"
239
+ lmnt.class.to_s == 'Watir::Select' ? lmnt.pick!(var) : lmnt.fit(var)
240
+ end
241
+ end
242
+
206
243
  end
@@ -32,9 +32,9 @@ module Foundry
32
32
  # @param &block [C] this is the block of code that you want to run while on the given page
33
33
  #
34
34
  def on page_class, visit=false, &block
35
- current_page = page_class.new @browser, visit
36
- block.call current_page if block
37
- current_page
35
+ $current_page = page_class.new @browser, visit
36
+ block.call $current_page if block
37
+ $current_page
38
38
  end
39
39
  alias_method :on_page, :on
40
40
 
@@ -69,35 +69,29 @@ class PageFactory
69
69
  end
70
70
  end
71
71
 
72
- # The basic building block of the page object classes.
73
- # Use in conjunction with Watir to define all elements on a given page that are important to validate.
74
- # @param element_name [Symbol] The name you're giving to the element on the page.
72
+ # The basic building block for defining and interacting with
73
+ # elements on a web page. # Use in conjunction with
74
+ # Watir to define all elements on a given page that are important to validate.
75
75
  #
76
- # @example
77
- # element(:title) { |b| b.text_field(:id=>"title-id") }
78
- # value(:page_header) { |b| b.h3(:class=>"page_header").text }
79
- #
80
- def element element_name
81
- raise "#{element_name} is being defined twice in #{self}!" if self.instance_methods.include?(element_name.to_sym)
82
- define_method element_name.to_s do
83
- yield self
84
- end
85
- end
86
- alias :value :element
87
-
88
- # The basic building block for interacting with elements on a page, such as links and buttons.
89
76
  # Methods that take one or more parameters can be built with this as well.
90
77
  #
91
78
  # @example
79
+ # element(:title) { |b| b.text_field(:id=>"title-id") }
80
+ # value(:page_header) { |b| b.h3(:class=>"page_header").text }
92
81
  # action(:continue) { |b| b.frm.button(:value=>"Continue").click } => Creates a #continue method that clicks the Continue button
93
- # action(:select_style) { |stylename, b| b.div(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click } => #select_style(stylename)
82
+ # p_element(:select_style) { |stylename, b| b.div(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click } => #select_style(stylename)
94
83
  #
95
- def action method_name, &block
96
- raise "#{method_name} is being defined twice in #{self}!" if self.instance_methods.include?(method_name.to_sym)
97
- define_method method_name.to_s do |*thing|
84
+ def element name, &block
85
+ raise "#{name} is being defined twice in #{self}!" if self.instance_methods.include?(name.to_sym)
86
+ define_method name.to_s do |*thing|
98
87
  Proc.new(&block).call *thing, self
99
88
  end
100
89
  end
90
+ alias_method :action, :element
91
+ alias_method :value, :element
92
+ alias_method :p_element, :element
93
+ alias_method :p_action, :element
94
+ alias_method :p_value, :element
101
95
 
102
96
  # Use this for links that are safe to define by their text string.
103
97
  # This method will return two methods for interacting with the link:
data/test-factory.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'test-factory'
3
- s.version = '0.3.92'
3
+ s.version = '0.4.0'
4
4
  s.summary = %q{rSmart's framework for creating automated testing scripts}
5
5
  s.description = %q{This gem provides a set of modules and methods to help quickly and DRYly create a test automation framework using Ruby and Watir (or watir-webdriver).}
6
6
  s.files = Dir.glob("**/**/**")
@@ -8,6 +8,6 @@ spec = Gem::Specification.new do |s|
8
8
  s.authors = ["Abraham Heward"]
9
9
  s.email = %w{"aheward@rsmart.com"}
10
10
  s.homepage = 'https://github.com/rSmart'
11
- s.add_dependency 'watir-webdriver', '>= 0.6.2'
11
+ s.add_dependency 'watir-webdriver', '>= 0.6.4'
12
12
  s.required_ruby_version = '>= 1.9.2'
13
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.92
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abraham Heward
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-27 00:00:00.000000000 Z
11
+ date: 2013-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir-webdriver
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.2
19
+ version: 0.6.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.6.2
26
+ version: 0.6.4
27
27
  description: This gem provides a set of modules and methods to help quickly and DRYly
28
28
  create a test automation framework using Ruby and Watir (or watir-webdriver).
29
29
  email: