From 22c33fb859a4c0d9d694edca2076708b1cf2f087 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 26 May 2020 20:31:07 +0200 Subject: [PATCH] Sqlite: Improve LastChangedRowId Change-Id: I2fe559d4b40f93561e44eb138119416291dc7d41 Reviewed-by: Thomas Hartmann --- src/libs/sqlite/lastchangedrowid.h | 2 ++ tests/unit/unittest/lastchangedrowid-test.cpp | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/libs/sqlite/lastchangedrowid.h b/src/libs/sqlite/lastchangedrowid.h index 2a486bbe427..b7e1969daf0 100644 --- a/src/libs/sqlite/lastchangedrowid.h +++ b/src/libs/sqlite/lastchangedrowid.h @@ -114,6 +114,8 @@ public: return rowId; } + bool lastRowIdIsValid() { return lastRowId >= 0; } + public: DatabaseInterface &database; DatabaseInterface::UpdateCallback callback; diff --git a/tests/unit/unittest/lastchangedrowid-test.cpp b/tests/unit/unittest/lastchangedrowid-test.cpp index 7214955eda4..07b29bee576 100644 --- a/tests/unit/unittest/lastchangedrowid-test.cpp +++ b/tests/unit/unittest/lastchangedrowid-test.cpp @@ -442,4 +442,30 @@ TEST_F(LastChangedRowIdWithNoTable, TakeLastRowIdResetsRowIdToMinusOne) ASSERT_THAT(id, -1); } + +TEST_F(LastChangedRowIdWithNoTable, LastRowIdIsNotValidForNegativeValues) +{ + auto isValid = lastRowId.lastRowIdIsValid(); + + ASSERT_FALSE(isValid); +} + +TEST_F(LastChangedRowIdWithNoTable, LastRowIdIsValidForNull) +{ + lastRowId.callback(Sqlite::ChangeType::Update, "main", "foo", 0); + + auto isValid = lastRowId.lastRowIdIsValid(); + + ASSERT_TRUE(isValid); +} + +TEST_F(LastChangedRowIdWithNoTable, LastRowIdIsValidForPositiveValues) +{ + lastRowId.callback(Sqlite::ChangeType::Update, "main", "foo", 777); + + auto isValid = lastRowId.lastRowIdIsValid(); + + ASSERT_TRUE(isValid); +} + } // namespace