commit 20e1ffecfd4791d41631a32ef710adad09e23a62
Author: Christian Ehringfeld <c.ehringfeld@t-online.de>
Date:   Wed Dec 2 00:13:07 2015 +0100

    test case updates

diff --git a/tests/em/tst_em.cpp b/tests/em/tst_em.cpp
index dad334f..990530f 100644
--- a/tests/em/tst_em.cpp
+++ b/tests/em/tst_em.cpp
@@ -22,6 +22,7 @@ class Em : public QObject {
     void testValidate();
     void testRelations();
     void testRelationTableCreation();
+    void testInheritedRelations();
 
   private:
     CuteEntityManager::EntityManager *e;
@@ -69,8 +70,7 @@ void Em::testBasics() {
     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));
@@ -81,6 +81,9 @@ void Em::init() {
     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"));
@@ -108,20 +111,41 @@ void Em::cleanup() {
 
 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");
@@ -183,8 +207,7 @@ void Em::testRelations() {
                                 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>();
diff --git a/tests/models.cpp b/tests/models.cpp
index 15fd04e..dc983be 100644
--- a/tests/models.cpp
+++ b/tests/models.cpp
@@ -265,3 +265,8 @@ QList<QSharedPointer<Employee>> WorkerGroup::getWorkers() const {
 void WorkerGroup::setWorkers(const QList<QSharedPointer<Employee>> &value) {
     workers = value;
 }
+
+void WorkerGroup::addWorker(const QSharedPointer<Employee> &value)
+{
+    this->workers.append(value);
+}
diff --git a/tests/models.h b/tests/models.h
index d0d7f99..a96d77f 100644
--- a/tests/models.h
+++ b/tests/models.h
@@ -90,6 +90,17 @@ class Employee : public Person {
     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;
@@ -101,6 +112,7 @@ class Employee : public Person {
     quint64 getPersNumber() const;
     void setPersNumber(const quint64 &value);
 
+
   private:
     QString department;
     quint64 persNumber;
@@ -117,6 +129,11 @@ class WorkerGroup : public Entity {
                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;
@@ -130,6 +147,7 @@ class WorkerGroup : public Entity {
 
     QList<QSharedPointer<Employee>> getWorkers() const;
     void setWorkers(const QList<QSharedPointer<Employee>> &value);
+    void addWorker(const QSharedPointer<Employee> &value);
 
   private:
     QString name;
@@ -151,7 +169,9 @@ class Group: public CuteEntityManager::Entity {
   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;
