forked from loafle/openapi-generator-original
Update objc client.
* Add test cases for deserialization. * Pretty print model infomation.
This commit is contained in:
parent
37dbd6e4cd
commit
f9ad16e7aa
@ -3,7 +3,7 @@
|
||||
#import "{{classname}}.h"
|
||||
|
||||
@implementation {{classname}}
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ {{#vars}}@"{{baseName}}": @"{{name}}"{{#hasMore}}, {{/hasMore}}{{/vars}} }];
|
||||
@ -21,6 +21,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
{{/model}}
|
||||
@end
|
||||
{{/models}}
|
||||
|
@ -1,7 +1,7 @@
|
||||
#import "SWGCategory.h"
|
||||
|
||||
@implementation SWGCategory
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"name": @"name" }];
|
||||
@ -19,4 +19,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1,7 +1,7 @@
|
||||
#import "SWGOrder.h"
|
||||
|
||||
@implementation SWGOrder
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"petId": @"petId", @"quantity": @"quantity", @"shipDate": @"shipDate", @"status": @"status", @"complete": @"complete" }];
|
||||
@ -19,4 +19,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1,7 +1,7 @@
|
||||
#import "SWGPet.h"
|
||||
|
||||
@implementation SWGPet
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"category": @"category", @"name": @"name", @"photoUrls": @"photoUrls", @"tags": @"tags", @"status": @"status" }];
|
||||
@ -19,4 +19,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1,7 +1,7 @@
|
||||
#import "SWGTag.h"
|
||||
|
||||
@implementation SWGTag
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"name": @"name" }];
|
||||
@ -19,4 +19,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1,7 +1,7 @@
|
||||
#import "SWGUser.h"
|
||||
|
||||
@implementation SWGUser
|
||||
|
||||
|
||||
+ (JSONKeyMapper *)keyMapper
|
||||
{
|
||||
return [[JSONKeyMapper alloc] initWithDictionary:@{ @"id": @"_id", @"username": @"username", @"firstName": @"firstName", @"lastName": @"lastName", @"email": @"email", @"password": @"password", @"phone": @"phone", @"userStatus": @"userStatus" }];
|
||||
@ -19,4 +19,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
return [[self toDictionary] description];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -23,6 +23,8 @@
|
||||
6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
|
||||
873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
|
||||
94BE6BE84795B5034A811E61 /* libPods-SwaggerClient_Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D46325ECAD48245C07F6733 /* libPods-SwaggerClient_Example.a */; };
|
||||
CF0ADB481B5F95D6008A2729 /* PetTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF0ADB471B5F95D6008A2729 /* PetTest.m */; };
|
||||
CF8F71391B5F73AC00162980 /* DeserializationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8F71381B5F73AC00162980 /* DeserializationTest.m */; };
|
||||
CFDFB4121B3CFFA8009739C5 /* UserApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */; };
|
||||
CFDFB4131B3CFFDD009739C5 /* PetApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */; };
|
||||
CFDFB4141B3CFFF6009739C5 /* StoreApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */; };
|
||||
@ -65,6 +67,8 @@
|
||||
873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||
8D46325ECAD48245C07F6733 /* libPods-SwaggerClient_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SwaggerClient_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BFB4BE760737508B3CFC23B2 /* Pods-SwaggerClient_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig"; sourceTree = "<group>"; };
|
||||
CF0ADB471B5F95D6008A2729 /* PetTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PetTest.m; sourceTree = "<group>"; };
|
||||
CF8F71381B5F73AC00162980 /* DeserializationTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeserializationTest.m; sourceTree = "<group>"; };
|
||||
CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PetApiTest.m; sourceTree = "<group>"; };
|
||||
CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreApiTest.m; sourceTree = "<group>"; };
|
||||
CFDFB40C1B3CFEC3009739C5 /* SWGApiClientTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiClientTest.m; sourceTree = "<group>"; };
|
||||
@ -166,6 +170,8 @@
|
||||
CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */,
|
||||
CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */,
|
||||
CFDFB40C1B3CFEC3009739C5 /* SWGApiClientTest.m */,
|
||||
CF0ADB471B5F95D6008A2729 /* PetTest.m */,
|
||||
CF8F71381B5F73AC00162980 /* DeserializationTest.m */,
|
||||
CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */,
|
||||
6003F5BB195388D20070C39A /* Tests.m */,
|
||||
6003F5B6195388D20070C39A /* Supporting Files */,
|
||||
@ -374,10 +380,12 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CFDFB4141B3CFFF6009739C5 /* StoreApiTest.m in Sources */,
|
||||
CF0ADB481B5F95D6008A2729 /* PetTest.m in Sources */,
|
||||
CFDFB4131B3CFFDD009739C5 /* PetApiTest.m in Sources */,
|
||||
6003F5BC195388D20070C39A /* Tests.m in Sources */,
|
||||
CFDFB4151B3D000B009739C5 /* SWGApiClientTest.m in Sources */,
|
||||
CFDFB4121B3CFFA8009739C5 /* UserApiTest.m in Sources */,
|
||||
CF8F71391B5F73AC00162980 /* DeserializationTest.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -7,6 +7,7 @@
|
||||
//
|
||||
|
||||
#import "SWGViewController.h"
|
||||
#import <SwaggerClient/SWGPet.h>
|
||||
|
||||
@interface SWGViewController ()
|
||||
|
||||
@ -17,13 +18,38 @@
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view, typically from a nib.
|
||||
SWGPet *pet = [self createPet];
|
||||
NSLog(@"%@", pet);
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
- (SWGPet*) createPet {
|
||||
SWGPet * pet = [[SWGPet alloc] init];
|
||||
pet._id = [[NSNumber alloc] initWithLong:[[NSDate date] timeIntervalSince1970]];
|
||||
pet.name = @"monkey";
|
||||
|
||||
SWGCategory * category = [[SWGCategory alloc] init];
|
||||
category._id = [[NSNumber alloc] initWithInteger:arc4random_uniform(100000)];
|
||||
category.name = @"super-happy";
|
||||
pet.category = category;
|
||||
|
||||
SWGTag *tag1 = [[SWGTag alloc] init];
|
||||
tag1._id = [[NSNumber alloc] initWithInteger:arc4random_uniform(100000)];
|
||||
tag1.name = @"test tag 1";
|
||||
SWGTag *tag2 = [[SWGTag alloc] init];
|
||||
tag2._id = [[NSNumber alloc] initWithInteger:arc4random_uniform(100000)];
|
||||
tag2.name = @"test tag 2";
|
||||
pet.tags = (NSArray<SWGTag> *)[[NSArray alloc] initWithObjects:tag1, tag2, nil];
|
||||
|
||||
pet.status = @"available";
|
||||
|
||||
NSArray * photos = [[NSArray alloc] initWithObjects:@"http://foo.bar.com/3", @"http://foo.bar.com/4", nil];
|
||||
pet.photoUrls = photos;
|
||||
return pet;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -0,0 +1,119 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <SwaggerClient/SWGApiClient.h>
|
||||
#import <SwaggerClient/SWGPet.h>
|
||||
|
||||
@interface DeserializationTest : XCTestCase {
|
||||
|
||||
@private SWGApiClient *apiClient;
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation DeserializationTest
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
apiClient = [[SWGApiClient alloc] init];
|
||||
}
|
||||
|
||||
- (void)testDeserializeDate {
|
||||
NSString *dateStr = @"2012-09-27";
|
||||
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
||||
NSTimeZone *timezone = [NSTimeZone timeZoneWithName:@"UTC"];
|
||||
[formatter setTimeZone:timezone];
|
||||
[formatter setDateFormat:@"yyyy-MM-dd"];
|
||||
NSDate *date = [formatter dateFromString:dateStr];
|
||||
|
||||
NSDate *deserializedDate = [apiClient deserialize:dateStr class:@"NSDate*"];
|
||||
|
||||
XCTAssertEqualWithAccuracy([date timeIntervalSinceReferenceDate], [deserializedDate timeIntervalSinceReferenceDate], 0.001);
|
||||
}
|
||||
|
||||
- (void)testDeserializeDateTime {
|
||||
NSString *dateTimeStr = @"1997-07-16T19:20:30+00:00";
|
||||
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
||||
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
|
||||
NSDate *dateTime = [formatter dateFromString:dateTimeStr];
|
||||
|
||||
NSDate *deserializedDateTime = [apiClient deserialize:dateTimeStr class:@"NSDate*"];
|
||||
|
||||
XCTAssertEqualWithAccuracy([dateTime timeIntervalSinceReferenceDate], [deserializedDateTime timeIntervalSinceReferenceDate], 0.001);
|
||||
}
|
||||
|
||||
- (void)testDeserializeObject {
|
||||
XCTAssertTrue([[apiClient deserialize:@"" class:@"NSObject*"] isKindOfClass:[NSObject class]]);
|
||||
}
|
||||
|
||||
- (void)testDeserializeString {
|
||||
NSString *data = @"test string";
|
||||
NSString *result = [apiClient deserialize:data class:@"NSString*"];
|
||||
|
||||
XCTAssertTrue([result isEqualToString:data]);
|
||||
}
|
||||
|
||||
- (void)testDeserializeListOfModels {
|
||||
NSArray *data =
|
||||
@[
|
||||
@{
|
||||
@"id": @119,
|
||||
@"category": @{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
},
|
||||
@"name": @"doggie",
|
||||
@"photoUrls": @[
|
||||
@"string"
|
||||
],
|
||||
@"tags": @[
|
||||
@{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
}
|
||||
],
|
||||
@"status": @"available"
|
||||
|
||||
}];
|
||||
|
||||
NSArray *result = [apiClient deserialize:data class:@"NSArray<SWGPet>*"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSArray class]]);
|
||||
XCTAssertTrue([[result firstObject] isKindOfClass:[SWGPet class]]);
|
||||
XCTAssertEqualObjects([[result firstObject] _id], @119);
|
||||
}
|
||||
|
||||
- (void)testDeserializeMapOfModels {
|
||||
NSDictionary *data =
|
||||
@{
|
||||
@"pet": @{
|
||||
@"id": @119,
|
||||
@"category": @{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
},
|
||||
@"name": @"doggie",
|
||||
@"photoUrls": @[
|
||||
@"string"
|
||||
],
|
||||
@"tags": @[
|
||||
@{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
}
|
||||
],
|
||||
@"status": @"available"
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
NSDictionary *result = [apiClient deserialize:data class:@"NSDictionary* /* NSString, SWGPet */"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSDictionary class]]);
|
||||
XCTAssertTrue([result[@"pet"] isKindOfClass:[SWGPet class]]);
|
||||
XCTAssertEqualObjects([result[@"pet"] _id], @119);
|
||||
}
|
||||
|
||||
@end
|
@ -0,0 +1,37 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
#import <SwaggerClient/SWGPet.h>
|
||||
|
||||
@interface PetTest : XCTestCase {
|
||||
|
||||
@private SWGPet *pet;
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation PetTest
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
|
||||
NSDictionary *petDict = @{ @"id": @1, @"name": @"test pet",
|
||||
@"status": @"sold",
|
||||
@"photoUrls": @[@"string"],
|
||||
@"category": @{ @"id": @1, @"name": @"test category" },
|
||||
@"tags": @[ @{ @"id": @1, @"name": @"test tag" } ]};
|
||||
pet = [[SWGPet alloc] initWithDictionary:petDict error:nil];
|
||||
}
|
||||
|
||||
- (void)testDescription {
|
||||
NSDictionary *petDict = @{ @"id": @1, @"name": @"test pet",
|
||||
@"status": @"sold",
|
||||
@"photoUrls": @[@"string"],
|
||||
@"category": @{ @"id": @1, @"name": @"test category" },
|
||||
@"tags": @[ @{ @"id": @1, @"name": @"test tag" } ]};
|
||||
NSString *petStr = [petDict description];
|
||||
|
||||
XCTAssertTrue([[pet description] isEqualToString:petStr]);
|
||||
}
|
||||
|
||||
@end
|
@ -98,77 +98,4 @@
|
||||
XCTAssertEqualObjects(basicAuthCredentials, [config getBasicAuthToken]);
|
||||
}
|
||||
|
||||
- (void)testDeserialize {
|
||||
id data;
|
||||
id result;
|
||||
|
||||
// list of models
|
||||
data =
|
||||
@[
|
||||
@{
|
||||
@"id": @119,
|
||||
@"category": @{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
},
|
||||
@"name": @"doggie",
|
||||
@"photoUrls": @[
|
||||
@"string"
|
||||
],
|
||||
@"tags": @[
|
||||
@{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
}
|
||||
],
|
||||
@"status": @"available"
|
||||
|
||||
}];
|
||||
result = [self.apiClient deserialize:data class:@"NSArray<SWGPet>*"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSArray class]]);
|
||||
XCTAssertTrue([[result firstObject] isKindOfClass:[SWGPet class]]);
|
||||
XCTAssertEqualObjects([[result firstObject] _id], @119);
|
||||
|
||||
// map of models
|
||||
data =
|
||||
@{
|
||||
@"pet": @{
|
||||
@"id": @119,
|
||||
@"category": @{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
},
|
||||
@"name": @"doggie",
|
||||
@"photoUrls": @[
|
||||
@"string"
|
||||
],
|
||||
@"tags": @[
|
||||
@{
|
||||
@"id": @0,
|
||||
@"name": @"string"
|
||||
}
|
||||
],
|
||||
@"status": @"available"
|
||||
|
||||
}
|
||||
};
|
||||
result = [self.apiClient deserialize:data class:@"NSDictionary* /* NSString, SWGPet */"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSDictionary class]]);
|
||||
XCTAssertTrue([result[@"pet"] isKindOfClass:[SWGPet class]]);
|
||||
XCTAssertEqualObjects([result[@"pet"] _id], @119);
|
||||
|
||||
// pure object
|
||||
result = [self.apiClient deserialize:@"" class:@"NSObject*"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSObject class]]);
|
||||
|
||||
// NSString
|
||||
data = @"test string";
|
||||
result = [self.apiClient deserialize:data class:@"NSString*"];
|
||||
|
||||
XCTAssertTrue([result isKindOfClass:[NSString class]]);
|
||||
}
|
||||
|
||||
@end
|
||||
|
Loading…
x
Reference in New Issue
Block a user