gametel 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/features/has_view.feature +9 -0
- data/features/spinners.feature +5 -0
- data/features/step_definitions/controls_steps.rb +6 -0
- data/features/step_definitions/has_view_steps.rb +12 -0
- data/features/step_definitions/spinners_steps.rb +5 -0
- data/features/support/app_installation_hooks.rb +5 -5
- data/features/support/screens/controls_screen.rb +1 -0
- data/features/text.feature +5 -0
- data/gametel.gemspec +1 -1
- data/lib/gametel/accessors.rb +21 -1
- data/lib/gametel/platforms/calabash.rb +27 -0
- data/lib/gametel/version.rb +1 -1
- data/lib/gametel.rb +7 -0
- data/spec/lib/gametel/accessors_spec.rb +14 -0
- data/spec/lib/gametel_spec.rb +11 -0
- metadata +12 -4
data/ChangeLog
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: Determining whether or not a view exists
|
2
|
+
|
3
|
+
Scenario: Checking the existence of a view
|
4
|
+
When I'm on the buttons screen
|
5
|
+
Then we should know that the view with id "button_normal" exists
|
6
|
+
|
7
|
+
Scenario: Checking the absence of a view
|
8
|
+
When I'm on the buttons screen
|
9
|
+
Then we should know that the view with id "checkbox_button" does not exist
|
@@ -26,3 +26,9 @@ end
|
|
26
26
|
Then /^I should not have the value "(.*?)" on the control screen$/ do |text_value|
|
27
27
|
on(ControlsScreen).should_not have_text text_value
|
28
28
|
end
|
29
|
+
|
30
|
+
Then /^I should have the value "(.*?)" in the text field identified by "(.*?)"$/ do |text_value, how|
|
31
|
+
on(ControlsScreen) do |screen|
|
32
|
+
screen.send("text_field_#{how}").should eq(text_value)
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Then /^we should know that the view with id "(.*?)" exists$/ do |with_this_id|
|
2
|
+
on(ButtonScreen) do |screen|
|
3
|
+
screen.should have_view(with_this_id)
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
Then /^we should know that the view with id "(.*?)" does not exist$/ do |with_this_id|
|
8
|
+
on(ButtonScreen) do |screen|
|
9
|
+
screen.should_not have_view(with_this_id)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
@@ -2,18 +2,18 @@ require 'calabash-android/management/app_installation'
|
|
2
2
|
|
3
3
|
AfterConfiguration do |config|
|
4
4
|
FeatureNameMemory.feature_name = nil
|
5
|
+
uninstall_apps
|
6
|
+
install_app(ENV["TEST_APP_PATH"])
|
7
|
+
install_app(ENV["APP_PATH"])
|
5
8
|
end
|
6
9
|
|
7
10
|
Before do |scenario|
|
8
11
|
feature_name = scenario.feature.name
|
9
12
|
if FeatureNameMemory.feature_name != feature_name
|
10
13
|
log "Is first scenario - reinstalling apps"
|
11
|
-
|
12
|
-
uninstall_apps
|
13
|
-
install_app(ENV["TEST_APP_PATH"])
|
14
|
-
install_app(ENV["APP_PATH"])
|
14
|
+
|
15
15
|
FeatureNameMemory.feature_name = feature_name
|
16
|
-
|
16
|
+
end
|
17
17
|
end
|
18
18
|
|
19
19
|
FeatureNameMemory = Class.new
|
data/features/text.feature
CHANGED
@@ -35,3 +35,8 @@ Feature: Interacting with the standard text field
|
|
35
35
|
Then I should have the value "example text" on the control screen
|
36
36
|
When I clear the text from the text field identified by "name"
|
37
37
|
Then I should not have the value "example text" on the control screen
|
38
|
+
|
39
|
+
Scenario: Retrieving text identified by index
|
40
|
+
Given I'm on the controls screen
|
41
|
+
When I enter "example text" into the text field identified by "id"
|
42
|
+
Then I should have the value "example text" in the text field identified by "id"
|
data/gametel.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Gametel::VERSION
|
17
17
|
|
18
|
-
gem.add_dependency 'calabash-android', '>= 0.2.
|
18
|
+
gem.add_dependency 'calabash-android', '>= 0.2.12'
|
19
19
|
|
20
20
|
gem.add_development_dependency 'rspec', '>= 2.6.0'
|
21
21
|
gem.add_development_dependency 'cucumber'
|
data/lib/gametel/accessors.rb
CHANGED
@@ -6,7 +6,7 @@ module Gametel
|
|
6
6
|
#
|
7
7
|
# @example
|
8
8
|
# text(:first_name, :index => 0)
|
9
|
-
# # will generate 'first_name=' and 'clear_first_name' methods
|
9
|
+
# # will generate 'first_name', 'first_name=' and 'clear_first_name' methods
|
10
10
|
#
|
11
11
|
# @param [String] the name used for the generated methods
|
12
12
|
# @param [Hash] locator for how the text is found The valid
|
@@ -16,6 +16,9 @@ module Gametel
|
|
16
16
|
# * :index
|
17
17
|
#
|
18
18
|
def text(name, locator)
|
19
|
+
define_method("#{name}") do
|
20
|
+
platform.get_text(locator)
|
21
|
+
end
|
19
22
|
define_method("#{name}=") do |value|
|
20
23
|
platform.enter_text(value, locator)
|
21
24
|
end
|
@@ -130,6 +133,23 @@ module Gametel
|
|
130
133
|
platform.click_view(locator)
|
131
134
|
end
|
132
135
|
end
|
136
|
+
|
137
|
+
#
|
138
|
+
# Generates one method to get the selected item text.
|
139
|
+
# @example
|
140
|
+
# spinner(:spinner_item, :id => 'id_name_of_your_control')
|
141
|
+
# # will generate 'spinner_item' method
|
142
|
+
#
|
143
|
+
# @param [String] the name used for the generated methods
|
144
|
+
# @param [Hash] locator indicating an id for how the spinner is found.
|
145
|
+
# The only valid keys are:
|
146
|
+
# * :id
|
147
|
+
#
|
148
|
+
def spinner(name, locator)
|
149
|
+
define_method(name) do
|
150
|
+
platform.get_spinner_value(locator) if locator[:id]
|
151
|
+
end
|
152
|
+
end
|
133
153
|
end
|
134
154
|
end
|
135
155
|
|
@@ -6,6 +6,13 @@ module Gametel
|
|
6
6
|
module Platforms
|
7
7
|
class Calabash
|
8
8
|
|
9
|
+
#
|
10
|
+
# get text
|
11
|
+
#
|
12
|
+
def get_text(locator)
|
13
|
+
performAction('get_text_by_id', locator[:id])['message'] if locator[:id]
|
14
|
+
end
|
15
|
+
|
9
16
|
#
|
10
17
|
# enter text in a text box
|
11
18
|
#
|
@@ -88,6 +95,18 @@ module Gametel
|
|
88
95
|
true
|
89
96
|
end
|
90
97
|
|
98
|
+
#
|
99
|
+
# determine if a view exists
|
100
|
+
#
|
101
|
+
def has_view?(locator)
|
102
|
+
begin
|
103
|
+
performAction 'has_view', locator
|
104
|
+
rescue
|
105
|
+
return false
|
106
|
+
end
|
107
|
+
true
|
108
|
+
end
|
109
|
+
|
91
110
|
#
|
92
111
|
# press the back button
|
93
112
|
#
|
@@ -123,6 +142,14 @@ module Gametel
|
|
123
142
|
performAction 'wait_for_text', text_to_find
|
124
143
|
end
|
125
144
|
|
145
|
+
#
|
146
|
+
# get the selected spinner value
|
147
|
+
#
|
148
|
+
def get_spinner_value(spinner_id)
|
149
|
+
result = performAction 'get_selected_spinner_item_text', spinner_id[:id]
|
150
|
+
result['message']
|
151
|
+
end
|
152
|
+
|
126
153
|
end
|
127
154
|
end
|
128
155
|
end
|
data/lib/gametel/version.rb
CHANGED
data/lib/gametel.rb
CHANGED
@@ -19,6 +19,7 @@ class AccessorsSampleScreen
|
|
19
19
|
radio_button(:radio_id, :id => 'some_radio_id')
|
20
20
|
view(:view_id, :id => 'some_view_id')
|
21
21
|
view(:view_text, :text => 'Any view text')
|
22
|
+
spinner(:spinner_id, :id => 'spinner_id')
|
22
23
|
end
|
23
24
|
|
24
25
|
describe Gametel::Accessors do
|
@@ -73,6 +74,12 @@ describe Gametel::Accessors do
|
|
73
74
|
platform.should_receive(:performAction).with('clear_id_field', 'fnid')
|
74
75
|
screen.clear_first_name_id
|
75
76
|
end
|
77
|
+
|
78
|
+
it "should know how to get text by id" do
|
79
|
+
platform.should_receive(:performAction).with('get_text_by_id', 'fnid').and_return('message' => 'the value')
|
80
|
+
screen.first_name_id.should eq('the value')
|
81
|
+
end
|
82
|
+
|
76
83
|
end
|
77
84
|
|
78
85
|
context "buttons" do
|
@@ -133,5 +140,12 @@ describe Gametel::Accessors do
|
|
133
140
|
screen.view_text
|
134
141
|
end
|
135
142
|
end
|
143
|
+
|
144
|
+
context "spinners" do
|
145
|
+
it "should be able to determine their selected item" do
|
146
|
+
platform.should_receive(:performAction).with('get_selected_spinner_item_text', 'spinner_id').and_return('message' => 'the text value')
|
147
|
+
screen.spinner_id.should eq('the text value')
|
148
|
+
end
|
149
|
+
end
|
136
150
|
end
|
137
151
|
end
|
data/spec/lib/gametel_spec.rb
CHANGED
@@ -31,6 +31,17 @@ describe Gametel do
|
|
31
31
|
screen.should be_enabled('some_id')
|
32
32
|
end
|
33
33
|
|
34
|
+
it "should know if a view exists" do
|
35
|
+
platform.should_receive(:performAction).with('has_view', 'some_id').and_return("success" => true)
|
36
|
+
screen.should have_view('some_id')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should know if a view does not exist" do
|
40
|
+
platform.should_receive(:performAction).with('has_view', 'some_id').and_throw('we do not care what this exception is')
|
41
|
+
screen.should_not have_view('some_id')
|
42
|
+
end
|
43
|
+
|
44
|
+
|
34
45
|
it "should know how to press the back button" do
|
35
46
|
platform.should_receive(:performAction).with('go_back')
|
36
47
|
screen.back
|
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.
|
4
|
+
version: '0.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-08-
|
13
|
+
date: 2012-08-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: calabash-android
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.2.
|
22
|
+
version: 0.2.12
|
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.2.
|
30
|
+
version: 0.2.12
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
32
|
name: rspec
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -953,18 +953,22 @@ files:
|
|
953
953
|
- cucumber.yml
|
954
954
|
- features/button.feature
|
955
955
|
- features/checkbox.feature
|
956
|
+
- features/has_view.feature
|
956
957
|
- features/is_enabled.feature
|
957
958
|
- features/list_item.feature
|
958
959
|
- features/main_screen.feature
|
959
960
|
- features/radio_button.feature
|
961
|
+
- features/spinners.feature
|
960
962
|
- features/step_definitions/button_steps.rb
|
961
963
|
- features/step_definitions/calabash_steps.rb
|
962
964
|
- features/step_definitions/checkbox_steps.rb
|
963
965
|
- features/step_definitions/controls_steps.rb
|
966
|
+
- features/step_definitions/has_view_steps.rb
|
964
967
|
- features/step_definitions/is_enabled_steps.rb
|
965
968
|
- features/step_definitions/list_item_steps.rb
|
966
969
|
- features/step_definitions/main_screen_steps.rb
|
967
970
|
- features/step_definitions/radio_button_steps.rb
|
971
|
+
- features/step_definitions/spinners_steps.rb
|
968
972
|
- features/step_definitions/view_steps.rb
|
969
973
|
- features/support/app_installation_hooks.rb
|
970
974
|
- features/support/app_life_cycle_hooks.rb
|
@@ -1019,18 +1023,22 @@ summary: High level wrapper around android drivers
|
|
1019
1023
|
test_files:
|
1020
1024
|
- features/button.feature
|
1021
1025
|
- features/checkbox.feature
|
1026
|
+
- features/has_view.feature
|
1022
1027
|
- features/is_enabled.feature
|
1023
1028
|
- features/list_item.feature
|
1024
1029
|
- features/main_screen.feature
|
1025
1030
|
- features/radio_button.feature
|
1031
|
+
- features/spinners.feature
|
1026
1032
|
- features/step_definitions/button_steps.rb
|
1027
1033
|
- features/step_definitions/calabash_steps.rb
|
1028
1034
|
- features/step_definitions/checkbox_steps.rb
|
1029
1035
|
- features/step_definitions/controls_steps.rb
|
1036
|
+
- features/step_definitions/has_view_steps.rb
|
1030
1037
|
- features/step_definitions/is_enabled_steps.rb
|
1031
1038
|
- features/step_definitions/list_item_steps.rb
|
1032
1039
|
- features/step_definitions/main_screen_steps.rb
|
1033
1040
|
- features/step_definitions/radio_button_steps.rb
|
1041
|
+
- features/step_definitions/spinners_steps.rb
|
1034
1042
|
- features/step_definitions/view_steps.rb
|
1035
1043
|
- features/support/app_installation_hooks.rb
|
1036
1044
|
- features/support/app_life_cycle_hooks.rb
|