9
9
#import < XCTest/XCTest.h>
10
10
11
11
#import " WebViewJavascriptBridge.h"
12
- #import " WKWebViewJavascriptBridge.h"
13
12
#import " AppDelegate.h"
14
13
15
14
static NSString *const echoHandler = @" echoHandler" ;
@@ -21,8 +20,7 @@ @interface BridgeTests : XCTestCase
21
20
@implementation BridgeTests {
22
21
UIWebView *_uiWebView;
23
22
WKWebView *_wkWebView;
24
- WebViewJavascriptBridge* _uiWebViewBridge;
25
- WKWebViewJavascriptBridge* _wkWebViewBridge;
23
+ NSMutableArray * _bridgeRefs;
26
24
}
27
25
28
26
- (void )setUp {
@@ -38,6 +36,8 @@ - (void)setUp {
38
36
_wkWebView = [[WKWebView alloc ] initWithFrame: frame];
39
37
_wkWebView.backgroundColor = [UIColor redColor ];
40
38
[rootVC.view addSubview: _wkWebView];
39
+
40
+ _bridgeRefs = [NSMutableArray array ];
41
41
}
42
42
43
43
- (void )tearDown {
@@ -46,14 +46,10 @@ - (void)tearDown {
46
46
[_wkWebView removeFromSuperview ];
47
47
}
48
48
49
- - (WebViewJavascriptBridge*)bridgeForCls : (Class )cls webView : (id )webView {
50
- if (cls == [WebViewJavascriptBridge class ]) {
51
- _uiWebViewBridge = [WebViewJavascriptBridge bridgeForWebView: webView];
52
- return _uiWebViewBridge;
53
- } else {
54
- _wkWebViewBridge = [WKWebViewJavascriptBridge bridgeForWebView: _wkWebView];
55
- return (WebViewJavascriptBridge*) _wkWebViewBridge;
56
- }
49
+ - (WebViewJavascriptBridge*)bridgeForWebView : (id )webView {
50
+ WebViewJavascriptBridge* bridge = [WebViewJavascriptBridge bridgeForWebView: webView];
51
+ [_bridgeRefs addObject: bridge];
52
+ return bridge;
57
53
}
58
54
59
55
static void loadEchoSample (id webView) {
@@ -64,13 +60,13 @@ static void loadEchoSample(id webView) {
64
60
const NSTimeInterval timeoutSec = 100 ;
65
61
66
62
- (void )testInitialization {
67
- [self classSpecificTestInitialization: [WebViewJavascriptBridge class ] webView: _uiWebView];
68
- [self classSpecificTestInitialization: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
63
+ [self classSpecificTestInitialization: _uiWebView];
64
+ [self classSpecificTestInitialization: _wkWebView];
69
65
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
70
66
}
71
- - (void )classSpecificTestInitialization : (Class ) cls webView : ( id )webView {
67
+ - (void )classSpecificTestInitialization : (id )webView {
72
68
XCTestExpectation *startup = [self expectationWithDescription: @" Startup completed" ];
73
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
69
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
74
70
[bridge registerHandler: @" Greet" handler: ^(id data, WVJBResponseCallback responseCallback) {
75
71
XCTAssertEqualObjects (data, @" Hello world" );
76
72
[startup fulfill ];
@@ -81,12 +77,12 @@ - (void)classSpecificTestInitialization:(Class)cls webView:(id)webView {
81
77
}
82
78
83
79
- (void )testEchoHandler {
84
- [self classSpecificTestEchoHandler: [WebViewJavascriptBridge class ] webView: _uiWebView];
85
- [self classSpecificTestEchoHandler: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
80
+ [self classSpecificTestEchoHandler: _uiWebView];
81
+ [self classSpecificTestEchoHandler: _wkWebView];
86
82
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
87
83
}
88
- - (void )classSpecificTestEchoHandler : (Class ) cls webView : ( id )webView {
89
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
84
+ - (void )classSpecificTestEchoHandler : (id )webView {
85
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
90
86
91
87
XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
92
88
[bridge callHandler: echoHandler data: @" testEchoHandler" responseCallback: ^(id responseData) {
@@ -98,12 +94,12 @@ - (void)classSpecificTestEchoHandler:(Class)cls webView:(id)webView {
98
94
}
99
95
100
96
- (void )testEchoHandlerAfterSetup {
101
- [self classSpecificTestEchoHandlerAfterSetup: [WebViewJavascriptBridge class ] webView: _uiWebView];
102
- [self classSpecificTestEchoHandlerAfterSetup: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
97
+ [self classSpecificTestEchoHandlerAfterSetup: _uiWebView];
98
+ [self classSpecificTestEchoHandlerAfterSetup: _wkWebView];
103
99
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
104
100
}
105
- - (void )classSpecificTestEchoHandlerAfterSetup : (Class ) cls webView : ( id )webView {
106
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
101
+ - (void )classSpecificTestEchoHandlerAfterSetup : (id )webView {
102
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
107
103
108
104
XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
109
105
loadEchoSample (webView);
@@ -116,12 +112,12 @@ - (void)classSpecificTestEchoHandlerAfterSetup:(Class)cls webView:(id)webView {
116
112
}
117
113
118
114
- (void )testObjectEncoding {
119
- [self classSpecificTestObjectEncoding: [WebViewJavascriptBridge class ] webView: _uiWebView];
120
- [self classSpecificTestObjectEncoding: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
115
+ [self classSpecificTestObjectEncoding: _uiWebView];
116
+ [self classSpecificTestObjectEncoding: _wkWebView];
121
117
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
122
118
}
123
- - (void )classSpecificTestObjectEncoding : (Class ) cls webView : ( id )webView {
124
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
119
+ - (void )classSpecificTestObjectEncoding : (id )webView {
120
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
125
121
126
122
void (^echoObject)(id ) = ^void (id object) {
127
123
XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
@@ -140,12 +136,12 @@ - (void)classSpecificTestObjectEncoding:(Class)cls webView:(id)webView {
140
136
}
141
137
142
138
- (void )testJavascriptReceiveResponse {
143
- [self classSpecificTestJavascriptReceiveResponse: [WebViewJavascriptBridge class ] webView: _uiWebView];
144
- [self classSpecificTestJavascriptReceiveResponse: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
139
+ [self classSpecificTestJavascriptReceiveResponse: _uiWebView];
140
+ [self classSpecificTestJavascriptReceiveResponse: _wkWebView];
145
141
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
146
142
}
147
- - (void )classSpecificTestJavascriptReceiveResponse : (Class ) cls webView : ( id )webView {
148
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
143
+ - (void )classSpecificTestJavascriptReceiveResponse : (id )webView {
144
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
149
145
loadEchoSample (webView);
150
146
XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
151
147
[bridge registerHandler: @" objcEchoToJs" handler: ^(id data, WVJBResponseCallback responseCallback) {
@@ -158,12 +154,12 @@ - (void)classSpecificTestJavascriptReceiveResponse:(Class)cls webView:(id)webVie
158
154
}
159
155
160
156
- (void )testJavascriptReceiveResponseWithoutSafetyTimeout {
161
- [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: [WebViewJavascriptBridge class ] webView: _uiWebView];
162
- [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: [WKWebViewJavascriptBridge class ] webView: _wkWebView];
157
+ [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: _uiWebView];
158
+ [self classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout: _wkWebView];
163
159
[self waitForExpectationsWithTimeout: timeoutSec handler: NULL ];
164
160
}
165
- - (void )classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout : (Class ) cls webView : ( id )webView {
166
- WebViewJavascriptBridge *bridge = [self bridgeForCls: cls webView : webView];
161
+ - (void )classSpecificTestJavascriptReceiveResponseWithoutSafetyTimeout : (id )webView {
162
+ WebViewJavascriptBridge *bridge = [self bridgeForWebView : webView];
167
163
[bridge disableJavscriptAlertBoxSafetyTimeout ];
168
164
loadEchoSample (webView);
169
165
XCTestExpectation *callbackInvocked = [self expectationWithDescription: @" Callback invoked" ];
0 commit comments