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