1 #include <chrono>
2 #include <cstdio>
3 #include <iostream>
4 #include <string>
5
6 #include "../backports.hpp"
7
8 #include "libdnf/transaction/CompsGroupItem.hpp"
9 #include "libdnf/transaction/Transformer.hpp"
10
11 #include "CompsGroupItemTest.hpp"
12
13 CPPUNIT_TEST_SUITE_REGISTRATION(CompsGroupItemTest);
14
15 using namespace libdnf;
16
17 void
setUp()18 CompsGroupItemTest::setUp()
19 {
20 conn = std::make_shared< SQLite3 >(":memory:");
21 Transformer::createDatabase(conn);
22 }
23
24 void
tearDown()25 CompsGroupItemTest::tearDown()
26 {
27 }
28
29 static std::shared_ptr< CompsGroupItem >
createCompsGroup(std::shared_ptr<SQLite3> conn)30 createCompsGroup(std::shared_ptr< SQLite3 > conn)
31 {
32 auto grp = std::make_shared< CompsGroupItem >(conn);
33 grp->setGroupId("core");
34 grp->setName("Smallest possible installation");
35 grp->setTranslatedName("translated(Smallest possible installation)");
36 grp->setPackageTypes(CompsPackageType::DEFAULT);
37 grp->addPackage("bash", true, CompsPackageType::MANDATORY);
38 grp->addPackage("rpm", false, CompsPackageType::OPTIONAL);
39 grp->save();
40 return grp;
41 }
42
43 void
testCreate()44 CompsGroupItemTest::testCreate()
45 {
46 auto grp = createCompsGroup(conn);
47
48 CompsGroupItem grp2(conn, grp->getId());
49 CPPUNIT_ASSERT(grp2.getId() == grp->getId());
50 CPPUNIT_ASSERT(grp2.getGroupId() == grp->getGroupId());
51 CPPUNIT_ASSERT(grp2.getName() == grp->getName());
52 CPPUNIT_ASSERT(grp2.getTranslatedName() == grp->getTranslatedName());
53 CPPUNIT_ASSERT(grp2.getPackageTypes() == grp->getPackageTypes());
54
55 {
56 auto pkg = grp2.getPackages().at(0);
57 CPPUNIT_ASSERT(pkg->getName() == "bash");
58 CPPUNIT_ASSERT(pkg->getInstalled() == true);
59 CPPUNIT_ASSERT(pkg->getPackageType() == CompsPackageType::MANDATORY);
60 }
61 {
62 auto pkg = grp2.getPackages().at(1);
63 CPPUNIT_ASSERT(pkg->getName() == "rpm");
64 CPPUNIT_ASSERT(pkg->getInstalled() == false);
65 CPPUNIT_ASSERT(pkg->getPackageType() == CompsPackageType::OPTIONAL);
66 }
67
68 // test adding a duplicate group
69 grp2.addPackage("rpm", true, CompsPackageType::MANDATORY);
70 {
71 auto pkg = grp2.getPackages().at(1);
72 CPPUNIT_ASSERT(pkg->getName() == "rpm");
73 CPPUNIT_ASSERT(pkg->getInstalled() == true);
74 CPPUNIT_ASSERT(pkg->getPackageType() == CompsPackageType::MANDATORY);
75 }
76 }
77
78 void
testGetTransactionItems()79 CompsGroupItemTest::testGetTransactionItems()
80 {
81 libdnf::swdb_private::Transaction trans(conn);
82 auto grp = createCompsGroup(conn);
83 auto ti = trans.addItem(grp, "", 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 grp2 = transItem->getCompsGroupItem();
96 {
97 auto pkg = grp2->getPackages().at(0);
98 CPPUNIT_ASSERT_EQUAL(std::string("bash"), pkg->getName());
99 }
100 {
101 auto pkg = grp2->getPackages().at(1);
102 CPPUNIT_ASSERT_EQUAL(std::string("rpm"), pkg->getName());
103 }
104 }
105