Flutter iOS Embedder
FlutterSharedApplicationTest.mm
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #import <OCMock/OCMock.h>
6 #import <XCTest/XCTest.h>
7 
8 #include "flutter/common/constants.h"
11 
13 
14 @interface FlutterSharedApplicationTest : XCTestCase
15 @end
16 
17 @implementation FlutterSharedApplicationTest
18 
19 - (void)testWhenNSExtensionInBundle {
20  id mockBundle = OCMPartialMock([NSBundle mainBundle]);
21  OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"]).andReturn(@{
22  @"NSExtensionPointIdentifier" : @"com.apple.share-services"
23  });
25  XCTAssertFalse(FlutterSharedApplication.isAvailable);
26  [mockBundle stopMocking];
27 }
28 
29 - (void)testWhenNSExtensionEmptyInBundle {
30  id mockBundle = OCMPartialMock([NSBundle mainBundle]);
31  OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"])
32  .andReturn([[NSDictionary alloc] init]);
34  XCTAssertFalse(FlutterSharedApplication.isAvailable);
35  [mockBundle stopMocking];
36 }
37 
38 - (void)testWhenNSExtensionNotInBundle {
39  id mockBundle = OCMPartialMock([NSBundle mainBundle]);
42  [mockBundle stopMocking];
43 }
44 
45 - (void)testSharedApplicationNotCalledIfIsAvailableFalse {
46  id mockBundle = OCMPartialMock([NSBundle mainBundle]);
47  OCMStub([mockBundle objectForInfoDictionaryKey:@"NSExtension"]).andReturn(@{
48  @"NSExtensionPointIdentifier" : @"com.apple.share-services"
49  });
50  id mockApplication = OCMClassMock([UIApplication class]);
51  XCTAssertFalse(FlutterSharedApplication.isAvailable);
52  OCMReject([mockApplication sharedApplication]);
54  [mockBundle stopMocking];
55 }
56 
57 - (void)testSharedApplicationCalledIfIsAvailableTrue {
58  id mockBundle = OCMPartialMock([NSBundle mainBundle]);
59  id mockApplication = OCMClassMock([UIApplication class]);
61  XCTAssertNotNil(FlutterSharedApplication.application);
62  OCMVerify([mockApplication sharedApplication]);
63  [mockBundle stopMocking];
64 }
65 
66 @end