summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2024-09-01 20:43:52 +0200
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2024-09-07 23:12:42 +0200
commit48753a03de7c9c394fbf4cf69e2c2f3d1048c85f (patch)
tree31ddddbdff435e30caceb2bf1e254bb51c99bef1 /tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
parent9fa8977b61b8827a757704e8d7edf3ed1e809f83 (diff)
QSqlRelationalTableModel: properly clear relational dictionary
When the relationModel is updated (e.g. a new row is added or removed), the internal relation cache needs a refresh to reflect those changes. Pick-to: 6.8 Fixes: QTBUG-128434 Change-Id: Ie388c01d545564ad7b1424d70267166ac1e4bfd6 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Diffstat (limited to 'tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp')
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 3879c0f2ae4..2f408b10267 100644
--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -476,6 +476,29 @@ void tst_QSqlRelationalTableModel::insertRecord()
model.setSort(0, Qt::AscendingOrder);
QVERIFY_SQL(model, select());
+ constexpr auto fkTitleKey = 4711;
+ constexpr auto fkTitleVal = "new title";
+ {
+ auto relModel = model.relationModel(2);
+ // make sure populateDictionary() is called
+ relModel->select();
+
+ QSqlRecord rec;
+ QSqlField f1("id", QMetaType(QMetaType::Int));
+ QSqlField f2("title", QMetaType(QMetaType::QString));
+
+ f1.setValue(fkTitleKey);
+ f2.setValue(fkTitleVal);
+
+ f1.setGenerated(true);
+ f2.setGenerated(true);
+
+ rec.append(f1);
+ rec.append(f2);
+
+ QVERIFY(relModel->insertRecord(-1, rec));
+ }
+
QSqlRecord rec;
QSqlField f1("id", QMetaType(QMetaType::Int));
QSqlField f2("name", QMetaType(QMetaType::QString));
@@ -484,7 +507,7 @@ void tst_QSqlRelationalTableModel::insertRecord()
f1.setValue(7);
f2.setValue("test");
- f3.setValue(1);
+ f3.setValue(fkTitleKey);
f4.setValue(2);
f1.setGenerated(true);
@@ -501,7 +524,7 @@ void tst_QSqlRelationalTableModel::insertRecord()
QCOMPARE(model.data(model.index(4, 0)).toInt(), 7);
QCOMPARE(model.data(model.index(4, 1)).toString(), QString("test"));
- QCOMPARE(model.data(model.index(4, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(4, 2)).toString(), QString(fkTitleVal));
// In LeftJoin mode, two additional rows are fetched
model.setJoinMode(QSqlRelationalTableModel::LeftJoin);
@@ -509,7 +532,7 @@ void tst_QSqlRelationalTableModel::insertRecord()
QCOMPARE(model.data(model.index(6, 0)).toInt(), 7);
QCOMPARE(model.data(model.index(6, 1)).toString(), QString("test"));
- QCOMPARE(model.data(model.index(6, 2)).toString(), QString("herr"));
+ QCOMPARE(model.data(model.index(6, 2)).toString(), QString(fkTitleVal));
}
void tst_QSqlRelationalTableModel::setRecord()