mohawk 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Changelog CHANGED
@@ -1,3 +1,7 @@
1
+ === Version 0.0.7 / 2013-07-26
2
+ * Enhancements
3
+ * added support for tab controls
4
+
1
5
  === Version 0.0.6 / 2013-07-25
2
6
  * Enhancements
3
7
  * can find a table row based on a hash
@@ -0,0 +1,23 @@
1
+ Given(/^we are looking at the about screen$/) do
2
+ on(MainScreen).about
3
+ end
4
+
5
+ Then(/^we know that the currently selected tab is "([^"]*)"$/) do |expected_tab|
6
+ on(AboutScreen).tab.should eq(expected_tab)
7
+ end
8
+
9
+ Then(/^we know that the available tabs are "([^"]*)"$/) do |tabs|
10
+ on(AboutScreen).tab_items.should eq(tabs.split(', '))
11
+ end
12
+
13
+ When(/^we select the tab at index "([^"]*)"$/) do |tab_index|
14
+ on(AboutScreen).tab = tab_index.to_i
15
+ end
16
+
17
+ When(/^we select the tab with the text "([^"]*)"$/) do |which|
18
+ on(AboutScreen).tab = which
19
+ end
20
+
21
+ When(/^we select the tab with the regex "([^"]*)"$/) do |which_regex|
22
+ on(AboutScreen).tab = /#{which_regex}/
23
+ end
Binary file
@@ -3,5 +3,6 @@ class AboutScreen
3
3
  window(:title => /About/)
4
4
 
5
5
  button(:close, :value => "OK")
6
+ tabs(:tab, :id => 'tabControl1')
6
7
  end
7
8
 
@@ -0,0 +1,22 @@
1
+ Feature: Working with tab controls
2
+
3
+ Background:
4
+ Given we are looking at the about screen
5
+
6
+ Scenario: Getting the currently selected tab
7
+ Then we know that the currently selected tab is "Info"
8
+
9
+ Scenario: Getting the available tabs
10
+ Then we know that the available tabs are "Info, Other Info"
11
+
12
+ Scenario: Selecting tabs by index
13
+ When we select the tab at index "1"
14
+ Then we know that the currently selected tab is "Other Info"
15
+
16
+ Scenario: Selecting tabs by their values
17
+ When we select the tab with the text "Other Info"
18
+ Then we know that the currently selected tab is "Other Info"
19
+
20
+ Scenario: Selecting tabs by a regex
21
+ When we select the tab with the regex "[Oo]ther?\sInfo$"
22
+ Then we know that the currently selected tab is "Other Info"
@@ -0,0 +1,30 @@
1
+ module Mohawk
2
+ module Accessors
3
+ class Tabs
4
+ attr_reader :view
5
+
6
+ def initialize(adapter, locator)
7
+ @view = adapter.window.tab_control(locator)
8
+ end
9
+
10
+ def value
11
+ view.value
12
+ end
13
+
14
+ def selected_tab=(which)
15
+ case which
16
+ when String
17
+ view.set(which)
18
+ when Regexp
19
+ view.set items.find {|t| t.match which }
20
+ else
21
+ view.select(which)
22
+ end
23
+ end
24
+
25
+ def items
26
+ @view.items.map(&:text)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -291,6 +291,29 @@ module Mohawk
291
291
  end
292
292
  end
293
293
 
294
+ # Generates methods for working with tab controls
295
+ #
296
+ # @example
297
+ # tabs(:tab, :id => "tableId")
298
+ # # will generate 'tab', 'tab=' and 'tab_items' methods to get the current tab,
299
+ # # set the currently selected tab (Fixnum, String or RegEx) and to get the
300
+ # # available tabs to be selected
301
+ #
302
+ # @param [String] the name used for the generated methods
303
+ # @param [Hash] locator for how the tab control is found
304
+ #
305
+ def tabs(name, locator)
306
+ define_method(name) do
307
+ adapter.tab_control(locator).value
308
+ end
309
+ define_method("#{name}=") do |which|
310
+ adapter.tab_control(locator).selected_tab = which
311
+ end
312
+ define_method("#{name}_items") do
313
+ adapter.tab_control(locator).items
314
+ end
315
+ end
316
+
294
317
  def control(name, locator)
295
318
  define_method("#{name}_value") do
296
319
  adapter.value_control(locator).value
@@ -73,6 +73,10 @@ module Mohawk
73
73
  @controls[locator] ||= Mohawk::Accessors::Control.new(self, merge(locator))
74
74
  end
75
75
 
76
+ def tab_control(locator)
77
+ Mohawk::Accessors::Tabs.new(self, merge(locator))
78
+ end
79
+
76
80
  private
77
81
  def merge(locator)
78
82
  locator = locator.merge(:children_only => true) if @only_search_children
@@ -1,3 +1,3 @@
1
1
  module Mohawk
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/mohawk.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.add_dependency 'rautomation', '~> 0.9.3'
21
+ gem.add_dependency 'rautomation', '~> 0.10.0'
22
22
  gem.add_dependency 'require_all'
23
23
  gem.add_dependency 'page_navigation', '>= 0.7'
24
24
  gem.add_dependency 'childprocess', '~> 0.3.9'
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ class TabsScreen
4
+ include Mohawk
5
+ window(:id => 123)
6
+
7
+ tabs(:tab, :id => 'tabsId')
8
+ end
9
+
10
+ class TabItem
11
+ attr_reader :text, :index
12
+ def initialize(text, index)
13
+ @text, @index = text, index
14
+ end
15
+ end
16
+
17
+ describe Mohawk::Accessors::Tabs do
18
+ let(:window) { double('RAutomation Window') }
19
+ let(:tab_control) { double('RAutomation TabControl') }
20
+ subject { TabsScreen.new }
21
+
22
+ before(:each) do
23
+ RAutomation::Window.stub(:new).and_return(window)
24
+ window.should_receive(:tab_control).with(:id => 'tabsId').and_return(tab_control)
25
+ end
26
+
27
+ def tabs_are(*tabs)
28
+ expected = tabs.each_with_index.map {|t, i| TabItem.new(t, i) }
29
+ tab_control.should_receive(:items).and_return(expected)
30
+ end
31
+
32
+ it 'knows the currently selected tab' do
33
+ tab_control.should_receive(:value).and_return('Current Tab')
34
+
35
+ subject.tab.should eq('Current Tab')
36
+ end
37
+
38
+ it 'knows the available tabs' do
39
+ tabs_are('first', 'second')
40
+ subject.tab_items.should eq(['first', 'second'])
41
+ end
42
+
43
+ it 'can select tabs by index' do
44
+ tab_control.should_receive(:select).with(1)
45
+ subject.tab = 1
46
+ end
47
+
48
+ it 'can select tabs by value' do
49
+ tab_control.should_receive(:set).with('The Tab')
50
+ subject.tab = 'The Tab'
51
+ end
52
+
53
+ it 'can select tabs by regex' do
54
+ tabs_are('Something', 'With the Number 7')
55
+ tab_control.should_receive(:set).with('With the Number 7')
56
+ subject.tab = /\d+/
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mohawk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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-07-25 00:00:00.000000000 Z
12
+ date: 2013-07-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rautomation
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.9.3
21
+ version: 0.10.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.9.3
29
+ version: 0.10.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: require_all
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -257,6 +257,7 @@ files:
257
257
  - features/step_definitions/navigation_steps.rb
258
258
  - features/step_definitions/radio_steps.rb
259
259
  - features/step_definitions/table_steps.rb
260
+ - features/step_definitions/tabs_steps.rb
260
261
  - features/step_definitions/text_steps.rb
261
262
  - features/step_definitions/tree_view_steps.rb
262
263
  - features/support/FizzWare.NBuilder.dll
@@ -294,6 +295,7 @@ files:
294
295
  - features/support/screens/screen_with_container.rb
295
296
  - features/support/string.rb
296
297
  - features/table.feature
298
+ - features/tabs.feature
297
299
  - features/text.feature
298
300
  - features/tree_view.feature
299
301
  - lib/mohawk.rb
@@ -308,6 +310,7 @@ files:
308
310
  - lib/mohawk/accessors/radio.rb
309
311
  - lib/mohawk/accessors/table.rb
310
312
  - lib/mohawk/accessors/table_row.rb
313
+ - lib/mohawk/accessors/tabs.rb
311
314
  - lib/mohawk/accessors/text.rb
312
315
  - lib/mohawk/accessors/tree_view.rb
313
316
  - lib/mohawk/adapters/uia_adapter.rb
@@ -325,6 +328,7 @@ files:
325
328
  - spec/lib/mohawk/accessors/menu_spec.rb
326
329
  - spec/lib/mohawk/accessors/radio_spec.rb
327
330
  - spec/lib/mohawk/accessors/table_spec.rb
331
+ - spec/lib/mohawk/accessors/tabs_spec.rb
328
332
  - spec/lib/mohawk/accessors/text_spec.rb
329
333
  - spec/lib/mohawk/accessors/tree_view_spec.rb
330
334
  - spec/lib/mohawk/adapters/uia_adapter_spec.rb
@@ -379,6 +383,7 @@ test_files:
379
383
  - features/step_definitions/navigation_steps.rb
380
384
  - features/step_definitions/radio_steps.rb
381
385
  - features/step_definitions/table_steps.rb
386
+ - features/step_definitions/tabs_steps.rb
382
387
  - features/step_definitions/text_steps.rb
383
388
  - features/step_definitions/tree_view_steps.rb
384
389
  - features/support/FizzWare.NBuilder.dll
@@ -416,6 +421,7 @@ test_files:
416
421
  - features/support/screens/screen_with_container.rb
417
422
  - features/support/string.rb
418
423
  - features/table.feature
424
+ - features/tabs.feature
419
425
  - features/text.feature
420
426
  - features/tree_view.feature
421
427
  - spec/ffi_stub.rb
@@ -428,6 +434,7 @@ test_files:
428
434
  - spec/lib/mohawk/accessors/menu_spec.rb
429
435
  - spec/lib/mohawk/accessors/radio_spec.rb
430
436
  - spec/lib/mohawk/accessors/table_spec.rb
437
+ - spec/lib/mohawk/accessors/tabs_spec.rb
431
438
  - spec/lib/mohawk/accessors/text_spec.rb
432
439
  - spec/lib/mohawk/accessors/tree_view_spec.rb
433
440
  - spec/lib/mohawk/adapters/uia_adapter_spec.rb