diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -43,7 +43,6 @@ DriverTest.cpp ExpressionsTest.cpp KDbTest.cpp - LINK_LIBRARIES kdbtestutils ) diff --git a/autotests/KDbTest.h b/autotests/KDbTest.h --- a/autotests/KDbTest.h +++ b/autotests/KDbTest.h @@ -49,6 +49,11 @@ void testCstringToVariant_data(); void testCstringToVariant(); void testTemporaryTableName(); + void deleteRecordWithOneConstraintsTest(); + void deleteNonExistingRecordTest(); + void deleteRecordWithTwoConstraintsTest(); + void deleteRecordWithThreeConstraintsTest(); + void deleteRecordsAllTest(); void cleanupTestCase(); private: void testUnescapeStringHelper(const QString &sequenceString, const QString &resultString, diff --git a/autotests/KDbTest.cpp b/autotests/KDbTest.cpp --- a/autotests/KDbTest.cpp +++ b/autotests/KDbTest.cpp @@ -1098,7 +1098,65 @@ KDB_EXPORT QString identifierExpectedMessage(const QString &valueName, const QVariant& v); #endif +void KDbTest::deleteRecordWithOneConstraintsTest() +{ + QVERIFY(utils.testCreateDbWithTables("KDbTest")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "id", 2)); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons" , "name", "Jaroslaw")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "surname", "Nitish")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "age", 45)); +//NON existing ROW -- should return false; + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "age", "Nitish")); + QVERIFY(utils.testDisconnectAndDropDb()); +} + +void KDbTest::deleteNonExistingRecordTest() +{ + QVERIFY(utils.testCreateDbWithTables("KDbTest")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons" , "id", 400)); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons" , "name", "Nitish")); + + QVERIFY(utils.testDisconnectAndDropDb()); +} + +void KDbTest::deleteRecordWithTwoConstraintsTest() +{ + QVERIFY(utils.testCreateDbWithTables("KDbTest")); +//Both Arguments as INTEGER + QVERIFY(KDb::deleteRecords(utils.connection.data() , "persons", "id" ,KDbField::Integer,2, "age",KDbField::Integer,60)); + +//One argument is Integer and another one in Text--- SHOULD RETURN TRUE; + QVERIFY(KDb::deleteRecords(utils.connection.data() , "persons" , "age" ,KDbField::Integer,20,"name",KDbField::Text,"Jaroslaw")); + + //here in the declaration , the keys are parsed i guess. thus preventing error in case below. SHOULD HAVE A CHECK HERE. + QVERIFY(!KDb::deleteRecords(utils.connection.data() , "persons","age",KDbField::Integer,20, "name",KDbField::Text,56)); + +//passing both wrond type of arguments -- SHOULD RETURN FALSE; + QVERIFY(!KDb::deleteRecords(utils.connection.data() , "persons", "age",KDbField::Integer,"TRAP", "name",KDbField::Text,56)); + QVERIFY(utils.testDisconnectAndDropDb()); + +} + +void KDbTest::deleteRecordWithThreeConstraintsTest() +{ + QVERIFY(utils.testCreateDbWithTables("KDbTest")); + QVERIFY(KDb::deleteRecords(utils.connection.data() ,"persons","age",KDbField::Integer,27, + "name",KDbField::Text,"Jaraslaw","id",KDbField::Integer,1)); + QVERIFY(KDb::deleteRecords(utils.connection.data() ,"persons","age",KDbField::Integer,60, + "name",KDbField::Text,"Lech","id",KDbField::Integer,2)); + QVERIFY(utils.testDisconnectAndDropDb()); +} + +void KDbTest::deleteRecordsAllTest() +{ + QVERIFY(utils.testCreateDbWithTables("KDbTest")); + QVERIFY(KDb::deleteAllRecords(utils.connection.data() , "persons")); + QVERIFY(KDb::deleteAllRecords(utils.connection.data() , "cars")); + //Test below throws a warning because table does not exist. + QVERIFY(!KDb::deleteAllRecords(utils.connection.data() , "NonExistingTable")); + QVERIFY(utils.testDisconnectAndDropDb()); +} void KDbTest::cleanupTestCase() { }