mohawk 0.0.2 → 0.0.3

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.
Files changed (83) hide show
  1. data/.gitignore +24 -17
  2. data/.travis.yml +2 -0
  3. data/Changelog +36 -20
  4. data/Gemfile +3 -3
  5. data/Guardfile +16 -0
  6. data/LICENSE.txt +21 -21
  7. data/README.md +60 -56
  8. data/Rakefile +18 -18
  9. data/features/control.feature +5 -0
  10. data/features/label.feature +4 -4
  11. data/features/link.feature +9 -0
  12. data/features/mohawk.feature +4 -1
  13. data/features/navigation.feature +9 -0
  14. data/features/step_definitions/control_steps.rb +3 -0
  15. data/features/step_definitions/label_steps.rb +3 -3
  16. data/features/step_definitions/link_steps.rb +3 -0
  17. data/features/step_definitions/mohawk_steps.rb +4 -0
  18. data/features/step_definitions/navigation_steps.rb +15 -0
  19. data/features/step_definitions/table_steps.rb +19 -3
  20. data/features/step_definitions/tree_view_steps.rb +4 -0
  21. data/features/support/WindowsForms.exe +0 -0
  22. data/features/support/app/WindowsForms/WindowsForms/AboutBox.Designer.cs +80 -0
  23. data/features/support/app/WindowsForms/WindowsForms/AboutBox.cs +103 -0
  24. data/features/support/app/WindowsForms/WindowsForms/AboutBox.resx +120 -0
  25. data/features/support/app/WindowsForms/WindowsForms/AutomatableMonthCalendar.cs +59 -0
  26. data/features/support/app/WindowsForms/WindowsForms/AutomationHelpers/AutomationProvider.cs +91 -0
  27. data/features/support/app/WindowsForms/WindowsForms/DataEntryForm.Designer.cs +187 -0
  28. data/features/support/app/WindowsForms/WindowsForms/DataEntryForm.cs +46 -0
  29. data/features/support/app/WindowsForms/WindowsForms/DataEntryForm.resx +120 -0
  30. data/features/support/app/WindowsForms/WindowsForms/MainFormWindow.Designer.cs +526 -0
  31. data/features/support/app/WindowsForms/WindowsForms/MainFormWindow.cs +93 -0
  32. data/features/support/app/WindowsForms/WindowsForms/MainFormWindow.resx +123 -0
  33. data/features/support/app/WindowsForms/WindowsForms/PersonForm.Designer.cs +119 -0
  34. data/features/support/app/WindowsForms/WindowsForms/PersonForm.cs +34 -0
  35. data/features/support/app/WindowsForms/WindowsForms/PersonForm.resx +120 -0
  36. data/features/support/app/WindowsForms/WindowsForms/Program.cs +21 -0
  37. data/features/support/app/WindowsForms/WindowsForms/Properties/AssemblyInfo.cs +36 -0
  38. data/features/support/app/WindowsForms/WindowsForms/Properties/Resources.Designer.cs +71 -0
  39. data/features/support/app/WindowsForms/WindowsForms/Properties/Resources.resx +117 -0
  40. data/features/support/app/WindowsForms/WindowsForms/Properties/Settings.Designer.cs +30 -0
  41. data/features/support/app/WindowsForms/WindowsForms/Properties/Settings.settings +7 -0
  42. data/features/support/app/WindowsForms/WindowsForms/SimpleElementsForm.Designer.cs +93 -0
  43. data/features/support/app/WindowsForms/WindowsForms/SimpleElementsForm.cs +19 -0
  44. data/features/support/app/WindowsForms/WindowsForms/SimpleElementsForm.resx +120 -0
  45. data/features/support/app/WindowsForms/WindowsForms/WindowsForms.csproj +132 -0
  46. data/features/support/app/WindowsForms/WindowsForms.sln +30 -0
  47. data/features/support/env.rb +28 -17
  48. data/features/support/screens/about_screen.rb +7 -0
  49. data/features/support/screens/data_entry_form.rb +5 -0
  50. data/features/support/screens/main_screen.rb +3 -0
  51. data/features/table.feature +14 -0
  52. data/features/tree_view.feature +3 -0
  53. data/lib/mohawk/accessors/button.rb +6 -4
  54. data/lib/mohawk/accessors/checkbox.rb +7 -5
  55. data/lib/mohawk/accessors/combo.rb +7 -5
  56. data/lib/mohawk/accessors/control.rb +23 -0
  57. data/lib/mohawk/accessors/label.rb +15 -13
  58. data/lib/mohawk/accessors/link.rb +9 -0
  59. data/lib/mohawk/accessors/radio.rb +5 -3
  60. data/lib/mohawk/accessors/table.rb +12 -31
  61. data/lib/mohawk/accessors/table_row.rb +43 -0
  62. data/lib/mohawk/accessors/text.rb +7 -5
  63. data/lib/mohawk/accessors/tree_view.rb +9 -7
  64. data/lib/mohawk/accessors.rb +66 -7
  65. data/lib/mohawk/adapters/uia_adapter.rb +8 -0
  66. data/lib/mohawk/core_ext/string.rb +5 -0
  67. data/lib/mohawk/navigation.rb +6 -2
  68. data/lib/mohawk/version.rb +3 -3
  69. data/lib/mohawk.rb +76 -69
  70. data/mohawk.gemspec +32 -26
  71. data/spec/lib/mohawk/accessors/button_spec.rb +4 -0
  72. data/spec/lib/mohawk/accessors/checkbox_spec.rb +4 -1
  73. data/spec/lib/mohawk/accessors/combo_spec.rb +3 -0
  74. data/spec/lib/mohawk/accessors/control_spec.rb +38 -0
  75. data/spec/lib/mohawk/accessors/label_spec.rb +29 -25
  76. data/spec/lib/mohawk/accessors/link_spec.rb +34 -0
  77. data/spec/lib/mohawk/accessors/radio_spec.rb +4 -0
  78. data/spec/lib/mohawk/accessors/table_spec.rb +52 -7
  79. data/spec/lib/mohawk/accessors/text_spec.rb +4 -0
  80. data/spec/lib/mohawk/accessors/tree_view_spec.rb +5 -0
  81. data/spec/lib/mohawk_spec.rb +19 -0
  82. data/spec/lib/navigation_spec.rb +5 -0
  83. metadata +175 -6
@@ -1,13 +1,15 @@
1
- module Mohawk
2
- module Accessors
3
- class Label
4
- def initialize(adapter, locator)
5
- @label = adapter.window.label(locator)
6
- end
7
-
8
- def value
9
- @label.value
10
- end
11
- end
12
- end
13
- end
1
+ module Mohawk
2
+ module Accessors
3
+ class Label
4
+ attr_reader :view
5
+
6
+ def initialize(adapter, locator)
7
+ @view = adapter.window.label(locator)
8
+ end
9
+
10
+ def value
11
+ @view.value
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module Mohawk
2
+ module Accessors
3
+ class Link < Label
4
+ def click
5
+ @view.click
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,16 +1,18 @@
1
1
  module Mohawk
2
2
  module Accessors
3
3
  class Radio
4
+ attr_reader :view
5
+
4
6
  def initialize(adapter, locator)
5
- @radio = adapter.window.radio(locator)
7
+ @view = adapter.window.radio(locator)
6
8
  end
7
9
 
8
10
  def set
9
- @radio.set
11
+ @view.set
10
12
  end
11
13
 
12
14
  def set?
13
- @radio.set?
15
+ @view.set?
14
16
  end
15
17
  end
16
18
  end
@@ -1,49 +1,30 @@
1
1
  module Mohawk
2
2
  module Accessors
3
3
  class Table
4
- class Row
5
- attr_reader :row
4
+ attr_reader :view
6
5
 
7
- def initialize(table, row)
8
- @row = row
9
- @table = table
10
- end
11
-
12
- def selected?
13
- @table.selected? row.row
14
- end
15
-
16
- def cells
17
- row.cells.map &:text
18
- end
19
-
20
- def to_hash
21
- {:text => row.text, :row => row.row }
22
- end
23
- end
24
-
25
- attr_reader :table
6
+ include Enumerable
26
7
 
27
8
  def initialize(adapter, locator)
28
- @table = adapter.window.table(locator)
9
+ @view = adapter.window.table(locator)
29
10
  end
30
11
 
31
12
  def select(which_item)
32
- table.select which_item if which_item.is_a? Integer
13
+ view.select which_item
33
14
  end
34
15
 
35
- def rows
36
- table.rows.map do |row|
37
- Row.new(table, row).to_hash
38
- end
16
+ def headers
17
+ RAutomation::Adapter::MsUia::UiaDll.table_headers(view.search_information)
39
18
  end
40
19
 
41
- def row(which_row)
42
- Row.new table, table.row(:index => which_row)
20
+ def [](row)
21
+ TableRow.new(self, view.row(:index => row))
43
22
  end
44
23
 
45
- def view
46
- table
24
+ def each
25
+ view.rows.map do |row|
26
+ yield TableRow.new(self, row)
27
+ end
47
28
  end
48
29
  end
49
30
  end
@@ -0,0 +1,43 @@
1
+ module Mohawk
2
+ module Accessors
3
+ class TableRow
4
+ attr_reader :row
5
+
6
+ def initialize(table, row)
7
+ @row = row
8
+ @table = table
9
+ end
10
+
11
+ def selected?
12
+ @table.view.selected? row.row
13
+ end
14
+
15
+ def select
16
+ @table.view.select row.row
17
+ end
18
+
19
+ def cells
20
+ row.cells.map &:text
21
+ end
22
+
23
+ def value_from_header(name)
24
+ which_column = header_methods.index(name)
25
+ raise ArgumentError, "#{name} column does not exist in #{header_methods}" if which_column.nil?
26
+ cells[which_column]
27
+ end
28
+
29
+ def method_missing(name, *args)
30
+ value_from_header name
31
+ end
32
+
33
+ def to_hash
34
+ {:text => row.text, :row => row.row }
35
+ end
36
+
37
+ private
38
+ def header_methods
39
+ @headers ||= @table.headers.map(&:to_method)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,25 +1,27 @@
1
1
  module Mohawk
2
2
  module Accessors
3
3
  class Text
4
+ attr_reader :view
5
+
4
6
  def initialize(adapter, locator)
5
7
  @adapter = adapter
6
- @text = adapter.window.text_field(locator)
8
+ @view = adapter.window.text_field(locator)
7
9
  end
8
10
 
9
11
  def value
10
- @text.value
12
+ @view.value
11
13
  end
12
14
 
13
15
  def set(text)
14
- @text.set text
16
+ @view.set text
15
17
  end
16
18
 
17
19
  def clear
18
- @text.clear
20
+ @view.clear
19
21
  end
20
22
 
21
23
  def enter(text)
22
- text_window = @adapter.window.child(:hwnd => @text.hwnd)
24
+ text_window = @adapter.window.child(:hwnd => @view.hwnd)
23
25
  text_window.send_keys text.split(//)
24
26
  end
25
27
  end
@@ -1,29 +1,31 @@
1
1
  module Mohawk
2
2
  module Accessors
3
3
  class TreeView
4
+ attr_reader :view
5
+
4
6
  def initialize(adapter, locator)
5
- @tree = adapter.window.select_list(locator)
7
+ @view = adapter.window.select_list(locator)
6
8
  end
7
9
 
8
10
  def value
9
- @tree.value
11
+ @view.value
10
12
  end
11
13
 
12
14
  def items
13
- @tree.options.map &:text
15
+ @view.options.map &:text
14
16
  end
15
17
 
16
18
  def expand(which_item)
17
- @tree.expand which_item
19
+ @view.expand which_item
18
20
  end
19
21
 
20
22
  def collapse(which_item)
21
- @tree.collapse which_item
23
+ @view.collapse which_item
22
24
  end
23
25
 
24
26
  def select(which_item)
25
- @tree.select which_item if which_item.is_a? Integer
26
- @tree.set which_item if which_item.is_a? String
27
+ @view.select which_item if which_item.is_a? Integer
28
+ @view.set which_item if which_item.is_a? String
27
29
  end
28
30
  end
29
31
  end
@@ -40,6 +40,9 @@ module Mohawk
40
40
  define_method("enter_#{name}") do |text|
41
41
  adapter.text(locator).enter text
42
42
  end
43
+ define_method("#{name}_view") do
44
+ adapter.text(locator).view
45
+ end
43
46
  end
44
47
 
45
48
  #
@@ -60,6 +63,9 @@ module Mohawk
60
63
  define_method("#{name}_value") do
61
64
  adapter.button(locator).value
62
65
  end
66
+ define_method("#{name}_view") do
67
+ adapter.button(locator).view
68
+ end
63
69
  end
64
70
 
65
71
  #
@@ -88,6 +94,9 @@ module Mohawk
88
94
  define_method("#{name}_options") do
89
95
  adapter.combo(locator).options
90
96
  end
97
+ define_method("#{name}_view") do
98
+ adapter.combo(locator).view
99
+ end
91
100
  end
92
101
 
93
102
  #
@@ -111,6 +120,9 @@ module Mohawk
111
120
  define_method("#{name}_value") do
112
121
  adapter.checkbox(locator).value
113
122
  end
123
+ define_method("#{name}_view") do
124
+ adapter.checkbox(locator).view
125
+ end
114
126
  end
115
127
 
116
128
  #
@@ -131,6 +143,9 @@ module Mohawk
131
143
  define_method("#{name}?") do
132
144
  adapter.radio(locator).set?
133
145
  end
146
+ define_method("#{name}_view") do
147
+ adapter.radio(locator).view
148
+ end
134
149
  end
135
150
 
136
151
  #
@@ -147,6 +162,31 @@ module Mohawk
147
162
  define_method("#{name}") do
148
163
  adapter.label(locator).value
149
164
  end
165
+ define_method("#{name}_view") do
166
+ adapter.label(locator).view
167
+ end
168
+ end
169
+
170
+ #
171
+ # Generates methods to work with link controls
172
+ #
173
+ # @example
174
+ # link(:send_info_link, :id => 'sendInfoId')
175
+ # # will generate 'send_info_link_text' and 'click_send_info_link' methods
176
+ #
177
+ # @param [String] the name used for the generated methods
178
+ # @param [Hash] locator for how the label is found
179
+ #
180
+ def link(name, locator)
181
+ define_method("#{name}_text") do
182
+ adapter.link(locator).value
183
+ end
184
+ define_method("click_#{name}") do
185
+ adapter.link(locator).click
186
+ end
187
+ define_method("#{name}_view") do
188
+ adapter.link(locator).view
189
+ end
150
190
  end
151
191
 
152
192
  # Generates methods to work with menu items
@@ -168,8 +208,9 @@ module Mohawk
168
208
  #
169
209
  # @example
170
210
  # table(:some_table, :id => "tableId")
171
- # # will generate 'some_table=', 'some_table_rows' and 'some_table_row(item)' methods to
172
- # # select a table item, return all of the rows as well as return an individual row
211
+ # # will generate 'some_table', 'some_table=', 'some_table_headers'
212
+ # # and 'some_table_view' methods to get an Enumerable of table rows,
213
+ # # select a table item, return all of the headers and get the raw view
173
214
  #
174
215
  # @param [String] the name used for the generated methods
175
216
  # @param [Hash] locator for how the label is found
@@ -179,14 +220,14 @@ module Mohawk
179
220
  # * list_view
180
221
  #
181
222
  def table(name, locator)
223
+ define_method("#{name}") do
224
+ adapter.table(locator)
225
+ end
182
226
  define_method("#{name}=") do |which_item|
183
227
  adapter.table(locator).select which_item
184
228
  end
185
- define_method("#{name}_rows") do
186
- adapter.table(locator).rows
187
- end
188
- define_method("#{name}_row") do |which_row|
189
- adapter.table(locator).row which_row
229
+ define_method("#{name}_headers") do
230
+ adapter.table(locator).headers
190
231
  end
191
232
  define_method("#{name}_view") do
192
233
  adapter.table(locator).view
@@ -224,6 +265,24 @@ module Mohawk
224
265
  define_method("collapse_#{name}_item") do |which_item|
225
266
  adapter.tree_view(locator).collapse which_item
226
267
  end
268
+ define_method("#{name}_view") do
269
+ adapter.tree_view(locator).view
270
+ end
271
+ end
272
+
273
+ def control(name, locator)
274
+ define_method("#{name}_value") do
275
+ adapter.value_control(locator).value
276
+ end
277
+ define_method("#{name}=") do |value|
278
+ adapter.value_control(locator).set value
279
+ end
280
+ define_method("click_#{name}") do
281
+ adapter.value_control(locator).click
282
+ end
283
+ define_method("#{name}_view") do
284
+ adapter.value_control(locator).view
285
+ end
227
286
  end
228
287
 
229
288
  # combo_box aliases
@@ -31,6 +31,10 @@ module Mohawk
31
31
  Mohawk::Accessors::Label.new(self, locator)
32
32
  end
33
33
 
34
+ def link(locator)
35
+ Mohawk::Accessors::Link.new(self, locator)
36
+ end
37
+
34
38
  def menu_item(locator)
35
39
  Mohawk::Accessors::MenuItem.new(self, locator)
36
40
  end
@@ -42,6 +46,10 @@ module Mohawk
42
46
  def tree_view(locator)
43
47
  Mohawk::Accessors::TreeView.new(self, locator)
44
48
  end
49
+
50
+ def value_control(locator)
51
+ Mohawk::Accessors::Control.new(self, locator)
52
+ end
45
53
  end
46
54
  end
47
55
  end
@@ -0,0 +1,5 @@
1
+ class String
2
+ def to_method
3
+ self.gsub(/\W+/, "_").downcase.to_sym
4
+ end
5
+ end
@@ -1,7 +1,11 @@
1
+ require 'page_navigation'
2
+
1
3
  module Mohawk
2
4
  module Navigation
3
- def on(cls, &block)
4
- screen = cls.new
5
+ include PageNavigation
6
+
7
+ def on(cls, extra={}, &block)
8
+ screen = cls.new extra
5
9
  screen.wait_until_present
6
10
  block.call screen if block
7
11
  screen
@@ -1,3 +1,3 @@
1
- module Mohawk
2
- VERSION = "0.0.2"
3
- end
1
+ module Mohawk
2
+ VERSION = "0.0.3"
3
+ end
data/lib/mohawk.rb CHANGED
@@ -1,69 +1,76 @@
1
- require "rautomation"
2
- require "mohawk/version"
3
- require "mohawk/accessors"
4
- require "mohawk/accessors/button"
5
- require "mohawk/accessors/checkbox"
6
- require "mohawk/accessors/combo"
7
- require "mohawk/accessors/label"
8
- require "mohawk/accessors/menu_item"
9
- require "mohawk/accessors/radio"
10
- require "mohawk/accessors/table"
11
- require "mohawk/accessors/text"
12
- require "mohawk/accessors/tree_view"
13
- require "mohawk/navigation"
14
- require "mohawk/adapters/uia_adapter"
15
-
16
- module Mohawk
17
-
18
- attr_reader :adapter
19
-
20
- def self.included(cls)
21
- cls.extend Mohawk::Accessors
22
- end
23
-
24
- def initialize
25
- @adapter = Mohawk::Adapters::UiaAdapter.new(which_window)
26
- end
27
-
28
- #
29
- # Returns whether or not the window exists
30
- #
31
- def exist?
32
- adapter.window.exist?
33
- end
34
-
35
- #
36
- # Returns whether or not the window is active
37
- #
38
- def active?
39
- adapter.window.active?
40
- end
41
-
42
- #
43
- # Returns whether or not the window is present
44
- #
45
- def present?
46
- adapter.window.present?
47
- end
48
-
49
- #
50
- # Waits until the window is present
51
- #
52
- def wait_until_present
53
- adapter.window.wait_until_present
54
- end
55
-
56
- #
57
- # Waits until the block returns true
58
- #
59
- def wait_until(timeout=RAutomation::Window.wait_timeout, &block)
60
- RAutomation::WaitHelper.wait_until timeout, &block
61
- end
62
-
63
- #
64
- # Indicates if the window has text or not
65
- #
66
- def has_text?(text_to_find)
67
- adapter.window.text.include? text_to_find
68
- end
69
- end
1
+ require "rautomation"
2
+ require "mohawk/version"
3
+ require "require_all"
4
+ require "mohawk/accessors"
5
+ require "mohawk/navigation"
6
+ require "mohawk/adapters/uia_adapter"
7
+ require "mohawk/core_ext/string"
8
+
9
+ require_rel "mohawk/accessors"
10
+
11
+ module Mohawk
12
+
13
+ attr_reader :adapter
14
+
15
+ def self.included(cls)
16
+ cls.extend Mohawk::Accessors
17
+ end
18
+
19
+ def initialize(extra={})
20
+ @adapter = Mohawk::Adapters::UiaAdapter.new(which_window.merge(extra))
21
+ end
22
+
23
+ #
24
+ # Returns whether or not the window exists
25
+ #
26
+ def exist?
27
+ adapter.window.exist?
28
+ end
29
+
30
+ #
31
+ # Returns whether or not the window is active
32
+ #
33
+ def active?
34
+ adapter.window.active?
35
+ end
36
+
37
+ #
38
+ # Returns whether or not the window is present
39
+ #
40
+ def present?
41
+ adapter.window.present?
42
+ end
43
+
44
+ #
45
+ # Waits until the window is present
46
+ #
47
+ def wait_until_present
48
+ adapter.window.wait_until_present
49
+ end
50
+
51
+ #
52
+ # Waits until a control exists
53
+ #
54
+ def wait_for_control(locator)
55
+ control = adapter.window.control(locator)
56
+ begin
57
+ RAutomation::WaitHelper.wait_until { control.exist? }
58
+ rescue
59
+ raise "A control with #{locator} was not found"
60
+ end
61
+ end
62
+
63
+ #
64
+ # Waits until the block returns true
65
+ #
66
+ def wait_until(timeout=RAutomation::Window.wait_timeout, &block)
67
+ RAutomation::WaitHelper.wait_until timeout, &block
68
+ end
69
+
70
+ #
71
+ # Indicates if the window has text or not
72
+ #
73
+ def has_text?(text_to_find)
74
+ adapter.window.text.include? text_to_find
75
+ end
76
+ end
data/mohawk.gemspec CHANGED
@@ -1,26 +1,32 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'mohawk/version'
5
-
6
- Gem::Specification.new do |gem|
7
- gem.name = "mohawk"
8
- gem.version = Mohawk::VERSION
9
- gem.authors = ["Levi Wilson"]
10
- gem.email = ["levi@leviwilson.com"]
11
- gem.description = %q{High level wrapper around windows applications}
12
- gem.summary = %q{High level wrapper around windows applications}
13
- gem.homepage = "http://github.com/leviwilson/mohawk"
14
-
15
- gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
- gem.require_paths = ["lib"]
19
-
20
- gem.add_dependency 'rautomation', '>= 0.8.0'
21
-
22
- gem.add_development_dependency 'cucumber'
23
- gem.add_development_dependency 'rspec'
24
- gem.add_development_dependency 'rake'
25
- gem.add_development_dependency 'childprocess'
26
- end
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mohawk/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "mohawk"
8
+ gem.version = Mohawk::VERSION
9
+ gem.authors = ["Levi Wilson"]
10
+ gem.email = ["levi@leviwilson.com"]
11
+ gem.description = %q{High level wrapper around windows applications}
12
+ gem.summary = %q{High level wrapper around windows applications}
13
+ gem.homepage = "http://github.com/leviwilson/mohawk"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'rautomation', '>= 0.9.1'
21
+ gem.add_dependency 'require_all'
22
+ gem.add_dependency 'page_navigation', '>= 0.7'
23
+
24
+ gem.add_development_dependency 'cucumber'
25
+ gem.add_development_dependency 'rspec', '>= 2.12.0'
26
+ gem.add_development_dependency 'rake'
27
+ gem.add_development_dependency 'childprocess'
28
+ gem.add_development_dependency 'rb-fsevent', '~> 0.9.1'
29
+ gem.add_development_dependency 'guard'
30
+ gem.add_development_dependency 'guard-rspec'
31
+ gem.add_development_dependency 'terminal-notifier-guard'
32
+ end
@@ -37,5 +37,9 @@ describe Mohawk::Accessors::Button do
37
37
  button_field.should_receive(:value).and_return "Button Value"
38
38
  screen.easy_value.should eq("Button Value")
39
39
  end
40
+
41
+ it "can dish out the view" do
42
+ screen.easy_view.should be(button_field)
43
+ end
40
44
  end
41
45
  end
@@ -38,6 +38,9 @@ describe Mohawk::Accessors::CheckBox do
38
38
  checkbox_field.should_receive(:clear)
39
39
  screen.check_yourself = false
40
40
  end
41
-
41
+
42
+ it "can dish out the raw control" do
43
+ screen.check_yourself_view.should be(checkbox_field)
44
+ end
42
45
  end
43
46
  end
@@ -58,6 +58,9 @@ describe Mohawk::Accessors::Combo do
58
58
  screen.nacho_combos_options.should eq(["first", "second", "third"])
59
59
  end
60
60
 
61
+ it "can dish out the combo view" do
62
+ screen.nacho_combos_view.should be(combo_box_field)
63
+ end
61
64
  end
62
65
 
63
66
  context "aliases for combo_box" do