Skip to content

Commit 5e40fef

Browse files
committed
Add test to verify that JS responses work (marcuswestin#184)
1 parent b59c15f commit 5e40fef

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

Tests/WebViewJavascriptBridgeTests/BridgeTests.m

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,23 @@ - (void)classSpecificTestObjectEncoding:(Class)cls webView:(id)webView {
121121
loadEchoSample(webView);
122122
}
123123

124+
- (void)testJavascriptReceiveResponse {
125+
[self classSpecificTestJavascriptReceiveResponse:[WebViewJavascriptBridge class] webView:_uiWebView];
126+
[self classSpecificTestJavascriptReceiveResponse:[WKWebViewJavascriptBridge class] webView:_wkWebView];
127+
[self waitForExpectationsWithTimeout:3 handler:NULL];
128+
}
129+
- (void)classSpecificTestJavascriptReceiveResponse:(Class)cls webView:(id)webView {
130+
WebViewJavascriptBridge *bridge = [self bridgeForCls:cls webView:webView];
131+
loadEchoSample(webView);
132+
XCTestExpectation *callbackInvocked = [self expectationWithDescription:@"Callback invoked"];
133+
[bridge registerHandler:@"objcEchoToJs" handler:^(id data, WVJBResponseCallback responseCallback) {
134+
responseCallback(data);
135+
}];
136+
[bridge callHandler:@"jsRcvResponseTest" data:nil responseCallback:^(id responseData) {
137+
XCTAssertEqualObjects(responseData, @"Response from JS");
138+
[callbackInvocked fulfill];
139+
}];
140+
}
124141

125142
- (WebViewJavascriptBridge*)bridgeForCls:(Class)cls webView:(id)webView {
126143
if (cls == [WebViewJavascriptBridge class]) {

Tests/WebViewJavascriptBridgeTests/echo.html

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,19 @@
1515
}
1616

1717
setupWebViewJavascriptBridge(function(bridge) {
18-
WebViewJavascriptBridge.callHandler('Greet', 'Hello world');
19-
WebViewJavascriptBridge.registerHandler('echoHandler', function(data, responseCallback) {
18+
bridge.callHandler('Greet', 'Hello world');
19+
bridge.registerHandler('echoHandler', function(data, responseCallback) {
2020
responseCallback(data)
2121
})
22+
bridge.registerHandler('jsRcvResponseTest', function(data, responseCallback) {
23+
bridge.callHandler('objcEchoToJs', { foo:'bar' }, function(response) {
24+
if (response && response.foo == 'bar') {
25+
responseCallback("Response from JS")
26+
} else {
27+
responseCallback("Failed")
28+
}
29+
})
30+
})
2231
})
2332
</script>
2433
</body></html>

0 commit comments

Comments
 (0)