File indexing completed on 2024-05-05 05:17:16

0001 // SPDX-FileCopyrightText: 2023 Claudio Cambra <claudio.cambra@kde.org>
0002 // SPDX-License-Identifier: LGPL-2.0-or-later
0003 
0004 #include "identitymodeltest.h"
0005 
0006 #include <QStandardPaths>
0007 #include <QTest>
0008 
0009 #include <KIdentityManagementCore/Identity>
0010 #include <KIdentityManagementCore/IdentityModel>
0011 
0012 using namespace KIdentityManagementCore;
0013 
0014 namespace
0015 {
0016 const auto i1Name = QStringLiteral("Test1");
0017 const auto i1Email = QStringLiteral("firstname.lastname@example.com");
0018 
0019 void cleanupIdentities(std::unique_ptr<IdentityManager> &manager)
0020 {
0021     QVERIFY(manager);
0022     // It is picking up identities from older tests sometimes, so cleanup
0023     // Note this will always leave at least one identity -- remove later
0024     while (manager->identities().count() > 1) {
0025         QVERIFY(manager->removeIdentity(manager->identities().at(0)));
0026         manager->commit();
0027     }
0028 }
0029 }
0030 
0031 QTEST_GUILESS_MAIN(IdentityModelTester)
0032 
0033 void IdentityModelTester::initTestCase()
0034 {
0035     QStandardPaths::setTestModeEnabled(true);
0036     manager = std::make_unique<IdentityManager>();
0037 
0038     cleanupIdentities(manager);
0039     QCOMPARE(manager->identities().count(), 1); // Can't remove all identities
0040 
0041     {
0042         auto &i1 = manager->newFromScratch(i1Name);
0043         i1.setPrimaryEmailAddress(i1Email);
0044         i1.setEmailAliases(QStringList{QStringLiteral("firstname@example.com"), QStringLiteral("lastname@example.com")});
0045     }
0046 
0047     {
0048         auto &i2 = manager->newFromScratch(QStringLiteral("Test2"));
0049         i2.setPrimaryEmailAddress(QStringLiteral("test@test.de"));
0050     }
0051 
0052     // Remove the first identity, which we couldn't remove above
0053     QVERIFY(manager->removeIdentity(manager->identities().at(0)));
0054 
0055     manager->commit();
0056     QCOMPARE(manager->identities().count(), 2);
0057 }
0058 
0059 void IdentityModelTester::testModelCount()
0060 {
0061     IdentityModel model;
0062     QCOMPARE(model.rowCount(), 2);
0063 }
0064 
0065 void IdentityModelTester::testModelData()
0066 {
0067     IdentityModel model;
0068     const auto &i1 = IdentityManager::self()->modifyIdentityForName(i1Name);
0069     const auto i1Index = model.index(0, 0);
0070     QCOMPARE(i1Index.data(IdentityModel::IdentityNameRole), i1Name);
0071     QCOMPARE(i1Index.data(IdentityModel::EmailRole), i1Email);
0072     QCOMPARE(i1Index.data(IdentityModel::UoidRole).toUInt(), i1.uoid());
0073 }
0074 
0075 void IdentityModelTester::testEmailFromUoid()
0076 {
0077     IdentityModel model;
0078     const auto &i1 = IdentityManager::self()->modifyIdentityForName(i1Name);
0079     QCOMPARE(model.email(i1.uoid()), i1Email);
0080 }
0081 
0082 #include "moc_identitymodeltest.cpp"