Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e3fc2748

Von Christian Ehringfeld vor etwa 8 Jahren hinzugefügt

multiple improvements

Unterschiede anzeigen:

tests/em/tst_querybuilder.cpp
CuteEntityManager::EntityInstanceFactory::registerClass<Person>();
CuteEntityManager::EntityInstanceFactory::registerClass<Employee>();
CuteEntityManager::EntityInstanceFactory::registerClass<WorkerGroup>();
this->e = new CuteEntityManager::EntityManager("QSQLITE",
":memory:", "", "", "", "", true, "foreign_keys = ON", false);
this->e = new CuteEntityManager::EntityManager("QSQLITE", ":memory:", "", "", "", "",
true, "foreign_keys = ON", false);
QStringList inits = QStringList() << "Person" << "Group" << "Employee" << "WorkerGroup";
QVERIFY2(this->e->startup("queryBuilderTest", inits), "Failure");
QSharedPointer<Person> p1 = QSharedPointer<Person>(new Person("Lucien", "We",
......
WorkerGroup("Taskforce P&H", 50));
wg->addWorker(p2);
wg->addWorker(p3);
auto gEnt = g.objectCast<Entity>();
auto g2Ent = g2.objectCast<Entity>();
auto g3Ent = g3.objectCast<Entity>();
auto wgEnt = wg.objectCast<Entity>();
auto p5Ent = p5.objectCast<Entity>();
auto p6Ent = p6.objectCast<Entity>();
try {
QVERIFY(this->e->save(p5Ent));
QVERIFY(this->e->save(gEnt));
QVERIFY(this->e->save(wgEnt));
QVERIFY(this->e->save(g2Ent));
QVERIFY(this->e->save(p6Ent));
QVERIFY(this->e->save(g3Ent));
QVERIFY(this->e->save(p5));
QVERIFY(this->e->save(g));
QVERIFY(this->e->save(wg));
QVERIFY(this->e->save(g2));
QVERIFY(this->e->save(p6));
QVERIFY(this->e->save(g3));
} catch(QString s) {
qWarning() << s;
}
......
QCOMPARE(this->e->count(q), (quint32)4);
}
void QuerybuilderTest::testFindByAttributesManyToOneRelation() {
QHash<QString, QVariant> attributes;
attributes["firstName"] = QString("Lucien");
attributes["familyName"] = QString("We");
QSharedPointer<Person> p = this->e->findEntityByAttributes<Person>(attributes, true);
QVERIFY(p);
attributes.clear();
QVariant var;
var.setValue<QSharedPointer<Entity>>(p);
attributes["leader"] = var;
QSharedPointer<Group> group = e->findEntityByAttributes<Group>
(attributes, true);
QVERIFY(group);
QCOMPARE(group->getName(), QString("Group Psy"));
}
void QuerybuilderTest::testFindByAttributesManyToOneRelationAttribute() {
QHash<QString, QVariant> attributes;
attributes["leader.firstName"] = QString("Fenja");
QSharedPointer<Group> group = this->e->findEntityByAttributes<Group>
(attributes, true);
QVERIFY(group);
}
void QuerybuilderTest::testFindByAttributesManyToManyRelation() {
QHash<QString, QVariant> attributes;
attributes["firstName"] = "Kristina";
QSharedPointer<Person> p = this->e->findEntityByAttributes<Person>(attributes, true);
QVERIFY(p);
QCOMPARE(p->getFamilyName(), QString("Zero"));
attributes.clear();
QVariant var;
var.setValue<QSharedPointer<Person>>(p);
attributes["persons"] = var;
QSharedPointer<Group> group = e->findEntityByAttributes<Group>
(attributes, true);
QVERIFY(group);
QCOMPARE(group->getName(), QString("Group Health"));
}
void QuerybuilderTest::testFindByAttributesManyToManyRelationWithList() {
QHash<QString, QVariant> attributes;
QList<QSharedPointer<Person>> persons = QList<QSharedPointer<Person>>();
attributes["firstName"] = QString("Lucien");
QSharedPointer<Person> p1 = this->e->findEntityByAttributes<Person>(attributes, true);
QVERIFY(p1);
QCOMPARE(p1->getFamilyName(), QString("We"));
persons.append(p1);
attributes["firstName"] = QString("Janine");
QSharedPointer<Person> p2 = this->e->findEntityByAttributes<Person>(attributes, true);
QVERIFY(p2);
QCOMPARE(p2->getFamilyName(), QString("Musterfrau"));
persons.append(p2);
attributes.clear();
QVariant var;
var.setValue<QList<QSharedPointer<Person>>>(persons);
attributes["persons"] = var;
QSharedPointer<Group> group = this->e->findEntityByAttributes<Group>
(attributes, true);
QVERIFY(group);
QCOMPARE(group->getName(), QString("Group Psy"));
}
void QuerybuilderTest::testFindByAttributesManyToManyRelationAttribute() {
QHash<QString, QVariant> attributes;
attributes["persons.firstName"] = QString("Janine");
QSharedPointer<Group> group = this->e->findEntityByAttributes<Group>
(attributes, true);
QVERIFY(group);
QCOMPARE(group->getName(), QString("Group Psy"));
}
void QuerybuilderTest::testQueryBuilder() {
auto qb = this->e->getQueryBuilder();
Query q = Query();
......
QCOMPARE(list.size(), 2);
}
void QuerybuilderTest::testQueryBuilderManyToOneRelation() {
auto qb = e->getQueryBuilder();
Query q = Query();
q.appendWhere(q.equal(qb, "persNumber", 42));
QList<QSharedPointer<Employee>> list = e->find<Employee>(q, true);
QCOMPARE(list.size(), 1);
QCOMPARE(list.at(0)->getNickName(), QString("Lotta"));
q = Query();
QVariant var;
var.setValue<QSharedPointer<Entity>>(list.at(0));
q.appendWhere(q.equal(qb, "leader", QVariant(var)));
QList<QSharedPointer<Group>> groupList = e->find<Group>(q, false);
QCOMPARE(groupList.size(), 1);
QCOMPARE(groupList.at(0)->getName(), QString("Group Health"));
}
void QuerybuilderTest::testQueryBuilderManyToOneRelationAttribute() {
auto qb = e->getQueryBuilder();
Query q = Query();
q.appendJoinWith("leader");
q.appendOrderBy("name", Direction::SORT_DESC);
q.appendWhere(q.equal(qb, "leader.firstName", QString("Fenja")));
QList<QSharedPointer<Group>> groupList = e->find<Group>(q, false, false);
QCOMPARE(groupList.size(), 1);
QCOMPARE(groupList.at(0)->getName(), QString("Group Health"));
QCOMPARE(groupList.at(0)->getPersons().size(), 0);
}
void QuerybuilderTest::testQueryBuilderManyToManyRelation() {
auto qb = e->getQueryBuilder();
Query q = Query();
q.appendWhere(q.equal(qb, "persNumber", 42));
QList<QSharedPointer<Employee>> list = e->find<Employee>(q, true);
QCOMPARE(list.size(), 1);
QCOMPARE(list.at(0)->getNickName(), QString("Lotta"));
q = Query();
QVariant var;
var.setValue<QSharedPointer<Entity>>(list.at(0));
q.appendWhere(q.equal(qb, "persons", QVariant(var)));
QList<QSharedPointer<Group>> groupList = e->find<Group>(q, false);
QCOMPARE(groupList.size(), 1);
QCOMPARE(groupList.size(), 2);
QCOMPARE(groupList.at(0)->getName(), QString("Group Health"));
QCOMPARE(groupList.at(0)->getPersons().size(), 1);
}
void QuerybuilderTest::testQueryBuilderManyToManyRelationAttribute() {
auto qb = e->getQueryBuilder();
Query q = Query();
q.appendJoinWith("persons");
q.appendWhere(q.equal(qb, "persons.firstName", QString("Janine")));
QList<QSharedPointer<Group>> groupList = e->find<Group>(q, false);
QCOMPARE(groupList.size(), 1);
......
QSharedPointer<Group> g = this->e->findEntityByAttributes<Group>(attributes, false,
false);
QCOMPARE(g->getPersons().count(), 0);
auto entity = g.objectCast<Entity>();
e->refresh(entity, true);
e->refresh(g, true);
QCOMPARE(g->getPersons().count(), 1);
}

Auch abrufbar als: Unified diff