#include "PetApiTests.h" #include #include OAIPetApi* PetApiTests::getApi() { auto api = new OAIPetApi(); api->setHost("http://petstore.swagger.io"); return api; } OAIPet PetApiTests::createRandomPet() { OAIPet pet; qint64 id = QDateTime::currentMSecsSinceEpoch(); pet.setName("monster"); pet.setId(id); pet.setStatus("freaky"); return pet; } void PetApiTests::findPetsByStatusTest() { OAIPetApi* api = getApi(); QEventLoop loop; bool petFound = false; connect(api, &OAIPetApi::findPetsByStatusSignal, [&](QList pets) { petFound = true; foreach(OAIPet pet, pets) { QVERIFY(pet.getStatus().startsWith("available") || pet.getStatus().startsWith("sold")); } loop.quit(); }); api->findPetsByStatus({"available", "sold"}); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petFound, "didn't finish within timeout"); delete api; } void PetApiTests::createAndGetPetTest() { OAIPetApi* api = getApi(); QEventLoop loop; bool petCreated = false; connect(api, &OAIPetApi::addPetSignal, [&]() { // pet created petCreated = true; loop.quit(); }); OAIPet pet = createRandomPet(); qint64 id = pet.getId(); api->addPet(pet); QTimer::singleShot(14000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petCreated, "didn't finish within timeout"); bool petFetched = false; connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) { QVERIFY(pet.getId() > 0); QVERIFY(pet.getStatus().compare("freaky") == 0); loop.quit(); petFetched = true; }); api->getPetById(id); QTimer::singleShot(14000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petFetched, "didn't finish within timeout"); delete api; } void PetApiTests::updatePetTest() { OAIPetApi* api = getApi(); OAIPet pet = createRandomPet(); OAIPet petToCheck; qint64 id = pet.getId(); QEventLoop loop; bool petAdded = false; connect(api, &OAIPetApi::addPetSignal, [&](){ petAdded = true; loop.quit(); }); // create pet api->addPet(pet); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petAdded, "didn't finish within timeout"); // fetch it bool petFetched = false; connect(api, &OAIPetApi::getPetByIdSignal, this, [&](OAIPet pet) { petFetched = true; petToCheck = pet; loop.quit(); }); // create pet api->getPetById(id); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petFetched, "didn't finish within timeout"); // update it bool petUpdated = false; connect(api, &OAIPetApi::updatePetSignal, [&]() { petUpdated = true; loop.quit(); }); // update pet petToCheck.setStatus(QString("scary")); api->updatePet(petToCheck); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petUpdated, "didn't finish within timeout"); // check it bool petFetched2 = false; connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) { petFetched2 = true; QVERIFY(pet.getId() == petToCheck.getId()); QVERIFY(pet.getStatus().compare(petToCheck.getStatus()) == 0); loop.quit(); }); api->getPetById(id); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petFetched2, "didn't finish within timeout"); delete api; } void PetApiTests::updatePetWithFormTest() { OAIPetApi* api = getApi(); OAIPet pet = createRandomPet(); OAIPet petToCheck; qint64 id = pet.getId(); QEventLoop loop; // create pet bool petAdded = false; connect(api, &OAIPetApi::addPetSignal, [&](){ petAdded = true; loop.quit(); }); api->addPet(pet); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petAdded, "didn't finish within timeout"); // fetch it bool petFetched = false; connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) { petFetched = true; petToCheck = pet; loop.quit(); }); api->getPetById(id); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petFetched, "didn't finish within timeout"); // update it bool petUpdated = false; connect(api, &OAIPetApi::updatePetWithFormSignal, [&](){ petUpdated = true; loop.quit(); }); QString name("gorilla"); api->updatePetWithForm(id, name, nullptr); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petUpdated, "didn't finish within timeout"); // fetch it bool petUpdated2 = false; connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) { petUpdated2 = true; QVERIFY(pet.getName().compare(QString("gorilla")) == 0); loop.quit(); }); api->getPetById(id); QTimer::singleShot(5000, &loop, &QEventLoop::quit); loop.exec(); QVERIFY2(petUpdated2, "didn't finish within timeout"); delete api; }