1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

test(history): Add unit test for when db is newer than qTox supports

This commit is contained in:
Anthony Bilinski 2022-05-08 03:35:39 -07:00
parent f4e64ee7a6
commit 6ad92bb637
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C

View File

@ -22,6 +22,7 @@
#include "src/core/toxfile.h"
#include "dbutility/dbutility.h"
#include "src/widget/tool/imessageboxmanager.h"
#include <QString>
#include <QTemporaryFile>
@ -70,6 +71,51 @@ bool insertFileId(RawDatabase& db, int row, bool valid)
, {resumeId});
return db.execNow(upgradeQueries);
}
class MockMessageBoxManager : public IMessageBoxManager
{
public:
~MockMessageBoxManager() override = default;
void showInfo(const QString& title, const QString& msg) override {
std::ignore = title;
std::ignore = msg;
}
void showWarning(const QString& title, const QString& msg) override {
std::ignore = title;
std::ignore = msg;
}
void showError(const QString& title, const QString& msg) override {
std::ignore = title;
std::ignore = msg;
++errorsShown;
}
bool askQuestion(const QString& title, const QString& msg, bool defaultAns = false,
bool warning = true, bool yesno = true) override {
std::ignore = title;
std::ignore = msg;
std::ignore = warning;
std::ignore = yesno;
return defaultAns;
}
bool askQuestion(const QString& title, const QString& msg, const QString& button1,
const QString& button2, bool defaultAns = false, bool warning = true) override {
std::ignore = title;
std::ignore = msg;
std::ignore = button1;
std::ignore = button2;
std::ignore = warning;
return defaultAns;
}
void confirmExecutableOpen(const QFileInfo& file) override {
std::ignore = file;
}
int getErrorsShown() {
return errorsShown;
}
private:
int errorsShown = 0;
};
} // namespace
class TestDbSchema : public QObject
@ -80,6 +126,7 @@ private slots:
void cleanup();
void testCreation();
void testIsNewDb();
void testNewerDb();
void test0to1();
void test1to2();
void test2to3();
@ -133,6 +180,19 @@ void TestDbSchema::testIsNewDb()
QVERIFY(newDb == false);
}
void TestDbSchema::testNewerDb()
{
auto db = std::shared_ptr<RawDatabase>{new RawDatabase{testDatabaseFile->fileName(), {}, {}}};
createSchemaAtVersion(db, DbUtility::schema0);
int futureSchemaVersion = 1000000;
db->execNow(
RawDatabase::Query(QStringLiteral("PRAGMA user_version = %1").arg(futureSchemaVersion)));
MockMessageBoxManager messageBoxManager;
bool success = DbUpgrader::dbSchemaUpgrade(db, messageBoxManager);
QVERIFY(success == false);
QVERIFY(messageBoxManager.getErrorsShown() == 1);
}
void TestDbSchema::test0to1()
{
auto db = std::shared_ptr<RawDatabase>{new RawDatabase{testDatabaseFile->fileName(), {}, {}}};