fix isBinary, CodegenParameter copy, add isBinary to php api client

This commit is contained in:
wing328 2016-01-15 00:20:36 +08:00
parent c7b9635e98
commit fee8acef97
5 changed files with 50 additions and 16 deletions

View File

@ -110,6 +110,7 @@ public class CodegenParameter {
output.allowableValues = new HashMap<String, Object>(this.allowableValues);
}
output.vendorExtensions = this.vendorExtensions;
output.isBinary = this.isBinary;
return output;
}

View File

@ -1329,6 +1329,7 @@ public class DefaultCodegen {
cookieParams.add(p.copy());
} else if (param instanceof BodyParameter) {
p.isBodyParam = new Boolean(true);
p.isBinary = p.dataType.toLowerCase().startsWith("byte");
bodyParam = p;
bodyParams.add(p.copy());
} else if (param instanceof FormParameter) {
@ -1422,7 +1423,7 @@ public class DefaultCodegen {
}
}
r.dataType = cm.datatype;
r.isBinary = cm.datatype.equals("byte[]");
r.isBinary = cm.datatype.toLowerCase().startsWith("byte");
if (cm.isContainer != null) {
r.simpleType = false;
r.containerType = cm.containerType;
@ -1567,12 +1568,7 @@ public class DefaultCodegen {
CodegenProperty cp = fromProperty("property", prop);
if (cp != null) {
p.dataType = cp.datatype;
if (p.dataType.equals("byte[]")) {
p.isBinary = true;
}
else {
p.isBinary = false;
}
p.isBinary = cp.datatype.toLowerCase().startsWith("byte");
}
}
} else if (model instanceof ArrayModel) {

View File

@ -188,7 +188,7 @@ use \{{invokerPackage}}\ObjectSerializer;
{{#bodyParams}}// body params
$_tempBody = null;
if (isset(${{paramName}})) {
$_tempBody = ${{paramName}};
{{^isBinary}}$_tempBody = ${{paramName}};{{/isBinary}}{{#isBinary}}$_tempBody = call_user_func_array('pack', array_merge(array('C*'), ${{paramName}}));{{/isBinary}}
}{{/bodyParams}}
// for model (json/xml)

View File

@ -1026,7 +1026,7 @@ class PetApi
// body params
$_tempBody = null;
if (isset($body)) {
$_tempBody = $body;
$_tempBody = call_user_func_array('pack', array_merge(array('C*'), $body));
}
// for model (json/xml)

View File

@ -204,26 +204,62 @@ class PetApiTest extends \PHPUnit_Framework_TestCase
$this->assertSame($response->getName(), 'update pet with form');
$this->assertSame($response->getStatus(), 'sold');
}
// test addPet and verify by the "id" and "name" of the response
public function testAddPetUsingByteArray()
public function testAddPet()
{
// initialize the API client
$config = (new Swagger\Client\Configuration())->setHost('http://petstore.swagger.io/v2');
$api_client = new Swagger\Client\ApiClient($config);
$new_pet_id = 10001;
$new_pet_id = 10005;
$new_pet = new Swagger\Client\Model\Pet;
$new_pet->setId($new_pet_id);
$new_pet->setName("PHP Unit Test");
$new_pet->setName("PHP Unit Test 2");
$pet_api = new Swagger\Client\Api\PetAPI($api_client);
// add a new pet (model)
$add_response = $pet_api->addPetUsingByteArray(unpack('C*', $new_pet));
$add_response = $pet_api->addPet($new_pet);
// return nothing (void)
$this->assertSame($add_response, NULL);
// verify added Pet
$response = $pet_api->getPetById($new_pet_id);
$this->assertSame($response->getId(), $new_pet_id);
$this->assertSame($response->getName(), 'PHP Unit Test');
$this->assertSame($response->getName(), 'PHP Unit Test 2');
}
// test addPetUsingByteArray and verify by the "id" and "name" of the response
public function testAddPetUsingByteArray()
{
// initialize the API client
$config = (new Swagger\Client\Configuration())->setHost('http://petstore.swagger.io/v2');
$api_client = new Swagger\Client\ApiClient($config);
$new_pet_id = 10005;
$new_pet = new Swagger\Client\Model\Pet;
$new_pet->setId($new_pet_id);
$new_pet->setName("PHP Unit Test 3");
// new tag
$tag= new Swagger\Client\Model\Tag;
$tag->setId($new_pet_id); // use the same id as pet
$tag->setName("test php tag");
// new category
$category = new Swagger\Client\Model\Category;
$category->setId($new_pet_id); // use the same id as pet
$category->setName("test php category");
$new_pet->setTags(array($tag));
$new_pet->setCategory($category);
$pet_api = new Swagger\Client\Api\PetAPI($api_client);
// add a new pet (model)
$object_serializer = new Swagger\Client\ObjectSerializer();
$pet_json_string = json_encode($object_serializer->sanitizeForSerialization($new_pet));
$add_response = $pet_api->addPetUsingByteArray(unpack('C*', $pet_json_string));
// return nothing (void)
$this->assertSame($add_response, NULL);
// verify added Pet
$response = $pet_api->getPetById($new_pet_id);
$this->assertSame($response->getId(), $new_pet_id);
$this->assertSame($response->getName(), 'PHP Unit Test 3');
}
@ -273,7 +309,8 @@ class PetApiTest extends \PHPUnit_Framework_TestCase
$this->assertInternalType("array", $bytes);
$this->assertSame($json['id'], $pet_id);
$this->assertSame($json['name'], 'PHP Unit Test');
// not testing name as it's tested by addPetUsingByteArray
//$this->assertSame($json['name'], 'PHP Unit Test');
$this->assertSame($json['category']['id'], $pet_id);
$this->assertSame($json['category']['name'], 'test php category');
$this->assertSame($json['tags'][0]['id'], $pet_id);