Skip to content

Commit 2cdc5e4

Browse files
committed
* handle "description" property
* unit test
1 parent ec19f80 commit 2cdc5e4

File tree

4 files changed

+35
-5
lines changed

4 files changed

+35
-5
lines changed

JSONModel/JSONModel/JSONModel.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444

4545
#pragma mark - JSONModel implementation
4646
@implementation JSONModel
47+
{
48+
NSString* _description;
49+
}
4750

4851
#pragma mark - initialization methods
4952

@@ -1193,7 +1196,8 @@ -(NSString*)description
11931196
NSMutableString* text = [NSMutableString stringWithFormat:@"<%@> \n", [self class]];
11941197

11951198
for (JSONModelClassProperty *p in [self __properties__]) {
1196-
id value = [self valueForKey:p.name];
1199+
1200+
id value = ([p.name isEqualToString:@"description"])?self->_description:[self valueForKey:p.name];
11971201
NSString* valueDescription = (value)?[value description]:@"<nil>";
11981202

11991203
if (p.isStandardJSONType && ![value respondsToSelector:@selector(count)] && [valueDescription length]>60 && !p.convertsOnDemand) {

JSONModel/JSONModel/JSONModelClassProperty.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ @implementation JSONModelClassProperty
2121
-(NSString*)description
2222
{
2323
//build the properties string for the current class property
24-
NSMutableArray* properties = [NSMutableArray arrayWithCapacity:4];
24+
NSMutableArray* properties = [NSMutableArray arrayWithCapacity:8];
2525

2626
if (self.isIndex) [properties addObject:@"Index"];
2727
if (self.isOptional) [properties addObject:@"Optional"];

JSONModelDemoTests/UnitTests/SpecialPropertyNameTests.m

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99
#import "SpecialPropertyNameTests.h"
1010
#import "SpecialPropertyModel.h"
1111

12+
@interface DescModel : JSONModel
13+
@property (assign, nonatomic) int id;
14+
@property (strong, nonatomic) NSString* description;
15+
@end
16+
17+
@implementation DescModel
18+
@end
19+
1220
@implementation SpecialPropertyNameTests
1321

1422
- (void)testSpecialPropertyName
@@ -20,8 +28,20 @@ - (void)testSpecialPropertyName
2028

2129
NSError* err;
2230
SpecialPropertyModel *p = [[SpecialPropertyModel alloc] initWithString: jsonContents error:&err];
23-
JMLog(@"%@", p);
31+
2432
XCTAssertNotNil(p, @"Could not initialize model.");
2533
XCTAssertNil(err, "%@", [err localizedDescription]);
2634
}
35+
36+
-(void)testDescriptionProperty
37+
{
38+
NSString* json = @"{\"id\":10, \"description\":\"Marin\"}";
39+
DescModel* dm = [[DescModel alloc] initWithString:json error:nil];
40+
41+
XCTAssertNotNil(dm, @"Could not initialize model.");
42+
XCTAssertEqualObjects(dm.description, @"Marin", @"could not initialize description proeprty");
43+
NSDictionary* dict = dm.toDictionary;
44+
XCTAssertEqualObjects(dict[@"description"], @"Marin", @"could not export description proeprty");
45+
}
46+
2747
@end

JSONModelDemo_iOS/MasterViewController.m

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,22 +101,28 @@ @interface TopModel : JSONModel
101101
@property (assign, nonatomic, readonly) int rId;
102102
@property (nonatomic, copy) void(^userLocationCompleted)();
103103
@property (strong, nonatomic) NSDictionary* dict;
104+
@property (strong, nonatomic) NSString* description;
104105
@end
105106

106107
@implementation TopModel
107108
+(BOOL)propertyIsIgnored:(NSString *)propertyName
108109
{
109110
return NO;
110111
}
112+
-(NSString*)getText
113+
{
114+
return @"1123";
115+
}
111116
@end
112117

113118
@implementation MasterViewController
114119

115120
-(void)viewDidAppear:(BOOL)animated
116121
{
117-
NSString* json = @"{\"id\":1, \"answer\": {\"name1\":\"marin\"}, \"dict\":[]}";
122+
NSString* json = @"{\"id\":1, \"answer\": {\"name1\":\"marin\"}, \"dict\":[], \"description\":\"Marin\"}";
118123
TopModel* tm = [[TopModel alloc] initWithString:json error:nil];
119-
NSLog(@"tm: %@", tm);
124+
NSLog(@"tm: %@", tm.toDictionary);
125+
NSLog(@"to string: %@", tm.toJSONString);
120126
}
121127

122128
-(IBAction)actionLoadCall:(id)sender

0 commit comments

Comments
 (0)