FLTWKNavigationDelegateTests.m 1.34 KB
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

@import Flutter;
@import XCTest;
@import webview_flutter;

// OCMock library doesn't generate a valid modulemap.
#import <OCMock/OCMock.h>

@interface FLTWKNavigationDelegateTests : XCTestCase

@property(strong, nonatomic) FlutterMethodChannel *mockMethodChannel;
@property(strong, nonatomic) FLTWKNavigationDelegate *navigationDelegate;

@end

@implementation FLTWKNavigationDelegateTests

- (void)setUp {
  self.mockMethodChannel = OCMClassMock(FlutterMethodChannel.class);
  self.navigationDelegate =
      [[FLTWKNavigationDelegate alloc] initWithChannel:self.mockMethodChannel];
}

- (void)testWebViewWebContentProcessDidTerminateCallsRecourseErrorChannel {
  if (@available(iOS 9.0, *)) {
    // `webViewWebContentProcessDidTerminate` is only available on iOS 9.0 and above.
    WKWebView *webview = OCMClassMock(WKWebView.class);
    [self.navigationDelegate webViewWebContentProcessDidTerminate:webview];
    OCMVerify([self.mockMethodChannel
        invokeMethod:@"onWebResourceError"
           arguments:[OCMArg checkWithBlock:^BOOL(NSDictionary *args) {
             XCTAssertEqualObjects(args[@"errorType"], @"webContentProcessTerminated");
             return true;
           }]]);
  }
}

@end