From fa1397882ac322da376ad3bc1f2094334eb67e6e Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 1 Dec 2017 16:00:06 +0100 Subject: Test calling setRelation() with QSqlRelation() clears the relation Change-Id: I93dbec54bfb9402b9044323862c2ae1d41e1790a Reviewed-by: Jesus Fernandez --- .../tst_qsqlrelationaltablemodel.cpp | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp') diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp index 799b93c33b..84cca482fb 100644 --- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp +++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp @@ -77,6 +77,7 @@ private slots: void psqlSchemaTest(); void selectAfterUpdate(); void relationOnFirstColumn(); + void setRelation(); private: void dropTestTables( QSqlDatabase db ); @@ -1550,5 +1551,27 @@ void tst_QSqlRelationalTableModel::relationOnFirstColumn() tst_Databases::safeDropTables(db, QStringList() << testTable1 << testTable2); } +void tst_QSqlRelationalTableModel::setRelation() +{ + QFETCH_GLOBAL(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + recreateTestTables(db); + + QSqlRelationalTableModel model(0, db); + model.setTable(reltest1); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 2)), QVariant(1)); + + model.setRelation(2, QSqlRelation(reltest2, "id", "title")); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 2)), QVariant("herr")); + + // Check that setting an invalid QSqlRelation() clears the relation + model.setRelation(2, QSqlRelation()); + QVERIFY_SQL(model, select()); + QCOMPARE(model.data(model.index(0, 2)), QVariant(1)); +} + QTEST_MAIN(tst_QSqlRelationalTableModel) #include "tst_qsqlrelationaltablemodel.moc" -- cgit v1.2.3