test-factory 0.2.4 → 0.2.5

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.
data/README.md CHANGED
@@ -35,6 +35,13 @@ Using the TestFactory properly involves three distinct steps:
35
35
  level requires only basic skills with Ruby and Watir, but a strong command of your DSL
36
36
  (the thing you're building with TestFactory).
37
37
 
38
+ These three steps can all be accomplished by a single person. However, ideally, they should be done by three or four people, as the design philosophy of TestFactory allows for specialization:
39
+
40
+ - A Watir specialist works on defining page elements and actions inside of page classes
41
+ - A Ruby specialist uses the output of the Watir specialist to build the data objects and their helper methods, creating the DSL for the project
42
+ - A non-programmer--say, a business analyst or a manual tester with domain expertise--writes test scenarios, in English
43
+ - A more junior automation engineer translates the English into Ruby code, via the DSL created by the Ruby specialist (if you're using Cucumber, these would be your step definitions)
44
+
38
45
  How to Start
39
46
  ------------
40
47
 
@@ -120,7 +127,7 @@ class YourDataObject
120
127
  # Hash into YourDataObject's class instance variables
121
128
  set_options(defaults.merge(opts))
122
129
 
123
- requires @id # This line allows you to specify any class instance variables that must
130
+ requires :id # This line allows you to specify any class instance variables that must
124
131
  # be explicitly defined for the data object
125
132
  end
126
133
 
@@ -227,12 +234,12 @@ end
227
234
  ```
228
235
 
229
236
  * The setting of random values for select lists in a data object is determined by passing
230
- the symbol `:random` in the instance variable, or as the value in the key/value pair
237
+ the string '::random::' in the instance variable, or as the value in the key/value pair
231
238
  passed in an `#edit` method's `opts` parameter. The `#create` and `#edit` methods will
232
239
  handle the necessary logic. The purpose is to prevent the need for custom randomizing
233
240
  CRUD methods in the data object.
234
241
  * See the gem_ext.rb file's discussion of the Watir `#fit` method for additional
235
- design pattern rules to follow.
242
+ design pattern rules to follow (If you're reading this on rubydoc.info then click the Watir module link)
236
243
  * Please make an effort to follow the [Ruby Style Guidelines](http://www.caliban.org/ruby/rubyguide.shtml#style).
237
244
 
238
245
  Notice
@@ -79,6 +79,7 @@ class PageFactory
79
79
  # action(:select_style) { |stylename, b| b.div(:text=>/#{Regexp.escape(stylename)}/).link(:text=>"Select").click } => #select_style(stylename)
80
80
  #
81
81
  def action method_name, &block
82
+ raise "#{method_name} is being defined twice in #{self}!" if self.instance_methods.include?(method_name.to_sym)
82
83
  define_method method_name.to_s do |*thing|
83
84
  Proc.new(&block).call *thing, self
84
85
  end
@@ -98,7 +99,9 @@ class PageFactory
98
99
  #
99
100
  # The last parameter in the method is optional. Use it when
100
101
  # you need the method name to be different from the text of
101
- # the link--for example if the link text changes and you don't
102
+ # the link--for example if the link text is something unhelpful,
103
+ # like "here", or else the link text gets updated (e.g., what was
104
+ # "Log In" is now "Sign In", instead) and you don't
102
105
  # want to have to go through all your data objects and step
103
106
  # definitions to update them to the new method name.
104
107
  #
@@ -124,7 +127,8 @@ class PageFactory
124
127
  #
125
128
  # The last parameter in the method is optional. Use it when
126
129
  # you need the method name to be different from the text of
127
- # the button--for example if the button text changes and you don't
130
+ # the button--for example if the button text is unhelpful, like "Go", or else
131
+ # it changes (e.g., from "Update" to "Edit") and you don't
128
132
  # want to have to go through all your data objects and step
129
133
  # definitions to update them to the new method name.
130
134
  #
@@ -9,9 +9,7 @@ module StringFactory
9
9
  # @param s [String] Typically this will be left blank, but if included, any string created will be prepended with s. Note that the string length will still be as specified
10
10
  #
11
11
  def random_string(length=10, s="")
12
- length.enum_for(:times).inject(s) do |result, index|
13
- s << rand(93) + 33
14
- end
12
+ length.enum_for(:times).inject(s) { s << rand(93) + 33 }
15
13
  end
16
14
 
17
15
  # A random string creator that draws from all printable ASCII and High ASCII characters
@@ -20,9 +18,7 @@ module StringFactory
20
18
  # @param s [String] Typically this will be left blank, but if included, any string created will be prepended with s. Note that the string length will still be as specified
21
19
  #
22
20
  def random_high_ascii(length=10, s="")
23
- length.enum_for(:times).inject(s) do |result, index|
24
- s << rand(223) + 33
25
- end
21
+ length.enum_for(:times).inject(s) { s << rand(223) + 33 }
26
22
  end
27
23
 
28
24
  # A "friendlier" random string generator. No characters need to be escaped for valid URLs.
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.2.4'
3
+ s.version = '0.2.5'
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("**/**/**")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test-factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-19 00:00:00.000000000 Z
12
+ date: 2013-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver