forked from loafle/openapi-generator-original
Allow generated code to do cleanup of object by preventing premature loop exit (#270)
This commit is contained in:
@@ -12,7 +12,7 @@ PetApiTests::~PetApiTests () {
|
||||
}
|
||||
|
||||
OAIPetApi* PetApiTests::getApi() {
|
||||
OAIPetApi* api = new OAIPetApi();
|
||||
auto api = new OAIPetApi();
|
||||
api->host = "http://petstore.swagger.io";
|
||||
api->basePath = "/v2";
|
||||
return api;
|
||||
@@ -21,10 +21,11 @@ OAIPetApi* PetApiTests::getApi() {
|
||||
OAIPet* PetApiTests::createRandomPet() {
|
||||
OAIPet* pet = new OAIPet();
|
||||
qint64 id = QDateTime::currentMSecsSinceEpoch();
|
||||
|
||||
pet->setName(new QString("monster"));
|
||||
pet->getName()->clear();
|
||||
pet->getName()->append(QString("monster"));
|
||||
pet->setId(id);
|
||||
pet->setStatus(new QString("freaky"));
|
||||
pet->getStatus()->clear();
|
||||
pet->getStatus()->append(QString("freaky"));
|
||||
|
||||
return pet;
|
||||
}
|
||||
@@ -38,46 +39,59 @@ void PetApiTests::runTests() {
|
||||
void PetApiTests::findPetsByStatusTest() {
|
||||
OAIPetApi* api = getApi();
|
||||
|
||||
static QEventLoop loop;
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = [](QList<OAIPet*>* pets) {
|
||||
auto validator = [this](QList<OAIPet*>* pets) {
|
||||
foreach(OAIPet* pet, *pets) {
|
||||
QVERIFY(pet->getStatus()->startsWith("available") || pet->getStatus()->startsWith("sold"));
|
||||
}
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
|
||||
connect(this, &PetApiTests::quit, finalizer);
|
||||
connect(api, &OAIPetApi::findPetsByStatusSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
QList<QString*>* status = new QList<QString*>();
|
||||
status->append(new QString("available"));
|
||||
status->append(new QString("sold"));
|
||||
auto available = new QString("available");
|
||||
auto sold = new QString("sold");
|
||||
status->append(available);
|
||||
status->append(sold);
|
||||
api->findPetsByStatus(status);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, 0,0,0);
|
||||
delete api;
|
||||
delete status;
|
||||
delete sold;
|
||||
delete available;
|
||||
}
|
||||
|
||||
void PetApiTests::createAndGetPetTest() {
|
||||
OAIPetApi* api = getApi();
|
||||
|
||||
static QEventLoop loop;
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = []() {
|
||||
auto validator = [this]() {
|
||||
// pet created
|
||||
loop.quit();
|
||||
emit quit();
|
||||
};
|
||||
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
connect(this, &PetApiTests::quit, finalizer);
|
||||
connect(api, &OAIPetApi::addPetSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
OAIPet* pet = createRandomPet();
|
||||
qint64 id = pet->getId();
|
||||
@@ -90,116 +104,46 @@ void PetApiTests::createAndGetPetTest() {
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto getPetValidator = [](OAIPet* pet) {
|
||||
auto getPetValidator = [this](OAIPet* pet) {
|
||||
QVERIFY(pet->getId() > 0);
|
||||
QVERIFY(pet->getStatus()->compare("freaky") == 0);
|
||||
loop.quit();
|
||||
emit quit();
|
||||
};
|
||||
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, getPetValidator);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, 0,0,0);
|
||||
delete api;
|
||||
delete pet;
|
||||
}
|
||||
|
||||
void PetApiTests::updatePetTest() {
|
||||
static OAIPetApi* api = getApi();
|
||||
|
||||
OAIPet* pet = createRandomPet();
|
||||
static OAIPet* petToCheck;
|
||||
qint64 id = pet->getId();
|
||||
static QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(100000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = []() {
|
||||
loop.quit();
|
||||
};
|
||||
|
||||
connect(api, &OAIPetApi::addPetSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
|
||||
// create pet
|
||||
api->addPet(*pet);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// fetch it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto fetchPet = [](OAIPet* pet) {
|
||||
petToCheck = pet;
|
||||
loop.quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
|
||||
// create pet
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// update it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
auto updatePetTest = []() {
|
||||
loop.quit();
|
||||
};
|
||||
|
||||
connect(api, &OAIPetApi::updatePetSignal, this, updatePetTest);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
|
||||
// update pet
|
||||
petToCheck->setStatus(new QString("scary"));
|
||||
api->updatePet(*petToCheck);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// check it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto fetchPet2 = [](OAIPet* pet) {
|
||||
QVERIFY(pet->getId() == petToCheck->getId());
|
||||
QVERIFY(pet->getStatus()->compare(petToCheck->getStatus()) == 0);
|
||||
loop.quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet2);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
}
|
||||
|
||||
void PetApiTests::updatePetWithFormTest() {
|
||||
static OAIPetApi* api = getApi();
|
||||
OAIPetApi* api = getApi();
|
||||
|
||||
OAIPet* pet = createRandomPet();
|
||||
OAIPet* petToCheck;
|
||||
qint64 id = pet->getId();
|
||||
static QEventLoop loop;
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
|
||||
// create pet
|
||||
timer.setInterval(1000);
|
||||
timer.setInterval(100000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = []() {
|
||||
auto validator = [this]() {
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
|
||||
connect(this, &PetApiTests::quit, finalizer);
|
||||
connect(api, &OAIPetApi::addPetSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
// create pet
|
||||
api->addPet(*pet);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
@@ -211,10 +155,92 @@ void PetApiTests::updatePetWithFormTest() {
|
||||
|
||||
auto fetchPet = [&](OAIPet* pet) {
|
||||
petToCheck = pet;
|
||||
loop.quit();
|
||||
emit quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
// create pet
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// update it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
auto updatePetTest = [this]() {
|
||||
emit quit();
|
||||
};
|
||||
|
||||
connect(api, &OAIPetApi::updatePetSignal, this, updatePetTest);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
// update pet
|
||||
petToCheck->getStatus()->clear();
|
||||
petToCheck->getStatus()->append(QString("scary"));
|
||||
api->updatePet(*petToCheck);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// check it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto fetchPet2 = [&](OAIPet* pet) {
|
||||
QVERIFY(pet->getId() == petToCheck->getId());
|
||||
QVERIFY(pet->getStatus()->compare(petToCheck->getStatus()) == 0);
|
||||
emit quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet2);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, 0,0,0);
|
||||
delete api;
|
||||
delete pet;
|
||||
}
|
||||
|
||||
void PetApiTests::updatePetWithFormTest() {
|
||||
OAIPetApi* api = getApi();
|
||||
|
||||
OAIPet* pet = createRandomPet();
|
||||
OAIPet* petToCheck;
|
||||
qint64 id = pet->getId();
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
|
||||
// create pet
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = [this ]() {
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
connect(this, &PetApiTests::quit, finalizer);
|
||||
connect(api, &OAIPetApi::addPetSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
api->addPet(*pet);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
|
||||
// fetch it
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto fetchPet = [&](OAIPet* pet) {
|
||||
petToCheck = pet;
|
||||
emit quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
@@ -225,10 +251,11 @@ void PetApiTests::updatePetWithFormTest() {
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
connect(api, &OAIPetApi::updatePetWithFormSignal, this, [](){loop.quit();});
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(api, &OAIPetApi::updatePetWithFormSignal, this, [this](){emit quit();});
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
api->updatePetWithForm(id, new QString("gorilla"), NULL);
|
||||
auto name = new QString("gorilla");
|
||||
api->updatePetWithForm(id, name, NULL);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
@@ -237,15 +264,19 @@ void PetApiTests::updatePetWithFormTest() {
|
||||
timer.setInterval(1000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto fetchUpdatedPet = [](OAIPet* pet) {
|
||||
auto fetchUpdatedPet = [this](OAIPet* pet) {
|
||||
QVERIFY(pet->getName()->compare(QString("gorilla")) == 0);
|
||||
loop.quit();
|
||||
emit quit();
|
||||
};
|
||||
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchUpdatedPet);
|
||||
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
api->getPetById(id);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, 0,0,0);
|
||||
delete api;
|
||||
delete pet;
|
||||
delete name;
|
||||
}
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QCoreApplication a(argc, argv);
|
||||
|
||||
PetApiTests::runTests();
|
||||
|
||||
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user