Revision 20e1ffec
Von Christian Ehringfeld vor fast 10 Jahren hinzugefügt
| tests/em/tst_em.cpp | ||
|---|---|---|
|
void testValidate();
|
||
|
void testRelations();
|
||
|
void testRelationTableCreation();
|
||
|
void testInheritedRelations();
|
||
|
|
||
|
private:
|
||
|
CuteEntityManager::EntityManager *e;
|
||
| ... | ... | |
|
QHash<QString, QVariant> attrs = QHash<QString, QVariant>();
|
||
|
attrs.insert("price", 20);
|
||
|
attrs.insert("name", "NewTestItem");
|
||
|
QSharedPointer<Article> article2 = this->e->findEntityByAttributes<Article>
|
||
|
(attrs);
|
||
|
QSharedPointer<Article> article2 = this->e->findEntityByAttributes<Article>(attrs);
|
||
|
QVERIFY(article2);
|
||
|
entity = article2.objectCast<Entity>();
|
||
|
QVERIFY(this->e->remove(entity));
|
||
| ... | ... | |
|
QStringList inits = QStringList() << "Person" << "Group" << "Article";
|
||
|
QVERIFY2(this->e->startup("emTestA", inits), "Failure");
|
||
|
auto tableNames = this->e->getSchema()->getTableNames();
|
||
|
/**
|
||
|
* @todo test columns
|
||
|
*/
|
||
|
QVERIFY(tableNames.contains("article"));
|
||
|
QVERIFY(tableNames.contains("person"));
|
||
|
QVERIFY(tableNames.contains("group"));
|
||
| ... | ... | |
|
|
||
|
void Em::testRelationTableCreation() {
|
||
|
this->createRelationTables();
|
||
|
auto tableNames = this->e->getSchema()->getTableNames();
|
||
|
QVERIFY(tableNames.contains("workergroup"));
|
||
|
QVERIFY(tableNames.contains("employee"));
|
||
|
QVERIFY(tableNames.contains("workergroup_workers"));
|
||
|
QVERIFY(!tableNames.contains("group_employee"));
|
||
|
QVERIFY(!tableNames.contains("employee_workergroups"));
|
||
|
QVERIFY(!tableNames.contains("employee_groups"));
|
||
|
QVERIFY(tableNames.contains("cuteentitymanager::databasemigration"));
|
||
|
auto tables = this->e->getSchema()->getTables();
|
||
|
/**
|
||
|
* @todo test columns
|
||
|
*/
|
||
|
QVERIFY(tables.contains("workergroup"));
|
||
|
QVERIFY(tables.contains("employee"));
|
||
|
QVERIFY(tables.contains("workergroup_workers"));
|
||
|
QVERIFY(!tables.contains("group_employee"));
|
||
|
QVERIFY(!tables.contains("employee_workergroups"));
|
||
|
QVERIFY(!tables.contains("employee_groups"));
|
||
|
QVERIFY(tables.contains("cuteentitymanager::databasemigration"));
|
||
|
auto migrations = this->e->findAll<CuteEntityManager::DatabaseMigration>();
|
||
|
QCOMPARE(migrations.size(), 2);
|
||
|
QCOMPARE(migrations.at(1)->getVersion(), QString("emTestB"));
|
||
|
this->deleteRelationTables();
|
||
|
}
|
||
|
|
||
|
void Em::testInheritedRelations() {
|
||
|
QSharedPointer<Employee> e1 = QSharedPointer<Employee>(new Employee(42, "Fenja", "Sey.",
|
||
|
Person::Gender::FEMALE, "fenja.jpeg", "", "Lotta", QDate(1990, 1, 1), "Psychology"));
|
||
|
QSharedPointer<Employee> e2 = QSharedPointer<Employee>(new Employee(11, "Janine",
|
||
|
"Musterfrau",
|
||
|
Person::Gender::FEMALE, "janine.jpeg", "", "", QDate(2000, 1, 1), "Health", true));
|
||
|
QSharedPointer<WorkerGroup> wg = QSharedPointer<WorkerGroup>(new
|
||
|
WorkerGroup("Taskforce P&H", 42));
|
||
|
wg->addWorker(e1);
|
||
|
wg->addWorker(e2);
|
||
|
auto entityWorkerGroup = wg.objectCast<Entity>();
|
||
|
QVERIFY(this->e->create(entityWorkerGroup));
|
||
|
QSharedPointer<Group> g = QSharedPointer<Group>(new Group("EmployeeGroup"));
|
||
|
g->setPersons({e1, e2});
|
||
|
auto entityGroup = g.objectCast<Entity>();
|
||
|
QVERIFY(this->e->create(entityGroup));
|
||
|
}
|
||
|
|
||
|
void Em::createRelationTables() {
|
||
|
QStringList relationTables = QStringList() << "Employee" << "WorkerGroup";
|
||
|
QVERIFY2(this->e->startup("emTestB", relationTables), "Failure");
|
||
| ... | ... | |
|
Person::Gender::FEMALE, "janine.jpeg", "", "", QDate(2000, 1, 1)));
|
||
|
QSharedPointer<Person> p3 = QSharedPointer<Person>(new Person("Fenja", "Sey.",
|
||
|
Person::Gender::FEMALE, "fenja.jpeg", "", "Lotta", QDate(1990, 1, 1)));
|
||
|
QSharedPointer<Group> g = QSharedPointer<Group>(new Group());
|
||
|
g->setName("TestGroup");
|
||
|
QSharedPointer<Group> g = QSharedPointer<Group>(new Group("TestGroup"));
|
||
|
g->setLeader(p1);
|
||
|
g->setPersons({p1});
|
||
|
auto gEnt = g.objectCast<Entity>();
|
||
| tests/models.cpp | ||
|---|---|---|
|
void WorkerGroup::setWorkers(const QList<QSharedPointer<Employee>> &value) {
|
||
|
workers = value;
|
||
|
}
|
||
|
|
||
|
void WorkerGroup::addWorker(const QSharedPointer<Employee> &value)
|
||
|
{
|
||
|
this->workers.append(value);
|
||
|
}
|
||
| tests/models.h | ||
|---|---|---|
|
Q_PROPERTY(bool manager READ isManager WRITE setManager)
|
||
|
public:
|
||
|
Employee() : Person() { }
|
||
|
Employee(quint64 persNumber, QString firstName, QString familyName,
|
||
|
Gender gender = Gender::UNKNOWNGENDER,
|
||
|
QString customPictureFileName = QString(), QString namePrefix = QString(),
|
||
|
QString nickName = QString(), QDate birthday = QDate(), QString department = QString(),
|
||
|
bool manager = false, QObject *parent = 0) : Person(firstName, familyName, gender,
|
||
|
customPictureFileName, namePrefix, nickName, birthday, parent) {
|
||
|
this->department = department;
|
||
|
this->manager = manager;
|
||
|
this->persNumber = persNumber;
|
||
|
}
|
||
|
|
||
|
virtual const QHash<QString, CuteEntityManager::Relation> getRelations() const
|
||
|
override;
|
||
|
QString getDepartment() const;
|
||
| ... | ... | |
|
quint64 getPersNumber() const;
|
||
|
void setPersNumber(const quint64 &value);
|
||
|
|
||
|
|
||
|
private:
|
||
|
QString department;
|
||
|
quint64 persNumber;
|
||
| ... | ... | |
|
setWorkers)
|
||
|
public:
|
||
|
WorkerGroup() : Entity() { }
|
||
|
WorkerGroup(QString name, quint32 efficiency, bool active=true) : Entity() {
|
||
|
this->name = name;
|
||
|
this->efficiency = efficiency;
|
||
|
this->active = active;
|
||
|
}
|
||
|
virtual const QHash<QString, CuteEntityManager::Relation> getRelations() const
|
||
|
override;
|
||
|
QString getName() const;
|
||
| ... | ... | |
|
|
||
|
QList<QSharedPointer<Employee>> getWorkers() const;
|
||
|
void setWorkers(const QList<QSharedPointer<Employee>> &value);
|
||
|
void addWorker(const QSharedPointer<Employee> &value);
|
||
|
|
||
|
private:
|
||
|
QString name;
|
||
| ... | ... | |
|
public:
|
||
|
Q_INVOKABLE Group();
|
||
|
const QHash<QString, CuteEntityManager::Relation> getRelations() const override;
|
||
|
|
||
|
Group(QString name) : Entity() {
|
||
|
this->name = name;
|
||
|
}
|
||
|
QString getName() const;
|
||
|
void setName(const QString &value);
|
||
|
QSharedPointer<Person> getLeader() const;
|
||
Auch abrufbar als: Unified diff
test case updates