1 #include <chrono>
2 #include <cstdio>
3 #include <iostream>
4 #include <string>
5
6 #include "../backports.hpp"
7
8 #include "libdnf/transaction/CompsEnvironmentItem.hpp"
9 #include "libdnf/transaction/Transformer.hpp"
10
11 #include "CompsEnvironmentItemTest.hpp"
12
13 CPPUNIT_TEST_SUITE_REGISTRATION(CompsEnvironmentItemTest);
14
15 using namespace libdnf;
16
17 void
setUp()18 CompsEnvironmentItemTest::setUp()
19 {
20 conn = std::make_shared< SQLite3 >(":memory:");
21 Transformer::createDatabase(conn);
22 }
23
24 void
tearDown()25 CompsEnvironmentItemTest::tearDown()
26 {
27 }
28
29 static std::shared_ptr< CompsEnvironmentItem >
createCompsEnvironment(std::shared_ptr<SQLite3> conn)30 createCompsEnvironment(std::shared_ptr< SQLite3 > conn)
31 {
32 auto env = std::make_shared< CompsEnvironmentItem >(conn);
33 env->setEnvironmentId("minimal");
34 env->setName("Minimal Environment");
35 env->setTranslatedName("translated(Minimal Environment)");
36 env->setPackageTypes(CompsPackageType::DEFAULT);
37 env->addGroup("core", true, CompsPackageType::MANDATORY);
38 env->addGroup("base", false, CompsPackageType::OPTIONAL);
39 env->save();
40 return env;
41 }
42
43 void
testCreate()44 CompsEnvironmentItemTest::testCreate()
45 {
46 auto env = createCompsEnvironment(conn);
47
48 CompsEnvironmentItem env2(conn, env->getId());
49 CPPUNIT_ASSERT(env2.getId() == env->getId());
50 CPPUNIT_ASSERT(env2.getEnvironmentId() == env->getEnvironmentId());
51 CPPUNIT_ASSERT(env2.getName() == env->getName());
52 CPPUNIT_ASSERT(env2.getTranslatedName() == env->getTranslatedName());
53 CPPUNIT_ASSERT(env2.getPackageTypes() == env->getPackageTypes());
54
55 {
56 auto group = env2.getGroups().at(0);
57 CPPUNIT_ASSERT(group->getGroupId() == "base");
58 CPPUNIT_ASSERT(group->getInstalled() == false);
59 CPPUNIT_ASSERT(group->getGroupType() == CompsPackageType::OPTIONAL);
60 }
61 {
62 auto group = env2.getGroups().at(1);
63 CPPUNIT_ASSERT(group->getGroupId() == "core");
64 CPPUNIT_ASSERT(group->getInstalled() == true);
65 CPPUNIT_ASSERT(group->getGroupType() == CompsPackageType::MANDATORY);
66 }
67
68 // test adding a duplicate group
69 env2.addGroup("base", true, CompsPackageType::MANDATORY);
70 {
71 auto group = env2.getGroups().at(0);
72 CPPUNIT_ASSERT(group->getGroupId() == "base");
73 CPPUNIT_ASSERT(group->getInstalled() == true);
74 CPPUNIT_ASSERT(group->getGroupType() == CompsPackageType::MANDATORY);
75 }
76 }
77
78 void
testGetTransactionItems()79 CompsEnvironmentItemTest::testGetTransactionItems()
80 {
81 libdnf::swdb_private::Transaction trans(conn);
82 auto env = createCompsEnvironment(conn);
83 auto ti = trans.addItem(env, "", TransactionItemAction::INSTALL, TransactionItemReason::USER);
84 ti->setState(TransactionItemState::DONE);
85 trans.begin();
86 trans.finish(TransactionState::DONE);
87
88 libdnf::Transaction trans2(conn, trans.getId());
89
90 auto transItems = trans2.getItems();
91 CPPUNIT_ASSERT_EQUAL(1, static_cast< int >(transItems.size()));
92
93 auto transItem = transItems.at(0);
94
95 auto env2 = transItem->getCompsEnvironmentItem();
96 {
97 auto group = env2->getGroups().at(0);
98 CPPUNIT_ASSERT_EQUAL(std::string("base"), group->getGroupId());
99 }
100 {
101 auto group = env2->getGroups().at(1);
102 CPPUNIT_ASSERT_EQUAL(std::string("core"), group->getGroupId());
103 }
104 }
105