mirror of
https://github.com/zhigang1992/FunctionalReactivePixels.git
synced 2026-01-12 22:47:31 +08:00
Added FRPPhotoViewModel tests.
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
5E730B101815F78B003FCB43 /* FRPGalleryViewModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E730B0F1815F78B003FCB43 /* FRPGalleryViewModelTests.m */; };
|
||||
5E730B141815FE97003FCB43 /* FRPFullSizePhotoViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E730B131815FE97003FCB43 /* FRPFullSizePhotoViewModel.m */; };
|
||||
5E93AD9A186C781000795C9E /* FRPFullSizePhotoViewModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E93AD99186C781000795C9E /* FRPFullSizePhotoViewModelTests.m */; };
|
||||
5E93AD9C186C80DE00795C9E /* FRPPhotoViewModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E93AD9B186C80DE00795C9E /* FRPPhotoViewModelTests.m */; };
|
||||
5EAD1F5818173A3200C67860 /* FRPPhotoViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EAD1F5718173A3200C67860 /* FRPPhotoViewModel.m */; };
|
||||
5EAD1F5C18173F1500C67860 /* FRPLoginViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EAD1F5B18173F1500C67860 /* FRPLoginViewModel.m */; };
|
||||
5EAD1F601817418800C67860 /* FRPPhotoDetailViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EAD1F5F1817418800C67860 /* FRPPhotoDetailViewModel.m */; };
|
||||
@@ -65,6 +66,7 @@
|
||||
5E730B121815FE97003FCB43 /* FRPFullSizePhotoViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FRPFullSizePhotoViewModel.h; sourceTree = "<group>"; };
|
||||
5E730B131815FE97003FCB43 /* FRPFullSizePhotoViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FRPFullSizePhotoViewModel.m; sourceTree = "<group>"; };
|
||||
5E93AD99186C781000795C9E /* FRPFullSizePhotoViewModelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FRPFullSizePhotoViewModelTests.m; sourceTree = "<group>"; };
|
||||
5E93AD9B186C80DE00795C9E /* FRPPhotoViewModelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FRPPhotoViewModelTests.m; sourceTree = "<group>"; };
|
||||
5EAD1F5618173A3200C67860 /* FRPPhotoViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FRPPhotoViewModel.h; sourceTree = "<group>"; };
|
||||
5EAD1F5718173A3200C67860 /* FRPPhotoViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FRPPhotoViewModel.m; sourceTree = "<group>"; };
|
||||
5EAD1F5A18173F1500C67860 /* FRPLoginViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FRPLoginViewModel.h; sourceTree = "<group>"; };
|
||||
@@ -285,6 +287,7 @@
|
||||
children = (
|
||||
5E730B0F1815F78B003FCB43 /* FRPGalleryViewModelTests.m */,
|
||||
5E93AD99186C781000795C9E /* FRPFullSizePhotoViewModelTests.m */,
|
||||
5E93AD9B186C80DE00795C9E /* FRPPhotoViewModelTests.m */,
|
||||
5EBE2B1A180B07D0007B6BF3 /* Supporting Files */,
|
||||
);
|
||||
path = FRPTests;
|
||||
@@ -487,6 +490,7 @@
|
||||
files = (
|
||||
5E93AD9A186C781000795C9E /* FRPFullSizePhotoViewModelTests.m in Sources */,
|
||||
5E730B101815F78B003FCB43 /* FRPGalleryViewModelTests.m in Sources */,
|
||||
5E93AD9C186C80DE00795C9E /* FRPPhotoViewModelTests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@@ -27,11 +27,7 @@
|
||||
@weakify(self);
|
||||
[self.didBecomeActiveSignal subscribeNext:^(id x) {
|
||||
@strongify(self);
|
||||
[[FRPPhotoImporter fetchPhotoDetails:self.model] subscribeError:^(NSError *error) {
|
||||
NSLog(@"Could not fetch photo details: %@", error);
|
||||
} completed:^{
|
||||
NSLog(@"Fetched photo details.");
|
||||
}];
|
||||
[self downloadPhotoModelDetails];
|
||||
}];
|
||||
|
||||
RAC(self, photoImage) = [RACObserve(self.model, fullsizedData) map:^id(id value) {
|
||||
@@ -41,8 +37,20 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Public Methods
|
||||
|
||||
-(NSString *)photoName {
|
||||
return self.model.photoName;
|
||||
}
|
||||
|
||||
#pragma mark - Private Methods
|
||||
|
||||
-(void)downloadPhotoModelDetails {
|
||||
[[FRPPhotoImporter fetchPhotoDetails:self.model] subscribeError:^(NSError *error) {
|
||||
NSLog(@"Could not fetch photo details: %@", error);
|
||||
} completed:^{
|
||||
NSLog(@"Fetched photo details.");
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
71
FRPTests/FRPPhotoViewModelTests.m
Normal file
71
FRPTests/FRPPhotoViewModelTests.m
Normal file
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// FRPPhotoViewModelTests.m
|
||||
// FRP
|
||||
//
|
||||
// Created by Ash Furrow on 12/26/2013.
|
||||
// Copyright (c) 2013 Ash Furrow. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Specta/Specta.h>
|
||||
#define EXP_SHORTHAND
|
||||
#import <Expecta/Expecta.h>
|
||||
#import <OCMock/OCMock.h>
|
||||
|
||||
#import "FRPPhotoViewModel.h"
|
||||
#import "FRPPhotoModel.h"
|
||||
|
||||
@interface FRPPhotoViewModel ()
|
||||
|
||||
-(void)downloadPhotoModelDetails;
|
||||
|
||||
@end
|
||||
|
||||
SpecBegin(FRPPhotoViewModel)
|
||||
|
||||
describe(@"FRPPhotoViewModel", ^{
|
||||
it (@"should return the photo's name property when photoName is invoked", ^{
|
||||
NSString *name = @"Ash";
|
||||
|
||||
id mockPhotoModel = [OCMockObject mockForClass:[FRPPhotoModel class]];
|
||||
[[[mockPhotoModel stub] andReturn:name] photoName];
|
||||
|
||||
FRPPhotoViewModel *viewModel = [[FRPPhotoViewModel alloc] initWithModel:nil];
|
||||
id mockViewModel = [OCMockObject partialMockForObject:viewModel];
|
||||
[[[mockViewModel stub] andReturn:mockPhotoModel] model];
|
||||
|
||||
id returnedName = [mockViewModel photoName];
|
||||
|
||||
expect(returnedName).to.equal(name);
|
||||
});
|
||||
|
||||
it (@"should download photo model details when it becomes active", ^{
|
||||
FRPPhotoViewModel *viewModel = [[FRPPhotoViewModel alloc] initWithModel:nil];
|
||||
|
||||
id mockViewModel = [OCMockObject partialMockForObject:viewModel];
|
||||
[[mockViewModel expect] downloadPhotoModelDetails];
|
||||
|
||||
[mockViewModel setActive:YES];
|
||||
|
||||
[mockViewModel verify];
|
||||
});
|
||||
|
||||
pending (@"should correctly map image data to UIImage", ^{
|
||||
id mockPhotoModel = [OCMockObject mockForClass:[FRPPhotoViewModel class]];
|
||||
[[[mockPhotoModel expect] andReturn:nil] fullsizedData];
|
||||
});
|
||||
|
||||
it (@"should return the correct photo name", ^{
|
||||
NSString *name = @"Ash";
|
||||
|
||||
FRPPhotoModel *photoModel = [[FRPPhotoModel alloc] init];
|
||||
photoModel.photoName = name;
|
||||
|
||||
FRPPhotoViewModel *viewModel = [[FRPPhotoViewModel alloc] initWithModel:photoModel];
|
||||
|
||||
NSString *returnedName = [viewModel photoName];
|
||||
|
||||
expect(name).to.equal(returnedName);
|
||||
});
|
||||
});
|
||||
|
||||
SpecEnd
|
||||
Reference in New Issue
Block a user