Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cpp-qt5-client: Improve tests #3667

Merged
merged 1 commit into from
Aug 19, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
237 changes: 85 additions & 152 deletions samples/client/petstore/cpp-qt5/PetStore/PetApiTests.cpp
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
#include "PetApiTests.h"

#include <QJsonDocument>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QDebug>

PetApiTests::PetApiTests () {}

PetApiTests::~PetApiTests () {

}
#include <QTest>
#include <QTimer>

OAIPetApi* PetApiTests::getApi() {
auto api = new OAIPetApi();
Expand All @@ -20,96 +12,65 @@ OAIPetApi* PetApiTests::getApi() {
OAIPet PetApiTests::createRandomPet() {
OAIPet pet;
qint64 id = QDateTime::currentMSecsSinceEpoch();
pet.setName(QString("monster"));
pet.setName("monster");
pet.setId(id);
pet.setStatus(QString("freaky"));
pet.setStatus("freaky");
return pet;
}

void PetApiTests::runTests() {
PetApiTests* tests = new PetApiTests();
QTest::qExec(tests);
delete tests;
}

void PetApiTests::findPetsByStatusTest() {
OAIPetApi* api = getApi();
QEventLoop loop;
QTimer timer;
timer.setInterval(14000);
timer.setSingleShot(true);
bool petFound = false;

auto validator = [this](QList<OAIPet> pets) {
connect(api, &OAIPetApi::findPetsByStatusSignal, [&](QList<OAIPet> pets) {
petFound = true;
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, finalizer);

QList<QString> status;
QString available("available");
QString sold("sold");
status.append(available);
status.append(sold);
api->findPetsByStatus(status);
timer.start();
});

api->findPetsByStatus({"available", "sold"});
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
QVERIFY2(petFound, "didn't finish within timeout");
delete api;
}

void PetApiTests::createAndGetPetTest() {
OAIPetApi* api = getApi();

QEventLoop loop;
QTimer timer;
timer.setInterval(14000);
timer.setSingleShot(true);
bool petCreated = false;

auto validator = [this]() {
connect(api, &OAIPetApi::addPetSignal, [&]() {
// pet created
emit quit();
};

auto finalizer = [&]() {
petCreated = true;
loop.quit();
};
connect(this, &PetApiTests::quit, finalizer);
connect(api, &OAIPetApi::addPetSignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
});

OAIPet pet = createRandomPet();
qint64 id = pet.getId();

api->addPet(pet);
timer.start();
QTimer::singleShot(14000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petCreated, "didn't finish within timeout");

timer.setInterval(1000);
timer.setSingleShot(true);
bool petFetched = false;

auto getPetValidator = [this](OAIPet pet) {
connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) {
QVERIFY(pet.getId() > 0);
QVERIFY(pet.getStatus().compare("freaky") == 0);
emit quit();
};

connect(api, &OAIPetApi::getPetByIdSignal, this, getPetValidator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
loop.quit();
petFetched = true;
});

api->getPetById(id);
timer.start();
QTimer::singleShot(14000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
QVERIFY2(petFetched, "didn't finish within timeout");

delete api;
}

Expand All @@ -120,76 +81,61 @@ void PetApiTests::updatePetTest() {
OAIPet petToCheck;
qint64 id = pet.getId();
QEventLoop loop;
QTimer timer;
timer.setInterval(100000);
timer.setSingleShot(true);

auto validator = [this]() {
emit quit();
};
auto finalizer = [&]() {
bool petAdded = false;

connect(api, &OAIPetApi::addPetSignal, [&](){
petAdded = true;
loop.quit();
};
connect(this, &PetApiTests::quit, finalizer);
connect(api, &OAIPetApi::addPetSignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
});

// create pet
api->addPet(pet);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petAdded, "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);
bool petFetched = false;
connect(api, &OAIPetApi::getPetByIdSignal, this, [&](OAIPet pet) {
petFetched = true;
petToCheck = pet;
loop.quit();
});

// create pet
api->getPetById(id);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petFetched, "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);
bool petUpdated = false;
connect(api, &OAIPetApi::updatePetSignal, [&]() {
petUpdated = true;
loop.quit();
});

// update pet
petToCheck.setStatus(QString("scary"));
api->updatePet(petToCheck);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petUpdated, "didn't finish within timeout");

// check it
timer.setInterval(1000);
timer.setSingleShot(true);

auto fetchPet2 = [&](OAIPet pet) {
bool petFetched2 = false;
connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) {
petFetched2 = true;
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);
loop.quit();
});
api->getPetById(id);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
QVERIFY2(petFetched2, "didn't finish within timeout");

delete api;
}

Expand All @@ -200,70 +146,57 @@ void PetApiTests::updatePetWithFormTest() {
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 = [&]() {
bool petAdded = false;
connect(api, &OAIPetApi::addPetSignal, [&](){
petAdded = true;
loop.quit();
};
connect(this, &PetApiTests::quit, finalizer);
connect(api, &OAIPetApi::addPetSignal, this, validator);
connect(&timer, &QTimer::timeout, &loop, finalizer);
});

api->addPet(pet);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petAdded, "didn't finish within timeout");

// fetch it
timer.setInterval(1000);
timer.setSingleShot(true);

auto fetchPet = [&](OAIPet pet) {
bool petFetched = false;
connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) {
petFetched = true;
petToCheck = pet;
emit quit();
};
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchPet);
connect(&timer, &QTimer::timeout, &loop, finalizer);
loop.quit();
});

api->getPetById(id);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petFetched, "didn't finish within timeout");

// update it
timer.setInterval(1000);
timer.setSingleShot(true);

connect(api, &OAIPetApi::updatePetWithFormSignal, this, [this](){emit quit();});
connect(&timer, &QTimer::timeout, &loop, finalizer);
bool petUpdated = false;
connect(api, &OAIPetApi::updatePetWithFormSignal, [&](){
petUpdated = true;
loop.quit();
});

QString name("gorilla");
api->updatePetWithForm(id, name, nullptr);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
QVERIFY2(petUpdated, "didn't finish within timeout");

// fetch it
timer.setInterval(1000);
timer.setSingleShot(true);

auto fetchUpdatedPet = [this](OAIPet pet) {
bool petUpdated2 = false;
connect(api, &OAIPetApi::getPetByIdSignal, [&](OAIPet pet) {
petUpdated2 = true;
QVERIFY(pet.getName().compare(QString("gorilla")) == 0);
emit quit();
};
connect(api, &OAIPetApi::getPetByIdSignal, this, fetchUpdatedPet);
connect(&timer, &QTimer::timeout, &loop, finalizer);
loop.quit();
});

api->getPetById(id);
timer.start();
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
QVERIFY2(timer.isActive(), "didn't finish within timeout");
disconnect(this, nullptr, nullptr, nullptr);
QVERIFY2(petUpdated2, "didn't finish within timeout");

delete api;
}
20 changes: 2 additions & 18 deletions samples/client/petstore/cpp-qt5/PetStore/PetApiTests.h
Original file line number Diff line number Diff line change
@@ -1,34 +1,18 @@
#ifndef PETAPITESTS_H
#define PETAPITESTS_H

#include <QtTest/QtTest>
#include <QTimer>
#pragma once

#include "../client/OAIPetApi.h"

using namespace OpenAPI;

class PetApiTests: public QObject {
Q_OBJECT
public:
PetApiTests();
virtual ~PetApiTests();

static void runTests();
Q_OBJECT

private:
OAIPetApi* getApi();
OAIPet createRandomPet();

signals:
void quit();
bool success();

private slots:
void findPetsByStatusTest();
void createAndGetPetTest();
void updatePetTest();
void updatePetWithFormTest();
};

#endif // PETAPITESTS_H
Loading