Skip to content

Commit

Permalink
add Movie Model v2
Browse files Browse the repository at this point in the history
  • Loading branch information
lincode committed Dec 5, 2012
1 parent e8890a0 commit 1aec00c
Show file tree
Hide file tree
Showing 7 changed files with 249 additions and 0 deletions.
24 changes: 24 additions & 0 deletions DoubanAPIEngine/DoubanAPIEngine.xcodeproj/project.pbxproj
Expand Up @@ -444,6 +444,12 @@
D88800CC166F609300DAFFC4 /* DOUNoteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D88800CB166F609300DAFFC4 /* DOUNoteTests.m */; };
D88800CF166F63B600DAFFC4 /* DOUNoteArray.h in Headers */ = {isa = PBXBuildFile; fileRef = D88800CD166F63B400DAFFC4 /* DOUNoteArray.h */; };
D88800D0166F63B600DAFFC4 /* DOUNoteArray.m in Sources */ = {isa = PBXBuildFile; fileRef = D88800CE166F63B500DAFFC4 /* DOUNoteArray.m */; };
D88800D2166F654100DAFFC4 /* MovieArray.json in Resources */ = {isa = PBXBuildFile; fileRef = D88800D1166F654100DAFFC4 /* MovieArray.json */; };
D88800D4166F65A200DAFFC4 /* DOUMovieTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D88800D3166F65A200DAFFC4 /* DOUMovieTests.m */; };
D88800D7166F65CA00DAFFC4 /* DOUMovie.h in Headers */ = {isa = PBXBuildFile; fileRef = D88800D5166F65CA00DAFFC4 /* DOUMovie.h */; };
D88800D8166F65CA00DAFFC4 /* DOUMovie.m in Sources */ = {isa = PBXBuildFile; fileRef = D88800D6166F65CA00DAFFC4 /* DOUMovie.m */; };
D88800DB166F65E400DAFFC4 /* DOUMovieArray.h in Headers */ = {isa = PBXBuildFile; fileRef = D88800D9166F65E400DAFFC4 /* DOUMovieArray.h */; };
D88800DC166F65E400DAFFC4 /* DOUMovieArray.m in Sources */ = {isa = PBXBuildFile; fileRef = D88800DA166F65E400DAFFC4 /* DOUMovieArray.m */; };
D88EAEFD14691D0800A4DE43 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88EAEFC14691D0800A4DE43 /* CoreGraphics.framework */; };
D88EAEFE14691D2F00A4DE43 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D800D71F14690D32009F64FD /* Security.framework */; };
D88EAEFF14691D5B00A4DE43 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D88EAEFC14691D0800A4DE43 /* CoreGraphics.framework */; };
Expand Down Expand Up @@ -907,6 +913,12 @@
D88800CB166F609300DAFFC4 /* DOUNoteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DOUNoteTests.m; path = Model2/DOUNoteTests.m; sourceTree = "<group>"; };
D88800CD166F63B400DAFFC4 /* DOUNoteArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOUNoteArray.h; sourceTree = "<group>"; };
D88800CE166F63B500DAFFC4 /* DOUNoteArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DOUNoteArray.m; sourceTree = "<group>"; };
D88800D1166F654100DAFFC4 /* MovieArray.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = MovieArray.json; sourceTree = "<group>"; };
D88800D3166F65A200DAFFC4 /* DOUMovieTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DOUMovieTests.m; path = Model2/DOUMovieTests.m; sourceTree = "<group>"; };
D88800D5166F65CA00DAFFC4 /* DOUMovie.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOUMovie.h; sourceTree = "<group>"; };
D88800D6166F65CA00DAFFC4 /* DOUMovie.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DOUMovie.m; sourceTree = "<group>"; };
D88800D9166F65E400DAFFC4 /* DOUMovieArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOUMovieArray.h; sourceTree = "<group>"; };
D88800DA166F65E400DAFFC4 /* DOUMovieArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DOUMovieArray.m; sourceTree = "<group>"; };
D88EAEFC14691D0800A4DE43 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
D89A2A5515ECA3360027C0B0 /* Event.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Event.json; sourceTree = "<group>"; };
D89A6A94162D37EE00954BC4 /* DOUUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOUUser.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1571,6 +1583,7 @@
D87D4C8415C3F2760006FAFE /* Model2 */ = {
isa = PBXGroup;
children = (
D88800D3166F65A200DAFFC4 /* DOUMovieTests.m */,
D88800CB166F609300DAFFC4 /* DOUNoteTests.m */,
D87D4CC315C3F56D0006FAFE /* DOUCommentTests.m */,
D87D4CC415C3F56D0006FAFE /* DOUOnlineTests.m */,
Expand Down Expand Up @@ -1605,6 +1618,7 @@
D87D4C9615C3F4620006FAFE /* Model2 */ = {
isa = PBXGroup;
children = (
D88800D1166F654100DAFFC4 /* MovieArray.json */,
D88800C9166F603F00DAFFC4 /* Note.json */,
D87D4CB715C3F5580006FAFE /* Album.json */,
D89A2A5515ECA3360027C0B0 /* Event.json */,
Expand Down Expand Up @@ -1636,6 +1650,10 @@
D88800C1166F5C3700DAFFC4 /* Movie */ = {
isa = PBXGroup;
children = (
D88800D5166F65CA00DAFFC4 /* DOUMovie.h */,
D88800D6166F65CA00DAFFC4 /* DOUMovie.m */,
D88800D9166F65E400DAFFC4 /* DOUMovieArray.h */,
D88800DA166F65E400DAFFC4 /* DOUMovieArray.m */,
);
path = Movie;
sourceTree = "<group>";
Expand Down Expand Up @@ -1829,6 +1847,8 @@
D88800BD166F5BF600DAFFC4 /* DOUAlbumArray.h in Headers */,
D88800C7166F5D4F00DAFFC4 /* DOUNote.h in Headers */,
D88800CF166F63B600DAFFC4 /* DOUNoteArray.h in Headers */,
D88800D7166F65CA00DAFFC4 /* DOUMovie.h in Headers */,
D88800DB166F65E400DAFFC4 /* DOUMovieArray.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -1929,6 +1949,7 @@
D87D4CC215C3F5580006FAFE /* PhotoArray.json in Resources */,
D89A2A5615ECA3360027C0B0 /* Event.json in Resources */,
D88800CA166F603F00DAFFC4 /* Note.json in Resources */,
D88800D2166F654100DAFFC4 /* MovieArray.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -2113,6 +2134,8 @@
D88800BE166F5BF600DAFFC4 /* DOUAlbumArray.m in Sources */,
D88800C8166F5D4F00DAFFC4 /* DOUNote.m in Sources */,
D88800D0166F63B600DAFFC4 /* DOUNoteArray.m in Sources */,
D88800D8166F65CA00DAFFC4 /* DOUMovie.m in Sources */,
D88800DC166F65E400DAFFC4 /* DOUMovieArray.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -2135,6 +2158,7 @@
D87D4CC715C3F56D0006FAFE /* DOUOnlineTests.m in Sources */,
D87D4CC815C3F56D0006FAFE /* DOUPhotoTests.m in Sources */,
D88800CC166F609300DAFFC4 /* DOUNoteTests.m in Sources */,
D88800D4166F65A200DAFFC4 /* DOUMovieTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
30 changes: 30 additions & 0 deletions DoubanAPIEngine/DoubanAPIEngine/Sources/Model2/Movie/DOUMovie.h
@@ -0,0 +1,30 @@
//
// DOUMovie.h
// DoubanAPIEngine
//
// Created by GUO Lin on 12/5/12.
// Copyright (c) 2012 Douban Inc. All rights reserved.
//

#import "DOUObject.h"

@interface DOUMovie : DOUObject

@property (nonatomic, copy) NSString *identifier;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *originalTitle;
@property (nonatomic, copy) NSString *rating;
@property (nonatomic, copy) NSString *stars;

@property (nonatomic, copy) NSString *publishTimeStr;
@property (nonatomic, retain) NSDate *publishTime;

@property (nonatomic, copy) NSString *largeImage;
@property (nonatomic, copy) NSString *smallImage;
@property (nonatomic, copy) NSString *mediumImage;

@property (nonatomic, assign) NSInteger wishCount;
@property (nonatomic, assign) NSInteger collectionCount;


@end
88 changes: 88 additions & 0 deletions DoubanAPIEngine/DoubanAPIEngine/Sources/Model2/Movie/DOUMovie.m
@@ -0,0 +1,88 @@
//
// DOUMovie.m
// DoubanAPIEngine
//
// Created by GUO Lin on 12/5/12.
// Copyright (c) 2012 Douban Inc. All rights reserved.
//

#import "DOUMovie.h"
#import "DOUObject+Utils.h"


@implementation DOUMovie

@dynamic identifier;
@dynamic title;
@dynamic originalTitle;
@dynamic stars;
@dynamic rating;

@dynamic publishTimeStr;
@dynamic publishTime;

@dynamic largeImage;
@dynamic smallImage;
@dynamic mediumImage;

@dynamic wishCount;
@dynamic collectionCount;


- (NSString *)identifier {
return [self.dictionary objectForKey:@"id"];
}

- (NSString *)originalTitle {
return [self.dictionary objectForKey:@"orignal_title"];
}

- (NSString *)title {
return [self.dictionary objectForKey:@"title"];
}


- (NSString *)stars {
return [self.dictionary objectForKey:@"stars"];
}


- (NSString *)rating {
return [self.dictionary objectForKey:@"rating"];
}


- (NSString *)publishTimeStr {
return [self.dictionary objectForKey:@"pubdate"];
}


- (NSDate *)publishTime {
return [[self class] dateOfString:self.publishTimeStr];
}


- (NSString *)largeImage {
return [[self.dictionary objectForKey:@"images"] objectForKey:@"large"];
}

- (NSString *)smallImage {
return [[self.dictionary objectForKey:@"images"] objectForKey:@"small"];
}

- (NSString *)mediumImage {
return [[self.dictionary objectForKey:@"images"] objectForKey:@"medium"];
}



- (NSInteger)wishCount {
return [[self.dictionary objectForKey:@"wish"] integerValue];
}

- (NSInteger)collectionCount {
return [[self.dictionary objectForKey:@"collection"] integerValue];
}


@end
@@ -0,0 +1,13 @@
//
// DOUMovieArray.h
// DoubanAPIEngine
//
// Created by GUO Lin on 12/5/12.
// Copyright (c) 2012 Douban Inc. All rights reserved.
//

#import "DOUObjectArray.h"

@interface DOUMovieArray : DOUObjectArray

@end
@@ -0,0 +1,23 @@
//
// DOUMovieArray.m
// DoubanAPIEngine
//
// Created by GUO Lin on 12/5/12.
// Copyright (c) 2012 Douban Inc. All rights reserved.
//

#import "DOUMovieArray.h"
#import "DOUMovie.h"

@implementation DOUMovieArray

+ (Class)objectClass {
return [DOUMovie class];
}

+ (NSString *)objectName {
return @"movies";
}


@end
49 changes: 49 additions & 0 deletions DoubanAPIEngine/DoubanAPIEngineTests/Model2/DOUMovieTests.m
@@ -0,0 +1,49 @@
//
// DOUCommentTests.m
// DoubanApiClient
//
// Created by Lin GUO on 5/19/12.
// Copyright (c) 2012 Douban Inc. All rights reserved.
//

#import <SenTestingKit/SenTestingKit.h>
#import "DOUMovie.h"
#import "DOUMovieArray.h"


@interface DOUMovieTests : SenTestCase

@end


@implementation DOUMovieTests

- (void)testMovieArray {
NSString *filePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"MovieArray" ofType:@"json"];
if (!filePath)
STAssertTrue(FALSE, @"path fail");

NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
DOUMovieArray *movies = [[DOUMovieArray alloc] initWithString:string];

STAssertTrue(movies.count == 20, @"count");
STAssertTrue(movies.start == 0, @"start");
STAssertTrue(movies.total == 1, @"total");
STAssertTrue([movies.objectArray count] == 1, @"objectArray");

for (DOUMovie *movie in movies.objectArray) {
if ([movie.identifier isEqualToString:@"20280228"]) {
STAssertTrue([movie.title isEqualToString:@"我们可以结婚吗"], @"title");
STAssertTrue([movie.originalTitle isEqualToString:@"우리가 결혼할 수 있을까"], @"title");
STAssertTrue([movie.rating isEqualToString:@"8.4"], @"rating");
STAssertTrue([movie.stars isEqualToString:@"45"], @"stars");
STAssertTrue([movie.publishTimeStr isEqualToString:@"2012-10-29"], @"publishdata");
STAssertTrue(movie.wishCount == 400, @"wish");
STAssertTrue(movie.collectionCount == 117, @"collection");

}
}

}

@end
@@ -0,0 +1,22 @@
{
"count": 20,
"start": 0,
"total": 1,
"movies": [
{
"rating": "8.4",
"stars": "45",
"pubdate": "2012-10-29",
"title": "我们可以结婚吗",
"images": {
"large": "http://img3.douban.com/lpic/s23130731.jpg",
"small": "http://img3.douban.com/lpic/s23130731.jpg",
"medium": "http://img3.douban.com/mpic/s23130731.jpg"
},
"wish": 400,
"id": "20280228",
"orignal_title": "우리가 결혼할 수 있을까",
"collection": 117
}
]
}

0 comments on commit 1aec00c

Please sign in to comment.