kima2/test/test_database.cpp

61 lines
1.7 KiB
C++

#define BOOST_TEST_MODULE database
#include "../src/core/database.h"
#include "../src/core/seller.h"
#include <filesystem>
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(create_database)
{
Database db(":memory:");
BOOST_CHECK_NO_THROW(db.init());
}
BOOST_AUTO_TEST_CASE(store_seller_fail)
{
Database db(":memory:");
db.init();
std::vector<std::shared_ptr<Seller>> sellers;
sellers.push_back(std::make_shared<Seller>());
sellers.push_back(std::make_shared<Seller>());
BOOST_CHECK_THROW(db.storeSellers(sellers), std::runtime_error);
}
BOOST_AUTO_TEST_CASE(store_sellers_succ)
{
Database db(":memory:");
db.init();
std::vector<std::shared_ptr<Seller>> sellers;
auto a = std::make_shared<Seller>();
a->createUuid();
a->setSellerNo(1);
auto b = std::make_shared<Seller>("Max", "Mustermann");
b->createUuid();
b->setSellerNo(2);
auto c = std::make_shared<Article>();
c->createUuid();
c->setPrice(500);
c->setDescription("Test");
b->addArticle(c);
BOOST_TEST(a->getUuid() != b->getUuid());
sellers.push_back(a);
sellers.push_back(b);
BOOST_CHECK_NO_THROW(db.storeSellers(sellers));
}
BOOST_AUTO_TEST_CASE(seller_states)
{
Database db(":memory:");
db.init();
std::vector<std::shared_ptr<Seller>> sellers;
auto a = std::make_shared<Seller>();
a->setSellerNo(3);
a->createUuid();
sellers.push_back(a);
std::cout << "Anzahl sellers: " << sellers.size() << "\n";
BOOST_TEST((sellers.at(0)->getState() == Entity::State::NEW));
BOOST_TEST(db.storeSellers(sellers) == 1);
BOOST_TEST((sellers.at(0)->getState() == Entity::State::OK));
BOOST_TEST(db.storeSellers(sellers) == 0);
}