1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#include <QTest>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include "testconfig.h"
#include "kraftdb.h"
#include "attribute.h"
#include "dbids.h"
void init_test_db()
{
const QString dbName("__test.db");
QDir sourceDir(TESTS_PATH);
sourceDir.cdUp();
const QByteArray ba {sourceDir.absolutePath().toLatin1()};
qputenv("KRAFT_HOME", ba);
QFile::remove(dbName);
KraftDB::self()->dbConnect("QSQLITE", dbName, QString(), QString(), QString());
SqlCommandList sqls = KraftDB::self()->parseCommandFile("5_dbmigrate.sql");
QVERIFY(sqls.size() > 0);
KraftDB::self()->processSqlCommands(sqls);
sqls = KraftDB::self()->parseCommandFile("10_dbmigrate.sql");
KraftDB::self()->processSqlCommands(sqls);
sqls = KraftDB::self()->parseCommandFile("11_dbmigrate.sql");
KraftDB::self()->processSqlCommands(sqls);
}
class T_Attributes : public QObject {
Q_OBJECT
private Q_SLOTS:
void initTestCase()
{
init_test_db();
}
void cleanupTestCase() {
const QString dbName("__test.db");
QDir sourceDir(TESTS_PATH);
sourceDir.cdUp();
Q_ASSERT(QFile::remove(dbName));
}
void checkTablesExist() {
const QStringList attribCols{"id", "hostObject", "hostId", "name", "valueIsList",
"relationTable", "relationIDColumn", "relationStringColumn"};
QVERIFY(KraftDB::self()->checkTableExistsSqlite("attributes", attribCols));
const QStringList colsAttribValues{"id", "attributeId", "value"};
QVERIFY(KraftDB::self()->checkTableExistsSqlite("attributeValues", colsAttribValues));
}
void simple1() {
Attribute att = makeAtt("Test", "foo");
QVERIFY(att.name() == QStringLiteral("Test"));
QVERIFY(att.value().toString() == QStringLiteral("foo"));
}
void copyAttribute() {
Attribute att = makeAtt("Test", "foo");
Attribute att2 = att;
QVERIFY(att2.name() == QStringLiteral("Test"));
QVERIFY(att2.value().toString() == QStringLiteral("foo"));
}
void saveAndLoadAttribs() {
const QString host {"testhost"};
AttributeMap map(host);
Attribute att1 = makeAtt("Test", "foo");
Attribute att2 = makeAtt("Test2", "foobar");
map[att1.name()] = att1;
map[att2.name()] = att2;
dbID id(342);
map.save(id);
AttributeMap m2(host);
m2.load(id);
QVERIFY(m2.contains(att1.name()));
QVERIFY(m2.contains(att2.name()));
}
void listValues() {
const QString host {"listtest"};
AttributeMap map(host);
{
Attribute att1 = makeAtt("Test", "foo");
att1.setListValue(true);
const QStringList li1 {"foo", "bar", "baz"};
att1.setValue(QVariant(li1));
map[att1.name()] = att1;
}
Attribute att2 = makeAtt("Test2", "foobar");
att2.setListValue(true);
const QStringList li2 {"foo", "bar", "baz"};
att2.setValue(QVariant(li2));
map[att2.name()] = att2;
// --- save
dbID id(344);
map.save(id);
// --- and load again
AttributeMap m2(host);
m2.load(id);
QVERIFY(m2.contains("Test"));
QVERIFY(m2.contains(att2.name()));
Attribute a3 = m2["Test2"];
const QStringList li = a3.value().toStringList();
QVERIFY(li.contains("foo"));
QVERIFY(li.contains("bar"));
QVERIFY(li.contains("baz"));
}
private:
Attribute makeAtt(const QString& name, const QString& val) {
Attribute att(name);
att.setValue(val);
att.setPersistant(true);
att.setListValue(false);
return att;
}
};
QTEST_MAIN(T_Attributes)
#include "t_attributes.moc"
|