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,111 @@ 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)); + + //Passing a valid Integer in String Format-- Returns True. + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "id", "3")); + + //passing astring instead of string. + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "id", "Foo")); + + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons" , "name", "Jaroslaw")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "surname", "FooBar")); + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "age", 45)); +//NON existing ROW -- should return false; + //Inserting NULL and empty data. + KDbTableSchema *kdb_t = utils.connection.data()->tableSchema("persons"); + utils.connection.data()->insertRecord(kdb_t,QVariant(10), QVariant(20), QVariant(), QVariant("Bar") ) ; + utils.connection.data()->insertRecord(kdb_t,QVariant(15), QVariant(20), QVariant(""), QVariant("Bar") ) ; + + //Passing a null value instead of string + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "name", NULL)); + + //Passing an empty string + QVERIFY(KDb::deleteRecords(utils.connection.data(), "persons", "name", "")); + 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", "FooBar")); + //Passing a NonExisting Column -- FAILING HERE + QVERIFY2(!KDb::deleteRecords(utils.connection.data(), "persons" , "Foo", "FooBar"),"Failing Here because 'Foo' column does not exist!"); + + 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)); + + //Passing NULL value in one of the parameter. + KDbTableSchema *kdb_t = utils.connection.data()->tableSchema("persons"); + utils.connection.data()->insertRecord(kdb_t,QVariant(10), QVariant(), QVariant("Foo"), QVariant("Bar") ) ; + QVERIFY(KDb::deleteRecords(utils.connection.data() , "persons", "id" ,KDbField::Integer,10, "age",KDbField::Integer,QVariant() )); + + //Passing 2 NULL values in function. + utils.connection.data()->insertRecord(kdb_t,QVariant(20), QVariant(), QVariant(), QVariant("Bar") ) ; + QVERIFY(KDb::deleteRecords(utils.connection.data() , "persons", "age" ,KDbField::Integer,QVariant(), "name",KDbField::Text,QVariant())); + + //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")); + KDbTableSchema *kdb_t = utils.connection.data()->tableSchema("persons"); + //One null value. + utils.connection.data()->insertRecord(kdb_t,QVariant(10), QVariant(), QVariant("Foo"), QVariant("Bar") ) ; + + QVERIFY(KDb::deleteRecords(utils.connection.data() ,"persons","age",KDbField::Integer,QVariant(), + "name",KDbField::Text,"Foo","surname",KDbField::Text,"Bar")); + //Mix of null and empty values + QVERIFY(KDb::deleteRecords(utils.connection.data() ,"persons","age",KDbField::Integer,QVariant(), + "name",KDbField::Text,"","surname",KDbField::Text,"")); + + 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")); + + //Passing a NULL string as an argument + QVERIFY(!KDb::deleteAllRecords(utils.connection.data() , QString())); + + //Passing empty string as argument + QVERIFY(!KDb::deleteAllRecords(utils.connection.data() , "")); + + 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() { }