// 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 XCTest;
@import webview_flutter_wkwebview;

#if TARGET_OS_OSX
@import FlutterMacOS;
#else
@import Flutter;
#endif

#import <OCMock/OCMock.h>

@interface FWFURLTests : XCTestCase
@end

@implementation FWFURLTests
- (void)testAbsoluteString {
  NSURL *mockUrl = OCMClassMock([NSURL class]);
  OCMStub([mockUrl absoluteString]).andReturn(@"https://www.google.com");

  FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init];
  [instanceManager addDartCreatedInstance:mockUrl withIdentifier:0];

  FWFURLHostApiImpl *hostApi = [[FWFURLHostApiImpl alloc]
      initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger))
              instanceManager:instanceManager];

  FlutterError *error;
  XCTAssertEqualObjects([hostApi absoluteStringForNSURLWithIdentifier:0 error:&error],
                        @"https://www.google.com");
  XCTAssertNil(error);
}

- (void)testFlutterApiCreate {
  FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init];
  FWFURLFlutterApiImpl *flutterApi = [[FWFURLFlutterApiImpl alloc]
      initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger))
              instanceManager:instanceManager];

  flutterApi.api = OCMClassMock([FWFNSUrlFlutterApi class]);

  NSURL *url = [[NSURL alloc] initWithString:@"https://www.google.com"];
  [flutterApi create:url
          completion:^(FlutterError *error){
          }];

  long identifier = [instanceManager identifierWithStrongReferenceForInstance:url];
  OCMVerify([flutterApi.api createWithIdentifier:identifier completion:OCMOCK_ANY]);
}
@end
