From 9c2909a968b068cd188cfd2b403fe949263c8585 Mon Sep 17 00:00:00 2001 From: Robin Chou Date: Thu, 28 Apr 2016 21:04:04 -0400 Subject: [PATCH] Updating tests. --- AsyncDisplayKitTests/ASVideoNodeTests.m | 54 +++++++++++++++++++++---- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/AsyncDisplayKitTests/ASVideoNodeTests.m b/AsyncDisplayKitTests/ASVideoNodeTests.m index 3effa2431a..7464e9eb5c 100644 --- a/AsyncDisplayKitTests/ASVideoNodeTests.m +++ b/AsyncDisplayKitTests/ASVideoNodeTests.m @@ -6,6 +6,8 @@ * of patent rights can be found in the PATENTS file in the same directory. */ +#import + #import #import #import @@ -17,6 +19,7 @@ AVURLAsset *_firstAsset; AVAsset *_secondAsset; NSURL *_url; + NSArray *_requestedKeys; } @end @@ -32,6 +35,7 @@ @property (atomic, readwrite) BOOL shouldBePlaying; - (void)setVideoPlaceholderImage:(UIImage *)image; +- (void)prepareToPlayAsset:(AVAsset *)asset withKeys:(NSArray *)requestedKeys; @end @@ -43,6 +47,7 @@ _firstAsset = [AVURLAsset assetWithURL:[NSURL URLWithString:@"firstURL"]]; _secondAsset = [AVAsset assetWithURL:[NSURL URLWithString:@"secondURL"]]; _url = [NSURL URLWithString:@"testURL"]; + _requestedKeys = @[ @"playable" ]; } @@ -131,23 +136,42 @@ XCTAssertNil(_videoNode.player); } -- (void)testPlayerIsCreatedInFetchData +- (void)testPlayerIsCreatedAsynchronouslyInFetchData { - _videoNode.asset = _firstAsset; + AVAsset *asset = _firstAsset; + + id assetMock = [OCMockObject partialMockForObject:asset]; + id videoNodeMock = [OCMockObject partialMockForObject:_videoNode]; + + [[[assetMock stub] andReturnValue:@YES] isPlayable]; + [[[videoNodeMock expect] andForwardToRealObject] prepareToPlayAsset:assetMock withKeys:_requestedKeys]; + + _videoNode.asset = assetMock; _videoNode.interfaceState = ASInterfaceStateFetchData; + [videoNodeMock verifyWithDelay:1.0f]; + XCTAssertNotNil(_videoNode.player); } -- (void)testPlayerIsCreatedInFetchDataWithURL +- (void)testPlayerIsCreatedAsynchronouslyInFetchDataWithURL { - _videoNode.asset = [AVAsset assetWithURL:_url]; + AVAsset *asset = [AVAsset assetWithURL:_url]; + + id assetMock = [OCMockObject partialMockForObject:asset]; + id videoNodeMock = [OCMockObject partialMockForObject:_videoNode]; + + [[[assetMock stub] andReturnValue:@YES] isPlayable]; + [[[videoNodeMock expect] andForwardToRealObject] prepareToPlayAsset:assetMock withKeys:_requestedKeys]; + + _videoNode.asset = assetMock; _videoNode.interfaceState = ASInterfaceStateFetchData; + [videoNodeMock verifyWithDelay:1.0f]; + XCTAssertNotNil(_videoNode.player); } - - (void)testPlayerLayerNodeIsAddedOnDidLoadIfVisibleAndAutoPlaying { _videoNode.asset = _firstAsset; @@ -284,13 +308,18 @@ - (void)testVideoThatDoesNotAutorepeatsShouldPauseOnPlaybackEnd { - _videoNode.asset = _firstAsset; + id assetMock = [OCMockObject partialMockForObject:_firstAsset]; + [[[assetMock stub] andReturnValue:@YES] isPlayable]; + + _videoNode.asset = assetMock; _videoNode.shouldAutorepeat = NO; [_videoNode didLoad]; [_videoNode setInterfaceState:ASInterfaceStateVisible | ASInterfaceStateDisplay | ASInterfaceStateFetchData]; [_videoNode play]; + [_videoNode prepareToPlayAsset:assetMock withKeys:_requestedKeys]; + XCTAssertTrue(_videoNode.isPlaying); [[NSNotificationCenter defaultCenter] postNotificationName:AVPlayerItemDidPlayToEndTimeNotification object:_videoNode.currentItem]; @@ -372,9 +401,20 @@ - (void)testClearingFetchedContentShouldClearAssetData { - _videoNode.asset = _firstAsset; + AVAsset *asset = _firstAsset; + + id assetMock = [OCMockObject partialMockForObject:asset]; + id videoNodeMock = [OCMockObject partialMockForObject:_videoNode]; + + [[[assetMock stub] andReturnValue:@YES] isPlayable]; + [[[videoNodeMock expect] andForwardToRealObject] prepareToPlayAsset:assetMock withKeys:_requestedKeys]; + + _videoNode.asset = assetMock; [_videoNode fetchData]; [_videoNode setVideoPlaceholderImage:[[UIImage alloc] init]]; + + [videoNodeMock verifyWithDelay:1.0f]; + XCTAssertNotNil(_videoNode.player); XCTAssertNotNil(_videoNode.currentItem); XCTAssertNotNil(_videoNode.placeholderImageNode.image);