gametel 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,3 +23,25 @@ Feature: Interacting with progress bars
23
23
  Scenario: Getting the progress max by index
24
24
  When I am looking at the progress of a seek bar
25
25
  Then the retrieved progress max indicated by "index" should be "100"
26
+
27
+ Scenario: Getting the progress bar's view by id
28
+ When I am looking at the progress of a seek bar
29
+ Then the progress bar indicated by "id" can determine the following properties:
30
+ | property | value |
31
+ | clickable | false |
32
+ | enabled | true |
33
+ | focusable | true |
34
+ | focused | false |
35
+ | selected | false |
36
+ | shown | true |
37
+
38
+ Scenario: Getting the progress bar's view by index
39
+ When I am looking at the progress of a seek bar
40
+ Then the progress bar indicated by "index" can determine the following properties:
41
+ | property | value |
42
+ | clickable | false |
43
+ | enabled | true |
44
+ | focusable | true |
45
+ | focused | false |
46
+ | selected | false |
47
+ | shown | true |
@@ -18,3 +18,24 @@ Feature: Working with Spinners
18
18
  And I select item number "3" from the spinner using "index"
19
19
  Then I can see the spinner value referenced by "index" is "Mars"
20
20
 
21
+ Scenario: Getting the Spinner's view by id
22
+ When I'm on the controls screen
23
+ Then the spinner indicated by "id" can determine the following properties:
24
+ | property | value |
25
+ | clickable | true |
26
+ | enabled | true |
27
+ | focusable | true |
28
+ | focused | false |
29
+ | selected | false |
30
+ | shown | true |
31
+
32
+ Scenario: Getting the Spinner's view by index
33
+ When I'm on the controls screen
34
+ Then the spinner indicated by "index" can determine the following properties:
35
+ | property | value |
36
+ | clickable | true |
37
+ | enabled | true |
38
+ | focusable | true |
39
+ | focused | false |
40
+ | selected | false |
41
+ | shown | true |
@@ -32,3 +32,13 @@ Then /^the retrieved progress max indicated by "(.*?)" should be "(.*?)"$/ do |h
32
32
  screen.send("progress_#{how}_max").should eq(value.to_i)
33
33
  end
34
34
  end
35
+
36
+ Then /^the progress bar indicated by "(.*?)" can determine the following properties:$/ do |how, properties|
37
+ on(SeekBarScreen) do |screen|
38
+ view = screen.send("progress_#{how}_view")
39
+ properties.hashes.each do |property|
40
+ result = view.send("#{property["property"]}?")
41
+ result.to_s.should eq(property["value"]), "for field #{property["property"]}"
42
+ end
43
+ end
44
+ end
@@ -8,3 +8,12 @@ When /^I select item number "(.*?)" from the spinner using "(.*?)"$/ do |num, ho
8
8
  on(ControlsScreen).send "select_spinner_#{how}", num.to_i
9
9
  end
10
10
 
11
+ Then /^the spinner indicated by "(.*?)" can determine the following properties:$/ do |how, properties|
12
+ on(ControlsScreen) do |screen|
13
+ view = screen.send("spinner_#{how}_view")
14
+ properties.hashes.each do |property|
15
+ result = view.send("#{property["property"]}?")
16
+ result.to_s.should eq(property["value"]), "for field #{property["property"]}"
17
+ end
18
+ end
19
+ end
@@ -2,8 +2,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../', 'lib'))
2
2
 
3
3
  require 'rspec/expectations'
4
4
  require 'require_all'
5
- require 'brazenhead'
6
- require 'brazenhead/server'
7
5
  require 'gametel'
8
6
 
9
7
  World(Gametel::Navigation)
@@ -139,6 +139,7 @@ module Gametel
139
139
  # @param [Hash] locator indicating an id for how the view is found.
140
140
  # The only valid keys are:
141
141
  # * :id
142
+ # * :text
142
143
  #
143
144
  def view(name, locator)
144
145
  define_method(name) do
@@ -160,6 +161,7 @@ module Gametel
160
161
  # @param [Hash] locator indicating an id for how the progress bar is found.
161
162
  # The only valid keys are:
162
163
  # * :id
164
+ # * :index
163
165
  #
164
166
  def progress(name, locator)
165
167
  define_method("#{name}") do
@@ -177,6 +179,9 @@ module Gametel
177
179
  define_method("#{name}_secondary=") do |value|
178
180
  platform.set_secondary_progress(locator, value)
179
181
  end
182
+ define_method("#{name}_view") do
183
+ Gametel::Views::Progress.new(platform, locator)
184
+ end
180
185
  end
181
186
 
182
187
  #
@@ -189,6 +194,7 @@ module Gametel
189
194
  # @param [Hash] locator indicating an id for how the spinner is found.
190
195
  # The only valid keys are:
191
196
  # * :id
197
+ # * :index
192
198
  #
193
199
  def spinner(name, locator)
194
200
  define_method(name) do
@@ -197,6 +203,9 @@ module Gametel
197
203
  define_method("select_#{name}") do |value|
198
204
  platform.select_spinner_value(locator, value)
199
205
  end
206
+ define_method("#{name}_view") do
207
+ Gametel::Views::Spinner.new(platform, locator)
208
+ end
200
209
  end
201
210
  end
202
211
  end
@@ -1,3 +1,3 @@
1
1
  module Gametel
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
@@ -0,0 +1,30 @@
1
+ module Gametel
2
+ module Views
3
+ class Progress < View
4
+
5
+ PROGRESS_BAR_CLASS = 'android.widget.ProgressBar'
6
+
7
+ protected
8
+
9
+ def build_property_methods
10
+ metaclass = class << self; self; end
11
+ properties.each do |property|
12
+ metaclass.send(:define_method, "#{property}?".to_sym) do
13
+
14
+ platform.get_view_by_id(locator[:id]) do |device|
15
+ device.send "is_#{property}"
16
+ end if locator[:id]
17
+
18
+ platform.get_view_by_index(PROGRESS_BAR_CLASS, locator[:index]) do |device|
19
+ device.send "is_#{property}"
20
+ end if locator[:index]
21
+
22
+ platform.last_response.body == "true"
23
+ end
24
+ end
25
+ end
26
+
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Gametel
2
+ module Views
3
+ class Spinner < View
4
+
5
+ SPINNER_CLASS = 'android.widget.Spinner'
6
+
7
+ protected
8
+
9
+ def build_property_methods
10
+ metaclass = class << self; self; end
11
+ properties.each do |property|
12
+ metaclass.send(:define_method, "#{property}?".to_sym) do
13
+
14
+ platform.get_view_by_id(locator[:id]) do |device|
15
+ device.send "is_#{property}"
16
+ end if locator[:id]
17
+
18
+ platform.get_view_by_index(SPINNER_CLASS, locator[:index]) do |device|
19
+ device.send "is_#{property}"
20
+ end if locator[:index]
21
+
22
+ platform.last_response.body == "true"
23
+ end
24
+ end
25
+ end
26
+
27
+
28
+ end
29
+ end
30
+ end
data/lib/gametel/views.rb CHANGED
@@ -3,3 +3,5 @@ require 'gametel/views/button'
3
3
  require 'gametel/views/text'
4
4
  require 'gametel/views/radio_button'
5
5
  require 'gametel/views/checkbox'
6
+ require 'gametel/views/progress'
7
+ require 'gametel/views/spinner'
@@ -92,7 +92,7 @@ describe Gametel::Accessors do
92
92
  accumulator.should_receive(:get_view)
93
93
  accumulator.should_receive(:get_text)
94
94
  accumulator.should_receive(:to_string)
95
- result.should_receive(:body).and_return("the value")
95
+ device.should_receive(:last_json).and_return('the value')
96
96
  screen.first_name_id.should eq('the value')
97
97
  end
98
98
 
@@ -100,7 +100,7 @@ describe Gametel::Accessors do
100
100
  accumulator.should_receive(:id_from_name)
101
101
  accumulator.should_receive(:get_view)
102
102
  accumulator.should_receive(:get_hint)
103
- result.should_receive(:body).and_return("the hint")
103
+ device.should_receive(:last_json).and_return('the hint')
104
104
  view = screen.first_name_id_view
105
105
  view.hint.should eq('the hint')
106
106
  end
@@ -109,7 +109,7 @@ describe Gametel::Accessors do
109
109
  accumulator.should_receive(:id_from_name)
110
110
  accumulator.should_receive(:get_view)
111
111
  accumulator.should_receive(:get_content_description)
112
- result.should_receive(:body).and_return("the content description")
112
+ device.should_receive(:last_json).and_return('the content description')
113
113
  view = screen.first_name_id_view
114
114
  view.description.should eq('the content description')
115
115
  end
@@ -508,7 +508,7 @@ describe Gametel::Accessors do
508
508
  accumulator.should_receive(:get_view)
509
509
  accumulator.should_receive(:get_selected_item)
510
510
  accumulator.should_receive(:to_string)
511
- result.should_receive(:body).and_return('the text value')
511
+ device.should_receive(:last_json).and_return('the text value')
512
512
  screen.spinner_id.should eq('the text value')
513
513
  end
514
514
 
@@ -526,7 +526,7 @@ describe Gametel::Accessors do
526
526
  accumulator.should_receive(:get_view).with('@@the_type@@', 1, anything)
527
527
  accumulator.should_receive(:get_selected_item)
528
528
  accumulator.should_receive(:to_string)
529
- result.should_receive(:body).and_return('the text value')
529
+ device.should_receive(:last_json).and_return('the text value')
530
530
  screen.spinner_index.should eq('the text value')
531
531
  end
532
532
 
@@ -535,6 +535,63 @@ describe Gametel::Accessors do
535
535
  screen.select_spinner_index 4
536
536
  end
537
537
  end
538
+
539
+ context "when looking at properties" do
540
+
541
+ it "should know if they are enabled" do
542
+ accumulator.should_receive(:id_from_name)
543
+ accumulator.should_receive(:get_view)
544
+ accumulator.should_receive(:is_enabled)
545
+ result.should_receive(:body).and_return("false")
546
+ view = screen.spinner_id_view
547
+ view.should_not be_enabled
548
+ end
549
+
550
+ it "should know if they are clickable" do
551
+ accumulator.should_receive(:id_from_name)
552
+ accumulator.should_receive(:get_view)
553
+ accumulator.should_receive(:is_clickable)
554
+ result.should_receive(:body).and_return("true")
555
+ view = screen.spinner_id_view
556
+ view.should be_clickable
557
+ end
558
+
559
+ it "should know if they are focusable" do
560
+ accumulator.should_receive(:id_from_name)
561
+ accumulator.should_receive(:get_view)
562
+ accumulator.should_receive(:is_focusable)
563
+ result.should_receive(:body).and_return("true")
564
+ view = screen.spinner_id_view
565
+ view.should be_focusable
566
+ end
567
+
568
+ it "should know if they are focused" do
569
+ accumulator.should_receive(:id_from_name)
570
+ accumulator.should_receive(:get_view)
571
+ accumulator.should_receive(:is_focused)
572
+ result.should_receive(:body).and_return("true")
573
+ view = screen.spinner_id_view
574
+ view.should be_focused
575
+ end
576
+
577
+ it "should know if they are selected" do
578
+ accumulator.should_receive(:id_from_name)
579
+ accumulator.should_receive(:get_view)
580
+ accumulator.should_receive(:is_selected)
581
+ result.should_receive(:body).and_return("true")
582
+ view = screen.spinner_id_view
583
+ view.should be_selected
584
+ end
585
+
586
+ it "should know if they are shown" do
587
+ accumulator.should_receive(:id_from_name)
588
+ accumulator.should_receive(:get_view)
589
+ accumulator.should_receive(:is_shown)
590
+ result.should_receive(:body).and_return("true")
591
+ view = screen.spinner_id_view
592
+ view.should be_shown
593
+ end
594
+ end
538
595
  end
539
596
 
540
597
  context "progress bars" do
@@ -623,6 +680,63 @@ describe Gametel::Accessors do
623
680
  screen.progress_index_max.should eq(100)
624
681
  end
625
682
  end
683
+
684
+ context "when looking at properties" do
685
+
686
+ it "should know if they are enabled" do
687
+ accumulator.should_receive(:id_from_name)
688
+ accumulator.should_receive(:get_view)
689
+ accumulator.should_receive(:is_enabled)
690
+ result.should_receive(:body).and_return("false")
691
+ view = screen.progress_id_view
692
+ view.should_not be_enabled
693
+ end
694
+
695
+ it "should know if they are clickable" do
696
+ accumulator.should_receive(:id_from_name)
697
+ accumulator.should_receive(:get_view)
698
+ accumulator.should_receive(:is_clickable)
699
+ result.should_receive(:body).and_return("true")
700
+ view = screen.progress_id_view
701
+ view.should be_clickable
702
+ end
703
+
704
+ it "should know if they are focusable" do
705
+ accumulator.should_receive(:id_from_name)
706
+ accumulator.should_receive(:get_view)
707
+ accumulator.should_receive(:is_focusable)
708
+ result.should_receive(:body).and_return("true")
709
+ view = screen.progress_id_view
710
+ view.should be_focusable
711
+ end
712
+
713
+ it "should know if they are focused" do
714
+ accumulator.should_receive(:id_from_name)
715
+ accumulator.should_receive(:get_view)
716
+ accumulator.should_receive(:is_focused)
717
+ result.should_receive(:body).and_return("true")
718
+ view = screen.progress_id_view
719
+ view.should be_focused
720
+ end
721
+
722
+ it "should know if they are selected" do
723
+ accumulator.should_receive(:id_from_name)
724
+ accumulator.should_receive(:get_view)
725
+ accumulator.should_receive(:is_selected)
726
+ result.should_receive(:body).and_return("true")
727
+ view = screen.progress_id_view
728
+ view.should be_selected
729
+ end
730
+
731
+ it "should know if they are shown" do
732
+ accumulator.should_receive(:id_from_name)
733
+ accumulator.should_receive(:get_view)
734
+ accumulator.should_receive(:is_shown)
735
+ result.should_receive(:body).and_return("true")
736
+ view = screen.progress_id_view
737
+ view.should be_shown
738
+ end
739
+ end
626
740
  end
627
741
  end
628
742
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gametel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-30 00:00:00.000000000 Z
13
+ date: 2012-10-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: brazenhead
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.4.2
22
+ version: 0.4.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
- version: 0.4.2
30
+ version: 0.4.3
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: ADB
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -153,7 +153,9 @@ files:
153
153
  - lib/gametel/views.rb
154
154
  - lib/gametel/views/button.rb
155
155
  - lib/gametel/views/checkbox.rb
156
+ - lib/gametel/views/progress.rb
156
157
  - lib/gametel/views/radio_button.rb
158
+ - lib/gametel/views/spinner.rb
157
159
  - lib/gametel/views/text.rb
158
160
  - lib/gametel/views/view.rb
159
161
  - spec/lib/gametel/accessors_spec.rb
@@ -173,7 +175,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
173
175
  version: '0'
174
176
  segments:
175
177
  - 0
176
- hash: -226284468373359732
178
+ hash: -3608907023518404738
177
179
  required_rubygems_version: !ruby/object:Gem::Requirement
178
180
  none: false
179
181
  requirements:
@@ -182,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
184
  version: '0'
183
185
  segments:
184
186
  - 0
185
- hash: -226284468373359732
187
+ hash: -3608907023518404738
186
188
  requirements: []
187
189
  rubyforge_project:
188
190
  rubygems_version: 1.8.24