Herunterladen als
root/tests/tables/tst_tables.cpp @ 69f995c5
10cc871a | Christian Ehringfeld | #include <QString>
|
|
#include <QtTest>
|
|||
#include "entitymanager.h"
|
|||
#include "databasemigration.h"
|
|||
#include "../models.h"
|
|||
class Tables : public QObject {
|
|||
Q_OBJECT
|
|||
public:
|
|||
Tables();
|
|||
private Q_SLOTS:
|
|||
void initTestCase();
|
|||
void cleanupTestCase();
|
|||
void testStartup();
|
|||
9e2d71d6 | Christian Ehringfeld | void testBasics();
|
|
10cc871a | Christian Ehringfeld | // void init();
|
|
// void cleanup();
|
|||
private:
|
|||
CuteEntityManager::EntityManager *e;
|
|||
};
|
|||
Tables::Tables() {
|
|||
}
|
|||
void Tables::initTestCase() {
|
|||
CuteEntityManager::EntityInstanceFactory::registerClass<Group>();
|
|||
CuteEntityManager::EntityInstanceFactory::registerClass<Person>();
|
|||
9e2d71d6 | Christian Ehringfeld | CuteEntityManager::EntityInstanceFactory::registerClass<Article>();
|
|
10cc871a | Christian Ehringfeld | this->e = new CuteEntityManager::EntityManager("QSQLITE",
|
|
":memory:", "", "", "", "", true, "foreign_keys = ON");
|
|||
}
|
|||
void Tables::cleanupTestCase() {
|
|||
4061b346 | Christian Ehringfeld | if (this->e) {
|
|
delete this->e;
|
|||
this->e = nullptr;
|
|||
}
|
|||
10cc871a | Christian Ehringfeld | }
|
|
void Tables::testStartup() {
|
|||
QStringList inits = QStringList() << "Person" << "Group";
|
|||
QVERIFY2(this->e->startup("test0.1", inits), "Failure");
|
|||
auto tableNames = this->e->getSchema()->getTableNames();
|
|||
QVERIFY(tableNames.contains("person"));
|
|||
QVERIFY(tableNames.contains("group"));
|
|||
QVERIFY(tableNames.contains("group_persons"));
|
|||
QVERIFY(tableNames.contains("cuteentitymanager::databasemigration"));
|
|||
auto migrations = this->e->findAll<CuteEntityManager::DatabaseMigration>();
|
|||
QCOMPARE(migrations.size(), 1);
|
|||
QCOMPARE(migrations.at(0)->getVersion(), QString("test0.1"));
|
|||
}
|
|||
9e2d71d6 | Christian Ehringfeld | void Tables::testBasics() {
|
|
this->e->createTable("Article");
|
|||
QVERIFY(this->e->getSchema()->getTableNames().contains("article"));
|
|||
QSharedPointer<Article> article = QSharedPointer<Article>(new Article(10,
|
|||
QString("TestItem")));
|
|||
QSharedPointer<Entity> entity = article.objectCast<Entity>();
|
|||
QVERIFY(this->e->create(entity));
|
|||
article->setPrice(20);
|
|||
article->setName("NewTestItem");
|
|||
QVERIFY(this->e->save(entity));
|
|||
QHash<QString, QVariant> attrs = QHash<QString, QVariant>();
|
|||
attrs.insert("price", 20);
|
|||
attrs.insert("name", "NewTestItem");
|
|||
QSharedPointer<Article> article2 = this->e->findEntityByAttributes<Article>
|
|||
(attrs);
|
|||
QVERIFY(article2);
|
|||
entity = article2.objectCast<Entity>();
|
|||
QVERIFY(this->e->remove(entity));
|
|||
QCOMPARE(this->e->count("article"), (quint8)0);
|
|||
this->e->getDb()->exec(this->e->getQueryBuilder()->dropTable("article"));
|
|||
QVERIFY(!this->e->getSchema()->getTableNames().contains("article"));
|
|||
}
|
|||
10cc871a | Christian Ehringfeld | QTEST_APPLESS_MAIN(Tables)
|
|
#include "tst_tables.moc"
|