forked from loafle/openapi-generator-original
[cpp-qt5] client response headers and validation of properties for client and server (#1508)
* Add validation of required properties Add Header extraction for client * Remove some todos * Add Test for Store API Improve some checks for serialization
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
PetApiTests::PetApiTests () {}
|
||||
|
||||
PetApiTests::~PetApiTests () {
|
||||
exit(1);
|
||||
|
||||
}
|
||||
|
||||
OAIPetApi* PetApiTests::getApi() {
|
||||
@@ -35,7 +35,6 @@ void PetApiTests::runTests() {
|
||||
|
||||
void PetApiTests::findPetsByStatusTest() {
|
||||
OAIPetApi* api = getApi();
|
||||
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
|
||||
@@ -19,6 +19,8 @@ TEMPLATE = app
|
||||
include(../client/client.pri)
|
||||
|
||||
SOURCES += main.cpp \
|
||||
PetApiTests.cpp
|
||||
PetApiTests.cpp \
|
||||
StoreApiTests.cpp
|
||||
|
||||
HEADERS += PetApiTests.h
|
||||
HEADERS += PetApiTests.h \
|
||||
StoreApiTests.h
|
||||
|
||||
117
samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp
Normal file
117
samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.cpp
Normal file
@@ -0,0 +1,117 @@
|
||||
#include "StoreApiTests.h"
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkReply>
|
||||
#include <QDebug>
|
||||
|
||||
StoreApiTests::StoreApiTests () {}
|
||||
|
||||
StoreApiTests::~StoreApiTests () {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
OAIStoreApi* StoreApiTests::getApi() {
|
||||
auto api = new OAIStoreApi();
|
||||
api->host = "http://petstore.swagger.io";
|
||||
api->basePath = "/v2";
|
||||
return api;
|
||||
}
|
||||
|
||||
void StoreApiTests::runTests() {
|
||||
StoreApiTests* tests = new StoreApiTests();
|
||||
QTest::qExec(tests);
|
||||
delete tests;
|
||||
}
|
||||
|
||||
void StoreApiTests::placeOrderTest() {
|
||||
auto api = getApi();
|
||||
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = [this](OAIOrder order) {
|
||||
QVERIFY(order.getPetId() == 10000);
|
||||
QVERIFY((order.getId() == 500));
|
||||
qDebug() << order.getShipDate();
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
connect(this, &StoreApiTests::quit, finalizer);
|
||||
connect(api, &OAIStoreApi::placeOrderSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
|
||||
OAIOrder order;
|
||||
order.setId(500);
|
||||
order.setQuantity(10);
|
||||
order.setPetId(10000);
|
||||
order.setComplete(false);
|
||||
order.setStatus(QString("shipping"));
|
||||
order.setShipDate(QDateTime::currentDateTime());
|
||||
api->placeOrder(order);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, nullptr, nullptr, nullptr);
|
||||
delete api;
|
||||
}
|
||||
|
||||
void StoreApiTests::getOrderByIdTest() {
|
||||
auto api = getApi();
|
||||
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = [this](OAIOrder order) {
|
||||
QVERIFY(order.getPetId() == 10000);
|
||||
QVERIFY((order.getId() == 500));
|
||||
qDebug() << order.getShipDate();
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
connect(this, &StoreApiTests::quit, finalizer);
|
||||
connect(api, &OAIStoreApi::getOrderByIdSignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
api->getOrderById(500);
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, nullptr, nullptr, nullptr);
|
||||
delete api;
|
||||
}
|
||||
|
||||
void StoreApiTests::getInventoryTest() {
|
||||
auto api = getApi();
|
||||
|
||||
QEventLoop loop;
|
||||
QTimer timer;
|
||||
timer.setInterval(14000);
|
||||
timer.setSingleShot(true);
|
||||
|
||||
auto validator = [this](QMap<QString, qint32> status) {
|
||||
for(const auto& key : status.keys()) {
|
||||
qDebug() << (key) << " Quantities " << status.value(key);
|
||||
}
|
||||
emit quit();
|
||||
};
|
||||
auto finalizer = [&]() {
|
||||
loop.quit();
|
||||
};
|
||||
connect(this, &StoreApiTests::quit, finalizer);
|
||||
connect(api, &OAIStoreApi::getInventorySignal, this, validator);
|
||||
connect(&timer, &QTimer::timeout, &loop, finalizer);
|
||||
api->getInventory();
|
||||
timer.start();
|
||||
loop.exec();
|
||||
QVERIFY2(timer.isActive(), "didn't finish within timeout");
|
||||
disconnect(this, nullptr, nullptr, nullptr);
|
||||
delete api;
|
||||
}
|
||||
32
samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h
Normal file
32
samples/client/petstore/cpp-qt5/PetStore/StoreApiTests.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef STOREAPITESTS_H
|
||||
#define STOREAPITESTS_H
|
||||
#include <QtTest/QtTest>
|
||||
#include <QTimer>
|
||||
|
||||
#include "../client/OAIStoreApi.h"
|
||||
|
||||
using namespace OpenAPI;
|
||||
|
||||
class StoreApiTests: public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
StoreApiTests();
|
||||
virtual ~StoreApiTests();
|
||||
|
||||
static void runTests();
|
||||
|
||||
private:
|
||||
OAIStoreApi* getApi();
|
||||
OAIOrder createRandomOrder();
|
||||
|
||||
signals:
|
||||
void quit();
|
||||
bool success();
|
||||
|
||||
private slots:
|
||||
void placeOrderTest();
|
||||
void getOrderByIdTest();
|
||||
void getInventoryTest();
|
||||
};
|
||||
|
||||
#endif // STOREAPITESTS_H
|
||||
@@ -1,8 +1,10 @@
|
||||
#include <QCoreApplication>
|
||||
#include "PetApiTests.h"
|
||||
#include "StoreApiTests.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QCoreApplication a(argc, argv);
|
||||
PetApiTests::runTests();
|
||||
StoreApiTests::runTests();
|
||||
return a.exec();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user