/
farado
/
farado-binara
Обзор
Документация
Войти
/
farado
/
farado-binara
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
tests/data_elements/test_data_element_role.cpp
93 строки
4 KB
Ostapenko Alexey
[datenaro] Добавление идентификатора нового элемента при сохранении в БД.
12 янв 2024, 18:17
12 янв 2024, 18:17
deb060d
Код
Авторство
О чём код?
#define BOOST_TEST_MODULE testDataElementRole #include <boost/test/unit_test.hpp> #include "common/helpers/container_helper.hpp" #include "common/elements/element_maker.h" #include "common/elements/role.h" #include "datenaro/database/data_elements/data_role.h" #include "datenaro/database/data_gate.h" #include "datenaro/database/migrator.h" BOOST_AUTO_TEST_CASE(testDataElementRole) { // Создание и апгрейд БД. const auto migrationResult = Database::Migrator("test.db").run(); assert(0 == migrationResult); Database::DataGate gate("test.db"); // Создание тестируемого объекта предметной области с конкретным идентификатором. auto first = std::make_shared<Elements::Role>(); first->setId(1); first->setCaption("a"); first->setDescription("b"); { Elements::BasePermissions permissions; permissions.setFlag(Elements::BasePermission::FullAdmin); permissions.setFlag(Elements::BasePermission::PlanCorrector); first->setBasePermissions(permissions); } // Сохранение в тестовую БД. gate.saveElement(first); // Чтение из тестовой БД и проверка полей. auto second = gate.loadElement(Elements::ElementType::Role, 1)->elementCast<Elements::Role>(); BOOST_CHECK(1 == second->id()); BOOST_CHECK("a" == second->caption()); BOOST_CHECK("b" == second->description()); { const auto permissions = second->basePermissions(); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::None)); BOOST_CHECK(true == permissions.testFlag(Elements::BasePermission::FullAdmin)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::DaysCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::UserCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::WorkflowCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::BoardCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::ProjectCorrector)); BOOST_CHECK(true == permissions.testFlag(Elements::BasePermission::PlanCorrector)); } // Удаление из тестовой БД и проверка, объект был и удалился. BOOST_CHECK(true == Common::contains(gate.getElementsIds(Database::DataRole::ids), 1)); gate.remove(Database::DataRole::removeOne, 1); BOOST_CHECK(false == Common::contains(gate.getElementsIds(Database::DataRole::ids), 1)); // Удаление всех объектов данного типа из тестовой БД. gate.remove(Database::DataRole::remove, gate.getElementsIds(Database::DataRole::ids)); // Имитация нового объекта. first->setId(0); // Сохранение в тестовую БД. gate.saveElement(first); // Элементу назначен идентификатор при сохранении в БД. BOOST_CHECK(0 != first->id()); // Чтение из тестовой БД и проверка полей. auto third = gate.loadElement(Elements::ElementType::Role, 1)->elementCast<Elements::Role>(); BOOST_CHECK(1 == third->id()); BOOST_CHECK("a" == third->caption()); BOOST_CHECK("b" == third->description()); { const auto permissions = third->basePermissions(); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::None)); BOOST_CHECK(true == permissions.testFlag(Elements::BasePermission::FullAdmin)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::DaysCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::UserCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::WorkflowCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::BoardCorrector)); BOOST_CHECK(false == permissions.testFlag(Elements::BasePermission::ProjectCorrector)); BOOST_CHECK(true == permissions.testFlag(Elements::BasePermission::PlanCorrector)); } // Удаление всех объектов данного типа из тестовой БД. gate.remove(Database::DataRole::remove, gate.getElementsIds(Database::DataRole::ids)); }