diff --git a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache
index 54a1f127ef7..fce415ddcbf 100644
--- a/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache
+++ b/modules/swagger-codegen/src/main/resources/swift/Extensions.mustache
@@ -61,9 +61,10 @@ extension Dictionary: JSONEncodable {
private let dateFormatter: NSDateFormatter = {
- let dateFormatter = NSDateFormatter()
- dateFormatter.dateFormat = "yyyy-MM-dd"
- return dateFormatter
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+ fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX")
+ return fmt
}()
extension NSDate: JSONEncodable {
diff --git a/modules/swagger-codegen/src/main/resources/swift/_param.mustache b/modules/swagger-codegen/src/main/resources/swift/_param.mustache
new file mode 100644
index 00000000000..6d2de20a655
--- /dev/null
+++ b/modules/swagger-codegen/src/main/resources/swift/_param.mustache
@@ -0,0 +1 @@
+"{{baseName}}": {{paramName}}{{#isInteger}}{{^required}}?{{/required}}.encodeToJSON(){{/isInteger}}{{#isLong}}{{^required}}?{{/required}}.encodeToJSON(){{/isLong}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}.rawValue{{/isContainer}}{{/isEnum}}{{#isDate}}{{^required}}?{{/required}}.encodeToJSON(){{/isDate}}{{#isDateTime}}{{^required}}?{{/required}}.encodeToJSON(){{/isDateTime}}
\ No newline at end of file
diff --git a/modules/swagger-codegen/src/main/resources/swift/api.mustache b/modules/swagger-codegen/src/main/resources/swift/api.mustache
index 8a9dc9077e7..8698c5da4e7 100644
--- a/modules/swagger-codegen/src/main/resources/swift/api.mustache
+++ b/modules/swagger-codegen/src/main/resources/swift/api.mustache
@@ -89,9 +89,9 @@ public class {{classname}}: APIBase {
{{#bodyParam}}
let parameters = {{paramName}}{{^required}}?{{/required}}.encodeToJSON() as? [String:AnyObject]{{/bodyParam}}{{^bodyParam}}
let nillableParameters: [String:AnyObject?] = {{^queryParams}}{{^formParams}}[:]{{/formParams}}{{#formParams}}{{^secondaryParam}}[{{/secondaryParam}}
- "{{baseName}}": {{paramName}}{{#isInteger}}{{^required}}?{{/required}}.encodeToJSON(){{/isInteger}}{{#isLong}}{{^required}}?{{/required}}.encodeToJSON(){{/isLong}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
+ {{> _param}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
]{{/hasMore}}{{/formParams}}{{/queryParams}}{{#queryParams}}{{^secondaryParam}}[{{/secondaryParam}}
- "{{baseName}}": {{paramName}}{{#isInteger}}{{^required}}?{{/required}}.encodeToJSON(){{/isInteger}}{{#isLong}}{{^required}}?{{/required}}.encodeToJSON(){{/isLong}}{{#isEnum}}{{^isContainer}}{{^required}}?{{/required}}.rawValue{{/isContainer}}{{/isEnum}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
+ {{> _param}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
]{{/hasMore}}{{/queryParams}}
let parameters = APIHelper.rejectNil(nillableParameters){{/bodyParam}}
diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java
new file mode 100644
index 00000000000..eb2c18a40db
--- /dev/null
+++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/swift/SwiftModelTest.java
@@ -0,0 +1,66 @@
+package io.swagger.codegen.swift;
+
+import io.swagger.codegen.*;
+import io.swagger.codegen.languages.SwiftCodegen;
+import io.swagger.models.*;
+import io.swagger.models.properties.*;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+@SuppressWarnings("static-method")
+public class SwiftModelTest {
+
+ @Test(description = "convert a simple java model")
+ public void simpleModelTest() {
+ final Model model = new ModelImpl()
+ .description("a sample model")
+ .property("id", new LongProperty())
+ .property("name", new StringProperty())
+ .property("createdAt", new DateTimeProperty())
+ .required("id")
+ .required("name")
+ .discriminator("test");
+ final DefaultCodegen codegen = new SwiftCodegen();
+ final CodegenModel cm = codegen.fromModel("sample", model);
+
+ Assert.assertEquals(cm.name, "sample");
+ Assert.assertEquals(cm.classname, "Sample");
+ Assert.assertEquals(cm.description, "a sample model");
+ Assert.assertEquals(cm.vars.size(), 3);
+ Assert.assertEquals(cm.discriminator,"test");
+
+ final CodegenProperty property1 = cm.vars.get(0);
+ Assert.assertEquals(property1.baseName, "id");
+ Assert.assertEquals(property1.datatype, "Int64");
+ Assert.assertEquals(property1.name, "id");
+ Assert.assertNull(property1.defaultValue);
+ Assert.assertEquals(property1.baseType, "Int64");
+ Assert.assertTrue(property1.hasMore);
+ Assert.assertTrue(property1.required);
+ Assert.assertTrue(property1.isPrimitiveType);
+ Assert.assertTrue(property1.isNotContainer);
+
+ final CodegenProperty property2 = cm.vars.get(1);
+ Assert.assertEquals(property2.baseName, "name");
+ Assert.assertEquals(property2.datatype, "String");
+ Assert.assertEquals(property2.name, "name");
+ Assert.assertNull(property2.defaultValue);
+ Assert.assertEquals(property2.baseType, "String");
+ Assert.assertTrue(property2.hasMore);
+ Assert.assertTrue(property2.required);
+ Assert.assertTrue(property2.isPrimitiveType);
+ Assert.assertTrue(property2.isNotContainer);
+
+ final CodegenProperty property3 = cm.vars.get(2);
+ Assert.assertEquals(property3.baseName, "createdAt");
+ Assert.assertEquals(property3.datatype, "NSDate");
+ Assert.assertEquals(property3.name, "createdAt");
+ Assert.assertNull(property3.defaultValue);
+ Assert.assertEquals(property3.baseType, "NSDate");
+ Assert.assertNull(property3.hasMore);
+ Assert.assertNull(property3.required);
+ Assert.assertTrue(property3.isNotContainer);
+ }
+
+}
diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift
index cdbd4323e70..6e4ddc4227b 100644
--- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift
+++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/PetAPI.swift
@@ -108,13 +108,13 @@ public class PetAPI: APIBase {
- OAuth:
- type: oauth2
- name: petstore_auth
- - examples: [{example={
+ - examples: [{contentType=application/json, example={
"name" : "Puma",
"type" : "Dog",
"color" : "Black",
"gender" : "Female",
"breed" : "Mixed"
-}, contentType=application/json}]
+}}]
- parameter status: (query) Status values that need to be considered for filter (optional, default to available)
@@ -157,20 +157,20 @@ public class PetAPI: APIBase {
- OAuth:
- type: oauth2
- name: petstore_auth
- - examples: [{example=[ {
- "tags" : [ {
- "id" : 123456789,
- "name" : "aeiou"
- } ],
+ - examples: [{contentType=application/json, example=[ {
+ "photoUrls" : [ "aeiou" ],
+ "name" : "doggie",
"id" : 123456789,
"category" : {
- "id" : 123456789,
- "name" : "aeiou"
+ "name" : "aeiou",
+ "id" : 123456789
},
- "status" : "aeiou",
- "name" : "doggie",
- "photoUrls" : [ "aeiou" ]
-} ], contentType=application/json}, {example=
+ "tags" : [ {
+ "name" : "aeiou",
+ "id" : 123456789
+ } ],
+ "status" : "aeiou"
+} ]}, {contentType=application/xml, example=
123456
doggie
@@ -179,21 +179,21 @@ public class PetAPI: APIBase {
string
-, contentType=application/xml}]
- - examples: [{example=[ {
- "tags" : [ {
- "id" : 123456789,
- "name" : "aeiou"
- } ],
+}]
+ - examples: [{contentType=application/json, example=[ {
+ "photoUrls" : [ "aeiou" ],
+ "name" : "doggie",
"id" : 123456789,
"category" : {
- "id" : 123456789,
- "name" : "aeiou"
+ "name" : "aeiou",
+ "id" : 123456789
},
- "status" : "aeiou",
- "name" : "doggie",
- "photoUrls" : [ "aeiou" ]
-} ], contentType=application/json}, {example=
+ "tags" : [ {
+ "name" : "aeiou",
+ "id" : 123456789
+ } ],
+ "status" : "aeiou"
+} ]}, {contentType=application/xml, example=
123456
doggie
@@ -202,7 +202,7 @@ public class PetAPI: APIBase {
string
-, contentType=application/xml}]
+}]
- parameter tags: (query) Tags to filter by (optional)
@@ -242,26 +242,26 @@ public class PetAPI: APIBase {
Find pet by ID
- GET /pet/{petId}
- Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions
- - API Key:
- - type: apiKey api_key
- - name: api_key
- OAuth:
- type: oauth2
- name: petstore_auth
- - examples: [{example={
- "tags" : [ {
- "id" : 123456789,
- "name" : "aeiou"
- } ],
+ - API Key:
+ - type: apiKey api_key
+ - name: api_key
+ - examples: [{contentType=application/json, example={
+ "photoUrls" : [ "aeiou" ],
+ "name" : "doggie",
"id" : 123456789,
"category" : {
- "id" : 123456789,
- "name" : "aeiou"
+ "name" : "aeiou",
+ "id" : 123456789
},
- "status" : "aeiou",
- "name" : "doggie",
- "photoUrls" : [ "aeiou" ]
-}, contentType=application/json}, {example=
+ "tags" : [ {
+ "name" : "aeiou",
+ "id" : 123456789
+ } ],
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
doggie
@@ -270,21 +270,21 @@ public class PetAPI: APIBase {
string
-, contentType=application/xml}]
- - examples: [{example={
- "tags" : [ {
- "id" : 123456789,
- "name" : "aeiou"
- } ],
+}]
+ - examples: [{contentType=application/json, example={
+ "photoUrls" : [ "aeiou" ],
+ "name" : "doggie",
"id" : 123456789,
"category" : {
- "id" : 123456789,
- "name" : "aeiou"
+ "name" : "aeiou",
+ "id" : 123456789
},
- "status" : "aeiou",
- "name" : "doggie",
- "photoUrls" : [ "aeiou" ]
-}, contentType=application/json}, {example=
+ "tags" : [ {
+ "name" : "aeiou",
+ "id" : 123456789
+ } ],
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
doggie
@@ -293,7 +293,7 @@ public class PetAPI: APIBase {
string
-, contentType=application/xml}]
+}]
- parameter petId: (path) ID of pet that needs to be fetched
diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift
index 1c575eb79f8..c51d8d37357 100644
--- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift
+++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/StoreAPI.swift
@@ -67,12 +67,12 @@ public class StoreAPI: APIBase {
- API Key:
- type: apiKey api_key
- name: api_key
- - examples: [{example={
+ - examples: [{contentType=application/json, example={
"key" : 123
-}, contentType=application/json}, {example=not implemented io.swagger.models.properties.MapProperty@d1e580af, contentType=application/xml}]
- - examples: [{example={
+}}, {contentType=application/xml, example=not implemented io.swagger.models.properties.MapProperty@d1e580af}]
+ - examples: [{contentType=application/json, example={
"key" : 123
-}, contentType=application/json}, {example=not implemented io.swagger.models.properties.MapProperty@d1e580af, contentType=application/xml}]
+}}, {contentType=application/xml, example=not implemented io.swagger.models.properties.MapProperty@d1e580af}]
- returns: RequestBuilder<[String:Int32]>
*/
@@ -108,36 +108,36 @@ public class StoreAPI: APIBase {
Find purchase order by ID
- GET /store/order/{orderId}
- For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
- - examples: [{example={
- "id" : 123456789,
+ - examples: [{contentType=application/json, example={
"petId" : 123456789,
- "complete" : true,
- "status" : "aeiou",
"quantity" : 123,
- "shipDate" : "2000-01-23T04:56:07.000+00:00"
-}, contentType=application/json}, {example=
+ "id" : 123456789,
+ "shipDate" : "2000-01-23T04:56:07.000+00:00",
+ "complete" : true,
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
123456
0
2000-01-23T04:56:07.000Z
string
true
-, contentType=application/xml}]
- - examples: [{example={
- "id" : 123456789,
+}]
+ - examples: [{contentType=application/json, example={
"petId" : 123456789,
- "complete" : true,
- "status" : "aeiou",
"quantity" : 123,
- "shipDate" : "2000-01-23T04:56:07.000+00:00"
-}, contentType=application/json}, {example=
+ "id" : 123456789,
+ "shipDate" : "2000-01-23T04:56:07.000+00:00",
+ "complete" : true,
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
123456
0
2000-01-23T04:56:07.000Z
string
true
-, contentType=application/xml}]
+}]
- parameter orderId: (path) ID of pet that needs to be fetched
@@ -176,36 +176,36 @@ public class StoreAPI: APIBase {
Place an order for a pet
- POST /store/order
-
- - examples: [{example={
- "id" : 123456789,
+ - examples: [{contentType=application/json, example={
"petId" : 123456789,
- "complete" : true,
- "status" : "aeiou",
"quantity" : 123,
- "shipDate" : "2000-01-23T04:56:07.000+00:00"
-}, contentType=application/json}, {example=
+ "id" : 123456789,
+ "shipDate" : "2000-01-23T04:56:07.000+00:00",
+ "complete" : true,
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
123456
0
2000-01-23T04:56:07.000Z
string
true
-, contentType=application/xml}]
- - examples: [{example={
- "id" : 123456789,
+}]
+ - examples: [{contentType=application/json, example={
"petId" : 123456789,
- "complete" : true,
- "status" : "aeiou",
"quantity" : 123,
- "shipDate" : "2000-01-23T04:56:07.000+00:00"
-}, contentType=application/json}, {example=
+ "id" : 123456789,
+ "shipDate" : "2000-01-23T04:56:07.000+00:00",
+ "complete" : true,
+ "status" : "aeiou"
+}}, {contentType=application/xml, example=
123456
123456
0
2000-01-23T04:56:07.000Z
string
true
-, contentType=application/xml}]
+}]
- parameter body: (body) order placed for purchasing the pet (optional)
diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift
index a7497487f85..d6df7754683 100644
--- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift
+++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/APIs/UserAPI.swift
@@ -167,16 +167,16 @@ public class UserAPI: APIBase {
Get user by user name
- GET /user/{username}
-
- - examples: [{example={
- "id" : 123456789,
+ - examples: [{contentType=application/json, example={
+ "firstName" : "aeiou",
"lastName" : "aeiou",
+ "password" : "aeiou",
+ "userStatus" : 123,
"phone" : "aeiou",
- "username" : "aeiou",
+ "id" : 123456789,
"email" : "aeiou",
- "userStatus" : 123,
- "firstName" : "aeiou",
- "password" : "aeiou"
-}, contentType=application/json}, {example=
+ "username" : "aeiou"
+}}, {contentType=application/xml, example=
123456
string
string
@@ -185,17 +185,17 @@ public class UserAPI: APIBase {
string
string
0
-, contentType=application/xml}]
- - examples: [{example={
- "id" : 123456789,
+}]
+ - examples: [{contentType=application/json, example={
+ "firstName" : "aeiou",
"lastName" : "aeiou",
+ "password" : "aeiou",
+ "userStatus" : 123,
"phone" : "aeiou",
- "username" : "aeiou",
+ "id" : 123456789,
"email" : "aeiou",
- "userStatus" : 123,
- "firstName" : "aeiou",
- "password" : "aeiou"
-}, contentType=application/json}, {example=
+ "username" : "aeiou"
+}}, {contentType=application/xml, example=
123456
string
string
@@ -204,7 +204,7 @@ public class UserAPI: APIBase {
string
string
0
-, contentType=application/xml}]
+}]
- parameter username: (path) The name that needs to be fetched. Use user1 for testing.
@@ -244,8 +244,8 @@ public class UserAPI: APIBase {
Logs user into the system
- GET /user/login
-
- - examples: [{example="aeiou", contentType=application/json}, {example=string, contentType=application/xml}]
- - examples: [{example="aeiou", contentType=application/json}, {example=string, contentType=application/xml}]
+ - examples: [{contentType=application/json, example="aeiou"}, {contentType=application/xml, example=string}]
+ - examples: [{contentType=application/json, example="aeiou"}, {contentType=application/xml, example=string}]
- parameter username: (query) The user name for login (optional)
- parameter password: (query) The password for login in clear text (optional)
diff --git a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift
index fed87969388..786e3218c80 100644
--- a/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift
+++ b/samples/client/petstore/swift/default/PetstoreClient/Classes/Swaggers/Extensions.swift
@@ -60,9 +60,10 @@ extension Dictionary: JSONEncodable {
private let dateFormatter: NSDateFormatter = {
- let dateFormatter = NSDateFormatter()
- dateFormatter.dateFormat = "yyyy-MM-dd"
- return dateFormatter
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+ fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX")
+ return fmt
}()
extension NSDate: JSONEncodable {
diff --git a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Manifest.lock b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Manifest.lock
index b369a60a1bb..ce1490e954e 100644
--- a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Manifest.lock
+++ b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Manifest.lock
@@ -16,4 +16,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 84472aca2a88b7f7ed9fcd63e9f5fdb5ad4aab94
-COCOAPODS: 1.0.0
+COCOAPODS: 1.0.1
diff --git a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
index e768f92993e..0a1561528cb 100755
--- a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
+++ b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
@@ -48,8 +48,8 @@ EOM
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
- echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
- ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
diff --git a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
index e768f92993e..0a1561528cb 100755
--- a/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
+++ b/samples/client/petstore/swift/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
@@ -48,8 +48,8 @@ EOM
ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.xib)
- echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT}"
- ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}"
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
;;
*.framework)
echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
diff --git a/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
index 3d557a9280f..0eec9dcf8c6 100644
--- a/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
+++ b/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -143,12 +143,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
buildPhases = (
- 1F03F780DC2D9727E5E64BA9 /* 📦 Check Pods Manifest.lock */,
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */,
6D4EFB8D1C692C6300B96B06 /* Sources */,
6D4EFB8E1C692C6300B96B06 /* Frameworks */,
6D4EFB8F1C692C6300B96B06 /* Resources */,
- 4485A75250058E2D5BBDF63F /* 📦 Embed Pods Frameworks */,
- 808CE4A0CE801CAC5ABF5B08 /* 📦 Copy Pods Resources */,
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */,
+ 808CE4A0CE801CAC5ABF5B08 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -163,12 +163,12 @@
isa = PBXNativeTarget;
buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
buildPhases = (
- 79FE27B09B2DD354C831BD49 /* 📦 Check Pods Manifest.lock */,
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */,
6D4EFBA11C692C6300B96B06 /* Sources */,
6D4EFBA21C692C6300B96B06 /* Frameworks */,
6D4EFBA31C692C6300B96B06 /* Resources */,
- 796EAD48F1BCCDAA291CD963 /* 📦 Embed Pods Frameworks */,
- 1652CB1A246A4689869E442D /* 📦 Copy Pods Resources */,
+ 796EAD48F1BCCDAA291CD963 /* [CP] Embed Pods Frameworks */,
+ 1652CB1A246A4689869E442D /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -239,14 +239,14 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 1652CB1A246A4689869E442D /* 📦 Copy Pods Resources */ = {
+ 1652CB1A246A4689869E442D /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Copy Pods Resources";
+ name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
@@ -254,14 +254,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
- 1F03F780DC2D9727E5E64BA9 /* 📦 Check Pods Manifest.lock */ = {
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Check Pods Manifest.lock";
+ name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
@@ -269,14 +269,14 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
- 4485A75250058E2D5BBDF63F /* 📦 Embed Pods Frameworks */ = {
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Embed Pods Frameworks";
+ name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
@@ -284,14 +284,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- 796EAD48F1BCCDAA291CD963 /* 📦 Embed Pods Frameworks */ = {
+ 796EAD48F1BCCDAA291CD963 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Embed Pods Frameworks";
+ name = "[CP] Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
@@ -299,14 +299,14 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- 79FE27B09B2DD354C831BD49 /* 📦 Check Pods Manifest.lock */ = {
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Check Pods Manifest.lock";
+ name = "[CP] Check Pods Manifest.lock";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
@@ -314,14 +314,14 @@
shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
- 808CE4A0CE801CAC5ABF5B08 /* 📦 Copy Pods Resources */ = {
+ 808CE4A0CE801CAC5ABF5B08 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
- name = "📦 Copy Pods Resources";
+ name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
index 68232d063d1..679285394d0 100644
--- a/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
+++ b/samples/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -11,34 +11,27 @@ import XCTest
@testable import SwaggerClient
class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
let testTimeout = 10.0
- override func setUp() {
- super.setUp()
- // Put setup code here. This method is called before the invocation of each test method in the class.
- }
-
- override func tearDown() {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- super.tearDown()
- }
-
func test1PlaceOrder() {
let expectation = self.expectationWithDescription("testPlaceOrder")
+ let shipDate = NSDate()
let newOrder = Order()
newOrder.id = 1000
newOrder.petId = 1000
newOrder.complete = false
newOrder.quantity = 10
- newOrder.shipDate = NSDate()
+ newOrder.shipDate = shipDate
// use explicit naming to reference the enum so that we test we don't regress on enum naming
newOrder.status = Order.Status.Placed
StoreAPI.placeOrder(body: newOrder) { (order, error) in
guard error == nil else {
- XCTFail("error placing order")
+ XCTFail("error placing order: \(error.debugDescription)")
return
}
@@ -46,6 +39,8 @@ class StoreAPITests: XCTestCase {
XCTAssert(order.id == 1000, "invalid id")
XCTAssert(order.quantity == 10, "invalid quantity")
XCTAssert(order.status == .Placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
expectation.fulfill()
}
@@ -59,7 +54,7 @@ class StoreAPITests: XCTestCase {
StoreAPI.getOrderById(orderId: "1000") { (order, error) in
guard error == nil else {
- XCTFail("error retrieving order")
+ XCTFail("error retrieving order: \(error.debugDescription)")
return
}
@@ -96,3 +91,21 @@ class StoreAPITests: XCTestCase {
}
}
+
+private extension NSDate {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(date: NSDate, format: String) -> Bool {
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = format
+ return fmt.stringFromDate(self).isEqual(fmt.stringFromDate(date))
+ }
+
+}
diff --git a/samples/client/petstore/swift/promisekit/PetstoreClient/Classes/Swaggers/Extensions.swift b/samples/client/petstore/swift/promisekit/PetstoreClient/Classes/Swaggers/Extensions.swift
index 62d374eed05..2a032d561b1 100644
--- a/samples/client/petstore/swift/promisekit/PetstoreClient/Classes/Swaggers/Extensions.swift
+++ b/samples/client/petstore/swift/promisekit/PetstoreClient/Classes/Swaggers/Extensions.swift
@@ -61,9 +61,10 @@ extension Dictionary: JSONEncodable {
private let dateFormatter: NSDateFormatter = {
- let dateFormatter = NSDateFormatter()
- dateFormatter.dateFormat = "yyyy-MM-dd"
- return dateFormatter
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+ fmt.locale = NSLocale(localeIdentifier: "en_US_POSIX")
+ return fmt
}()
extension NSDate: JSONEncodable {
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/samples/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
index b52fe4a0fa8..210868dfb12 100644
--- a/samples/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
+++ b/samples/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -12,26 +12,19 @@ import XCTest
@testable import SwaggerClient
class StoreAPITests: XCTestCase {
-
- let testTimeout = 10.0
- override func setUp() {
- super.setUp()
- // Put setup code here. This method is called before the invocation of each test method in the class.
- }
-
- override func tearDown() {
- // Put teardown code here. This method is called after the invocation of each test method in the class.
- super.tearDown()
- }
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
func test1PlaceOrder() {
let order = Order()
+ let shipDate = NSDate()
order.id = 1000
order.petId = 1000
order.complete = false
order.quantity = 10
- order.shipDate = NSDate()
+ order.shipDate = shipDate
// use explicit naming to reference the enum so that we test we don't regress on enum naming
order.status = Order.Status.Placed
let expectation = self.expectationWithDescription("testPlaceOrder")
@@ -39,6 +32,9 @@ class StoreAPITests: XCTestCase {
XCTAssert(order.id == 1000, "invalid id")
XCTAssert(order.quantity == 10, "invalid quantity")
XCTAssert(order.status == .Placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
expectation.fulfill()
}.always {
// Noop for now
@@ -86,3 +82,21 @@ class StoreAPITests: XCTestCase {
}
}
+
+private extension NSDate {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(date: NSDate, format: String) -> Bool {
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = format
+ return fmt.stringFromDate(self).isEqual(fmt.stringFromDate(date))
+ }
+
+}