mohawk 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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