ProMotion 1.2.1 → 2.0.0.rc1
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.
- checksums.yaml +4 -4
- data/README.md +36 -10
- data/lib/ProMotion.rb +11 -2
- data/lib/ProMotion/cocoatouch/ns_string.rb +5 -0
- data/lib/ProMotion/cocoatouch/ns_url.rb +5 -0
- data/lib/ProMotion/cocoatouch/tab_bar_controller.rb +5 -7
- data/lib/ProMotion/cocoatouch/table_view_cell.rb +0 -16
- data/lib/ProMotion/cocoatouch/table_view_controller.rb +2 -3
- data/lib/ProMotion/cocoatouch/view_controller.rb +3 -6
- data/lib/ProMotion/delegate/delegate.rb +0 -3
- data/lib/ProMotion/delegate/delegate_module.rb +24 -20
- data/lib/ProMotion/{containers → ipad}/split_screen.rb +30 -32
- data/lib/ProMotion/{logger.rb → logger/logger.rb} +6 -5
- data/lib/ProMotion/screen/nav_bar_module.rb +126 -0
- data/lib/ProMotion/screen/screen.rb +0 -3
- data/lib/ProMotion/screen/screen_module.rb +54 -177
- data/lib/ProMotion/screen/screen_navigation.rb +29 -40
- data/lib/ProMotion/{view → styling}/styling.rb +17 -47
- data/lib/ProMotion/table/cell/table_view_cell_module.rb +76 -123
- data/lib/ProMotion/table/data/table_data.rb +1 -1
- data/lib/ProMotion/table/extensions/longpressable.rb +24 -0
- data/lib/ProMotion/table/extensions/refreshable.rb +1 -0
- data/lib/ProMotion/table/grouped_table_screen.rb +0 -5
- data/lib/ProMotion/table/table.rb +63 -83
- data/lib/ProMotion/table/table_screen.rb +0 -4
- data/lib/ProMotion/{containers → tabs}/tabs.rb +20 -21
- data/lib/ProMotion/version.rb +1 -1
- data/lib/ProMotion/web/web_screen.rb +0 -4
- data/lib/ProMotion/web/web_screen_module.rb +8 -5
- data/spec/functional/func_screen_spec.rb +14 -18
- data/spec/functional/func_split_screen_spec.rb +2 -2
- data/spec/functional/func_table_screen_spec.rb +54 -40
- data/spec/functional/func_web_screen_spec.rb +12 -17
- data/spec/helpers/test_helper.rb +27 -0
- data/spec/unit/delegate_spec.rb +4 -67
- data/spec/unit/image_title_screen.rb +9 -0
- data/spec/unit/image_view_title_screen.rb +9 -0
- data/spec/unit/load_view_spec.rb +27 -0
- data/spec/unit/main_spec.rb +0 -6
- data/spec/unit/screen_helpers_spec.rb +23 -17
- data/spec/unit/screen_spec.rb +21 -17
- data/spec/unit/searchable_table_spec.rb +55 -0
- data/spec/unit/split_screen_in_tab_bar_spec.rb +5 -5
- data/spec/unit/split_screen_spec.rb +4 -4
- data/spec/unit/tab_bar_spec.rb +79 -0
- data/spec/unit/tab_spec.rb +11 -5
- data/spec/unit/tables/table_module_spec.rb +22 -8
- data/spec/unit/tables/table_screen_spec.rb +1 -1
- data/spec/unit/tables/table_view_cell_spec.rb +16 -16
- data/spec/unit/view_helper_spec.rb +6 -81
- data/spec/unit/view_title_screen.rb +10 -0
- data/spec/unit/web_spec.rb +31 -37
- metadata +37 -111
- data/.gitignore +0 -33
- data/.travis.yml +0 -4
- data/CONTRIBUTING.md +0 -20
- data/Gemfile +0 -5
- data/LICENSE +0 -22
- data/ProMotion.gemspec +0 -30
- data/Rakefile +0 -66
- data/app/app_delegate.rb +0 -7
- data/app/screens/basic_screen.rb +0 -15
- data/lib/ProMotion/delegate/delegate_notifications.rb +0 -70
- data/lib/ProMotion/extensions/conversions.rb +0 -20
- data/lib/ProMotion/map/map_screen.rb +0 -10
- data/lib/ProMotion/map/map_screen_annotation.rb +0 -65
- data/lib/ProMotion/map/map_screen_module.rb +0 -212
- data/lib/ProMotion/push_notification/push_notification.rb +0 -58
- data/resources/WebScreen.html +0 -6
- data/resources/list.png +0 -0
- data/resources/test.png +0 -0
- data/spec/functional/func_image_title_screen.rb +0 -20
- data/spec/functional/func_image_view_title_screen.rb +0 -20
- data/spec/functional/func_map_screen_spec.rb +0 -162
- data/spec/functional/func_searchable_table_spec.rb +0 -56
- data/spec/functional/func_tab_bar_spec.rb +0 -78
- data/spec/functional/func_view_title_screen.rb +0 -21
- data/spec/helpers/basic_screen.rb +0 -3
- data/spec/helpers/custom_title_view.rb +0 -4
- data/spec/helpers/detail_screen.rb +0 -3
- data/spec/helpers/dummy_class.rb +0 -3
- data/spec/helpers/functional_screen.rb +0 -15
- data/spec/helpers/home_screen.rb +0 -19
- data/spec/helpers/image_title_screen.rb +0 -15
- data/spec/helpers/image_view_title_screen.rb +0 -15
- data/spec/helpers/map_screen.rb +0 -53
- data/spec/helpers/master_screen.rb +0 -3
- data/spec/helpers/present_screen.rb +0 -26
- data/spec/helpers/screen_module_view_controller.rb +0 -55
- data/spec/helpers/tab_screen.rb +0 -4
- data/spec/helpers/table_screen.rb +0 -117
- data/spec/helpers/table_screen_indexable.rb +0 -18
- data/spec/helpers/table_screen_refreshable.rb +0 -11
- data/spec/helpers/table_screen_searchable.rb +0 -72
- data/spec/helpers/test_delegate.rb +0 -34
- data/spec/helpers/test_delegate_colors.rb +0 -17
- data/spec/helpers/view_title_screen.rb +0 -15
- data/spec/helpers/web_screen.rb +0 -23
- data/spec/unit/map_spec.rb +0 -71
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
motion_require '../extensions/conversions'
|
|
2
|
-
|
|
3
1
|
module ProMotion
|
|
4
2
|
module Tabs
|
|
5
|
-
include Conversions
|
|
6
|
-
|
|
7
3
|
attr_accessor :tab_bar, :tab_bar_item
|
|
8
4
|
|
|
9
5
|
def open_tab_bar(*screens)
|
|
@@ -25,7 +21,7 @@ module ProMotion
|
|
|
25
21
|
end
|
|
26
22
|
|
|
27
23
|
def refresh_tab_bar_item
|
|
28
|
-
self.tabBarItem = create_tab_bar_item(self.tab_bar_item) if self.tab_bar_item && self.respond_to?(
|
|
24
|
+
self.tabBarItem = create_tab_bar_item(self.tab_bar_item) if self.tab_bar_item && self.respond_to?("tabBarItem=")
|
|
29
25
|
end
|
|
30
26
|
|
|
31
27
|
def set_tab_bar_badge(number)
|
|
@@ -33,36 +29,39 @@ module ProMotion
|
|
|
33
29
|
refresh_tab_bar_item
|
|
34
30
|
end
|
|
35
31
|
|
|
36
|
-
def
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
elsif icon_image.is_a?(Hash)
|
|
44
|
-
icon_selected = icon_image[:selected]
|
|
45
|
-
icon_unselected = icon_image[:unselected]
|
|
46
|
-
icon_image = nil
|
|
32
|
+
def create_tab_bar_item_custom(title, item_image, tag)
|
|
33
|
+
if item_image.is_a?(String)
|
|
34
|
+
item_image = UIImage.imageNamed(item_image)
|
|
35
|
+
elsif item_image.is_a?(Hash)
|
|
36
|
+
item_selected = item_image[:selected]
|
|
37
|
+
item_unselected = item_image[:unselected]
|
|
38
|
+
item_image = nil
|
|
47
39
|
end
|
|
48
40
|
|
|
49
|
-
item = UITabBarItem.alloc.initWithTitle(title, image:
|
|
41
|
+
item = UITabBarItem.alloc.initWithTitle(title, image:item_image, tag:tag)
|
|
50
42
|
|
|
51
|
-
if
|
|
52
|
-
item.setFinishedSelectedImage(
|
|
43
|
+
if item_selected || item_unselected
|
|
44
|
+
item.setFinishedSelectedImage(item_selected, withFinishedUnselectedImage: item_unselected)
|
|
53
45
|
end
|
|
54
46
|
|
|
55
47
|
return item
|
|
56
48
|
end
|
|
57
49
|
|
|
58
50
|
def create_tab_bar_item(tab={})
|
|
51
|
+
if tab[:system_icon] || tab[:icon]
|
|
52
|
+
PM.logger.deprecated("`system_icon:` no longer supported. Use `system_item:` instead.") if tab[:system_icon]
|
|
53
|
+
PM.logger.deprecated("`icon:` no longer supported. Use `item:` instead.") if tab[:icon]
|
|
54
|
+
tab[:system_item] ||= tab[:system_icon]
|
|
55
|
+
tab[:item] ||= tab[:icon]
|
|
56
|
+
end
|
|
57
|
+
|
|
59
58
|
title = "Untitled"
|
|
60
59
|
title = tab[:title] if tab[:title]
|
|
61
60
|
tab[:tag] ||= @current_tag ||= 0
|
|
62
61
|
@current_tag = tab[:tag] + 1
|
|
63
62
|
|
|
64
|
-
tab_bar_item =
|
|
65
|
-
tab_bar_item =
|
|
63
|
+
tab_bar_item = UITabBarItem.alloc.initWithTabBarSystemItem(map_tab_symbol(tab[:system_item]), tag: tab[:tag]) if tab[:system_item]
|
|
64
|
+
tab_bar_item = create_tab_bar_item_custom(title, tab[:item], tab[:tag]) if tab[:item]
|
|
66
65
|
|
|
67
66
|
tab_bar_item.badgeValue = tab[:badge_number].to_s unless tab[:badge_number].nil? || tab[:badge_number] <= 0
|
|
68
67
|
|
data/lib/ProMotion/version.rb
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
module ProMotion
|
|
2
2
|
module WebScreenModule
|
|
3
3
|
|
|
4
|
-
attr_accessor :webview, :external_links, :detector_types
|
|
4
|
+
attr_accessor :webview, :external_links, :detector_types, :scale_to_fit
|
|
5
5
|
|
|
6
6
|
def screen_setup
|
|
7
7
|
check_content_data
|
|
8
8
|
self.external_links ||= false
|
|
9
|
+
self.scale_to_fit ||= false
|
|
10
|
+
self.detector_types ||= :none
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def on_init
|
|
12
|
-
|
|
13
|
-
self.detector_types ||= UIDataDetectorTypeNone
|
|
14
14
|
if self.detector_types.is_a? Array
|
|
15
15
|
detectors = UIDataDetectorTypeNone
|
|
16
16
|
self.detector_types.each { |dt| detectors |= map_detector_symbol(dt) }
|
|
17
17
|
self.detector_types = detectors
|
|
18
|
+
else
|
|
19
|
+
self.detector_types = map_detector_symbol(self.detector_types)
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
self.webview ||= add UIWebView.new, {
|
|
@@ -23,6 +25,7 @@ module ProMotion
|
|
|
23
25
|
delegate: self,
|
|
24
26
|
data_detector_types: self.detector_types
|
|
25
27
|
}
|
|
28
|
+
self.webview.scalesPageToFit = self.scale_to_fit
|
|
26
29
|
self.webview.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal
|
|
27
30
|
set_initial_content
|
|
28
31
|
end
|
|
@@ -108,11 +111,11 @@ module ProMotion
|
|
|
108
111
|
end
|
|
109
112
|
|
|
110
113
|
def open_in_safari(inRequest)
|
|
111
|
-
#Open UIWebView delegate links in Safari.
|
|
114
|
+
# Open UIWebView delegate links in Safari.
|
|
112
115
|
UIApplication.sharedApplication.openURL(inRequest.URL)
|
|
113
116
|
end
|
|
114
117
|
|
|
115
|
-
#UIWebViewDelegate Methods - Camelcase
|
|
118
|
+
# UIWebViewDelegate Methods - Camelcase
|
|
116
119
|
def webView(inWeb, shouldStartLoadWithRequest:inRequest, navigationType:inType)
|
|
117
120
|
if self.external_links == true && inType == UIWebViewNavigationTypeLinkClicked
|
|
118
121
|
if defined?(OpenInChromeController)
|
|
@@ -4,18 +4,14 @@ describe "ProMotion::Screen functional" do
|
|
|
4
4
|
# Override controller to properly instantiate
|
|
5
5
|
def controller
|
|
6
6
|
rotate_device to: :portrait, button: :bottom
|
|
7
|
-
@controller
|
|
8
|
-
@root_screen = @controller
|
|
7
|
+
@controller = FunctionalScreen.new(nav_bar: true)
|
|
9
8
|
@controller.navigationController
|
|
10
9
|
end
|
|
11
10
|
|
|
12
|
-
after do
|
|
13
|
-
@controller = nil
|
|
14
|
-
@root_screen = nil
|
|
15
|
-
end
|
|
16
|
-
|
|
17
11
|
it "should have a navigation bar" do
|
|
18
|
-
|
|
12
|
+
wait 0.5 do
|
|
13
|
+
view("Functional").should.be.kind_of UINavigationItemView
|
|
14
|
+
end
|
|
19
15
|
end
|
|
20
16
|
|
|
21
17
|
it "should allow a string title" do
|
|
@@ -23,19 +19,19 @@ describe "ProMotion::Screen functional" do
|
|
|
23
19
|
end
|
|
24
20
|
|
|
25
21
|
it "should allow setting a left nav bar button" do
|
|
26
|
-
@
|
|
22
|
+
@controller.set_nav_bar_button :left, title: "Cool", action: :triggered_button
|
|
27
23
|
tap("Cool")
|
|
28
|
-
@
|
|
24
|
+
@controller.button_was_triggered.should.be.true
|
|
29
25
|
end
|
|
30
26
|
|
|
31
27
|
it "should allow setting a right nav bar button" do
|
|
32
|
-
@
|
|
28
|
+
@controller.set_nav_bar_button :right, title: "Cool2", action: :triggered_button
|
|
33
29
|
tap("Cool2")
|
|
34
|
-
@
|
|
30
|
+
@controller.button_was_triggered.should.be.true
|
|
35
31
|
end
|
|
36
32
|
|
|
37
33
|
it "should allow opening another screen in the same nav bar and have a back button that is operational" do
|
|
38
|
-
@
|
|
34
|
+
@controller.open BasicScreen
|
|
39
35
|
|
|
40
36
|
wait 0.5 do
|
|
41
37
|
|
|
@@ -52,21 +48,21 @@ describe "ProMotion::Screen functional" do
|
|
|
52
48
|
end
|
|
53
49
|
|
|
54
50
|
it "should push another screen with animation by default" do
|
|
55
|
-
basic = @
|
|
51
|
+
basic = @controller.open BasicScreen
|
|
56
52
|
wait 0.5 do
|
|
57
53
|
basic.animation_ts.should.be > 0.2
|
|
58
54
|
end
|
|
59
55
|
end
|
|
60
56
|
|
|
61
57
|
it "should push another screen with animation when animated: true" do
|
|
62
|
-
basic = @
|
|
58
|
+
basic = @controller.open BasicScreen, animated: true
|
|
63
59
|
wait 0.5 do
|
|
64
60
|
basic.animation_ts.should.be > 0.2
|
|
65
61
|
end
|
|
66
62
|
end
|
|
67
63
|
|
|
68
64
|
it "should push another screen without animation when animated: false" do
|
|
69
|
-
basic = @
|
|
65
|
+
basic = @controller.open BasicScreen, animated: false
|
|
70
66
|
wait 0.5 do
|
|
71
67
|
basic.animation_ts.should.be < 0.2
|
|
72
68
|
end
|
|
@@ -76,7 +72,7 @@ describe "ProMotion::Screen functional" do
|
|
|
76
72
|
it "should allow opening and closing a modal screen" do
|
|
77
73
|
@basic = BasicScreen.new(nav_bar: true)
|
|
78
74
|
wait 0.1 do
|
|
79
|
-
@
|
|
75
|
+
@controller.open_modal @basic
|
|
80
76
|
|
|
81
77
|
wait 0.6 do
|
|
82
78
|
|
|
@@ -94,7 +90,7 @@ describe "ProMotion::Screen functional" do
|
|
|
94
90
|
|
|
95
91
|
it "should fire the will_present, on_present, will_dismiss, and on_dismiss_methods" do
|
|
96
92
|
@presented_screen = PresentScreen.new
|
|
97
|
-
@
|
|
93
|
+
@controller.open @presented_screen
|
|
98
94
|
wait 0.6 do
|
|
99
95
|
@presented_screen.will_present_fired.should == true
|
|
100
96
|
@presented_screen.on_present_fired.should == true
|
|
@@ -67,14 +67,14 @@ describe "Split screen functional" do
|
|
|
67
67
|
rotate_device to: :portrait, button: :bottom
|
|
68
68
|
|
|
69
69
|
test_title = "Test Title"
|
|
70
|
-
@
|
|
70
|
+
@alt_controller = @app.open_split_screen @master, @detail, button_title: test_title
|
|
71
71
|
@detail.navigationItem.leftBarButtonItem.title.should == test_title
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
it "should override the default swipe action, that reveals the menu" do
|
|
75
75
|
rotate_device to: :portrait, button: :bottom
|
|
76
76
|
|
|
77
|
-
@
|
|
77
|
+
@alt_controller = @app.open_split_screen @master, @detail, swipe: false
|
|
78
78
|
@app.home_screen.presentsWithGesture.should == false
|
|
79
79
|
end
|
|
80
80
|
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
describe "ProMotion::TestTableScreen functionality" do
|
|
2
2
|
tests PM::TestTableScreen
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
def table_screen
|
|
5
|
+
@table_screen ||= begin
|
|
6
|
+
t = TestTableScreen.new(nav_bar: true)
|
|
7
|
+
t.on_load
|
|
8
|
+
t
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
5
12
|
def controller
|
|
6
13
|
rotate_device to: :portrait, button: :bottom
|
|
7
|
-
|
|
8
|
-
@controller.on_load
|
|
9
|
-
@controller.navigationController
|
|
14
|
+
table_screen.navigationController
|
|
10
15
|
end
|
|
11
16
|
|
|
12
17
|
def confirmation_class
|
|
13
18
|
TestHelper.ios7 ? UITableViewCellDeleteConfirmationButton : UITableViewCellDeleteConfirmationControl
|
|
14
19
|
end
|
|
15
20
|
|
|
21
|
+
after { @table_screen = nil }
|
|
22
|
+
|
|
16
23
|
it "should have a navigation bar" do
|
|
17
|
-
|
|
24
|
+
table_screen.navigationController.should.be.kind_of(UINavigationController)
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
it "should increment the tap counter on tap" do
|
|
21
28
|
tap("Increment")
|
|
22
|
-
|
|
29
|
+
table_screen.tap_counter.should == 3
|
|
23
30
|
end
|
|
24
31
|
|
|
25
32
|
it "should add a new table cell on tap" do
|
|
@@ -29,34 +36,34 @@ describe "ProMotion::TestTableScreen functionality" do
|
|
|
29
36
|
|
|
30
37
|
it "should do nothing when no action specified" do
|
|
31
38
|
tap("Just another blank row")
|
|
32
|
-
|
|
39
|
+
table_screen.should == table_screen
|
|
33
40
|
end
|
|
34
41
|
|
|
35
42
|
it "should increment the tap counter by one on tap" do
|
|
36
43
|
tap("Increment One")
|
|
37
|
-
|
|
44
|
+
table_screen.tap_counter.should == 1
|
|
38
45
|
end
|
|
39
46
|
|
|
40
47
|
it "should delete the specified row from the table view on tap" do
|
|
41
|
-
|
|
48
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
42
49
|
tap("Delete the row below")
|
|
43
50
|
wait 0.3 do
|
|
44
|
-
|
|
51
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
45
52
|
end
|
|
46
53
|
end
|
|
47
54
|
|
|
48
55
|
it "should delete the specified row from the table view on tap with an animation" do
|
|
49
|
-
|
|
56
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
50
57
|
tap("Delete the row below with an animation")
|
|
51
58
|
wait 0.3 do
|
|
52
|
-
|
|
59
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
53
60
|
end
|
|
54
61
|
end
|
|
55
62
|
|
|
56
63
|
# TODO: Why is it so complicated to find the delete button??
|
|
57
64
|
it "should use editing_style to delete the table row" do
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
66
|
+
table_screen.cell_was_deleted.should != true
|
|
60
67
|
flick("Just another deletable blank row", :to => :left)
|
|
61
68
|
|
|
62
69
|
wait 0.25 do
|
|
@@ -65,8 +72,8 @@ describe "ProMotion::TestTableScreen functionality" do
|
|
|
65
72
|
if subview.class == confirmation_class
|
|
66
73
|
tap subview
|
|
67
74
|
wait 0.25 do
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 6
|
|
76
|
+
table_screen.cell_was_deleted.should == true
|
|
70
77
|
end
|
|
71
78
|
end
|
|
72
79
|
end
|
|
@@ -74,8 +81,8 @@ describe "ProMotion::TestTableScreen functionality" do
|
|
|
74
81
|
end
|
|
75
82
|
|
|
76
83
|
it "should not allow deleting if on_cell_delete returns `false`" do
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
85
|
+
table_screen.cell_was_deleted.should != true
|
|
79
86
|
flick("A non-deletable blank row", :to => :left)
|
|
80
87
|
|
|
81
88
|
wait 0.25 do
|
|
@@ -84,42 +91,49 @@ describe "ProMotion::TestTableScreen functionality" do
|
|
|
84
91
|
if subview.class == confirmation_class
|
|
85
92
|
tap subview
|
|
86
93
|
wait 0.25 do
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
table_screen.tableView(table_screen.tableView, numberOfRowsInSection:0).should == 7
|
|
95
|
+
table_screen.cell_was_deleted.should != false
|
|
89
96
|
end
|
|
90
97
|
end
|
|
91
98
|
end
|
|
92
99
|
end
|
|
93
100
|
end
|
|
94
101
|
|
|
95
|
-
# Disabled by Jamon 10/16/2013 -- Bacon doesn't appear to use accessibility labels?
|
|
96
102
|
it "should call a method when the switch is flipped" do
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
103
|
+
table_screen.scroll_to_bottom
|
|
104
|
+
tap "switch_1"
|
|
105
|
+
wait 0.3 do
|
|
106
|
+
table_screen.tap_counter.should == 1
|
|
107
|
+
end
|
|
102
108
|
end
|
|
103
109
|
|
|
104
110
|
it "should call the method with arguments when the switch is flipped and when the cell is tapped" do
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
table_screen.scroll_to_bottom
|
|
112
|
+
tap "switch_3"
|
|
113
|
+
wait 0.3 do
|
|
114
|
+
table_screen.tap_counter.should == 3
|
|
109
115
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
tap "Switch With Cell Tap, Switch Action And Parameters"
|
|
117
|
+
wait 0.3 do
|
|
118
|
+
table_screen.tap_counter.should == 13
|
|
119
|
+
end
|
|
120
|
+
end
|
|
115
121
|
end
|
|
116
122
|
|
|
117
123
|
it "should call the method with arguments when the switch is flipped" do
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
124
|
+
table_screen.scroll_to_bottom
|
|
125
|
+
tap "switch_2"
|
|
126
|
+
wait 0.3 do
|
|
127
|
+
table_screen.tap_counter.should == 3
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "should not crash if cell with editing_style is swiped left" do
|
|
132
|
+
Proc.new { flick("Just another deletable blank row", to: :left) }.should.not.raise(StandardError)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "should not crash if cell with no editing_style is swiped left" do
|
|
136
|
+
Proc.new { flick("Increment", to: :left) }.should.not.raise(StandardError)
|
|
123
137
|
end
|
|
124
138
|
|
|
125
139
|
end
|
|
@@ -4,27 +4,22 @@ describe "ProMotion::TestWebScreen functionality" do
|
|
|
4
4
|
before { disable_network_access! }
|
|
5
5
|
after { enable_network_access! }
|
|
6
6
|
|
|
7
|
-
tests PM::TestWebScreen
|
|
8
|
-
|
|
9
|
-
# Override controller to properly instantiate
|
|
10
7
|
def controller
|
|
11
|
-
|
|
12
|
-
@webscreen ||= TestWebScreen.new(nav_bar: true)
|
|
13
|
-
@webscreen.navigationController
|
|
8
|
+
@controller ||= TestWebScreen.new(nav_bar: true)
|
|
14
9
|
end
|
|
15
10
|
|
|
16
11
|
after do
|
|
17
|
-
@
|
|
12
|
+
@controller = nil
|
|
18
13
|
end
|
|
19
14
|
|
|
20
15
|
it "should have the proper html content" do
|
|
21
16
|
file_name = "WebScreen.html"
|
|
22
17
|
|
|
23
|
-
|
|
18
|
+
controller.set_content(file_name)
|
|
24
19
|
|
|
25
20
|
@loaded_file = File.read(File.join(NSBundle.mainBundle.resourcePath, file_name))
|
|
26
|
-
wait_for_change
|
|
27
|
-
|
|
21
|
+
wait_for_change controller, 'is_load_finished' do
|
|
22
|
+
controller.html.delete("\n").should == @loaded_file.delete("\n")
|
|
28
23
|
end
|
|
29
24
|
end
|
|
30
25
|
|
|
@@ -32,18 +27,18 @@ describe "ProMotion::TestWebScreen functionality" do
|
|
|
32
27
|
stub_request(:get, "https://www.google.com/").
|
|
33
28
|
to_return(body: %q{Google! <form action="/search">%}, content_type: "text/html")
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
wait_for_change
|
|
37
|
-
|
|
30
|
+
controller.open_url(NSURL.URLWithString("https://www.google.com/"))
|
|
31
|
+
wait_for_change controller, 'is_load_finished' do
|
|
32
|
+
controller.html.include?('<form action="/search"').should == true
|
|
38
33
|
end
|
|
39
34
|
end
|
|
40
35
|
|
|
41
36
|
it "should manipulate the webscreen contents with javascript" do
|
|
42
|
-
|
|
37
|
+
controller.set_content('<h1 id="cool">Something Cool</h1>')
|
|
43
38
|
|
|
44
|
-
wait_for_change
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
wait_for_change controller, 'is_load_finished' do
|
|
40
|
+
controller.evaluate('document.getElementById("cool").innerHTML = "Changed"')
|
|
41
|
+
controller.html.should =~ /<h1 id="cool">Changed<\/h1>/
|
|
47
42
|
end
|
|
48
43
|
|
|
49
44
|
end
|