63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
// Интеграционный тест Фазы 1: SettingsStore + VaultManager + GitManager.
|
|
// Используем временную папку для QSettings (INI-формат), чтобы не трогать реальные.
|
|
#include <QCoreApplication>
|
|
#include <QTemporaryDir>
|
|
#include <QDir>
|
|
#include <QSettings>
|
|
#include <cstdio>
|
|
|
|
#include "app/VaultManager.h"
|
|
#include "core/SettingsStore.h"
|
|
#include "git/GitManager.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QCoreApplication app(argc, argv);
|
|
app.setOrganizationName("FloraTest");
|
|
app.setApplicationName("flora_test");
|
|
|
|
QTemporaryDir dir;
|
|
QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, dir.path());
|
|
|
|
{
|
|
SettingsStore settings;
|
|
GitManager git;
|
|
VaultManager vault(&settings, &git);
|
|
|
|
const QString vaultPath = dir.path() + "/vault";
|
|
const QString err = vault.createVault(vaultPath);
|
|
if (!err.isEmpty()) {
|
|
std::fprintf(stderr, "FAIL: createVault: %s\n", qPrintable(err));
|
|
return 1;
|
|
}
|
|
if (!settings.hasVault(vaultPath) || settings.currentVault() != vaultPath) {
|
|
std::fprintf(stderr, "FAIL: хранилище не сохранено\n");
|
|
return 1;
|
|
}
|
|
if (!git.hasCommits(vaultPath)) {
|
|
// коммитов может ещё не быть (нет файлов) — инициализация должна пройти
|
|
}
|
|
if (vault.vaults().isEmpty()) {
|
|
std::fprintf(stderr, "FAIL: список хранилищ пуст\n");
|
|
return 1;
|
|
}
|
|
|
|
const QString bad = vault.createVault("");
|
|
if (bad.isEmpty()) {
|
|
std::fprintf(stderr, "FAIL: пустой путь не отклонён\n");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
{
|
|
// Проверка персистентности в другом экземпляре
|
|
SettingsStore settings;
|
|
if (!settings.hasVault(dir.path() + "/vault")) {
|
|
std::fprintf(stderr, "FAIL: настройки не сохранились\n");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
std::printf("VAULT TEST OK\n");
|
|
return 0;
|
|
} |