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