File indexing completed on 2025-02-16 04:49:30

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "checkduplicateemailsjobtest.h"
0008 #include "../duplicateemails/checkduplicateemailsjob.h"
0009 #include <QStringList>
0010 #include <QTest>
0011 
0012 CheckDuplicateEmailsJobTest::CheckDuplicateEmailsJobTest(QObject *parent)
0013     : QObject(parent)
0014 {
0015 }
0016 
0017 CheckDuplicateEmailsJobTest::~CheckDuplicateEmailsJobTest() = default;
0018 
0019 void CheckDuplicateEmailsJobTest::shouldHaveDefaultValue()
0020 {
0021     CheckDuplicateEmailsJob job;
0022     QVERIFY(job.result().isEmpty());
0023 }
0024 
0025 void CheckDuplicateEmailsJobTest::shouldReturnEmptyListWhenEmailsListIsEmpty()
0026 {
0027     CheckDuplicateEmailsJob job;
0028     QStringList listEmails;
0029     job.setEmails(listEmails);
0030     job.start();
0031     QVERIFY(job.result().isEmpty());
0032 }
0033 
0034 void CheckDuplicateEmailsJobTest::shouldReturnEmails_data()
0035 {
0036     QTest::addColumn<QStringList>("emails");
0037     QTest::addColumn<QMap<QString, int>>("result");
0038     QTest::newRow("empty") << QStringList() << QMap<QString, int>();
0039 
0040     QStringList lst;
0041     lst.append(QStringLiteral("foo@kde.org"));
0042     lst.append(QStringLiteral("bla@kde.org"));
0043     lst.append(QStringLiteral("blo@kde.org"));
0044     QTest::newRow("emptyresultbutnotemptylist") << lst << QMap<QString, int>();
0045 
0046     lst.clear();
0047     lst.append(QStringLiteral("foo@kde.org"));
0048     lst.append(QStringLiteral("foo@kde.org"));
0049     lst.append(QStringLiteral("blo@kde.org"));
0050     QMap<QString, int> result;
0051     result.insert(QStringLiteral("foo@kde.org"), 2);
0052     QTest::newRow("oneduplicateemails") << lst << result;
0053 
0054     lst.clear();
0055     lst.append(QStringLiteral("foo@kde.org"));
0056     lst.append(QStringLiteral("foo@kde.org"));
0057     lst.append(QStringLiteral("blo@kde.org"));
0058     lst.append(QStringLiteral("blo@kde.org"));
0059     result.clear();
0060     result.insert(QStringLiteral("foo@kde.org"), 2);
0061     result.insert(QStringLiteral("blo@kde.org"), 2);
0062     QTest::newRow("twoduplicateemails") << lst << result;
0063 
0064     lst.clear();
0065     lst.append(QStringLiteral("foo@kde.org"));
0066     lst.append(QStringLiteral("foo@kde.org"));
0067     lst.append(QStringLiteral("foo@kde.org"));
0068     lst.append(QStringLiteral("blo@kde.org"));
0069     lst.append(QStringLiteral("blo@kde.org"));
0070     result.clear();
0071     result.insert(QStringLiteral("foo@kde.org"), 3);
0072     result.insert(QStringLiteral("blo@kde.org"), 2);
0073     QTest::newRow("twoduplicateemailswithdifferentvalue") << lst << result;
0074 
0075     lst.clear();
0076     lst.append(QStringLiteral("foo <foo@kde.org>"));
0077     lst.append(QStringLiteral("foo@kde.org"));
0078     lst.append(QStringLiteral("foo@kde.org"));
0079     lst.append(QStringLiteral("blo@kde.org"));
0080     lst.append(QStringLiteral("blo@kde.org"));
0081 
0082     result.clear();
0083     result.insert(QStringLiteral("foo@kde.org"), 3);
0084     result.insert(QStringLiteral("blo@kde.org"), 2);
0085     QTest::newRow("twoduplicateemailswithemailname") << lst << result;
0086 
0087     lst.clear();
0088     lst.append(QStringLiteral("foo <foo@kde.org>, foo@kde.org, foo@kde.org"));
0089     lst.append(QStringLiteral("foo@kde.org"));
0090 
0091     result.clear();
0092     result.insert(QStringLiteral("foo@kde.org"), 4);
0093     QTest::newRow("emailseparatedbycommat") << lst << result;
0094 }
0095 
0096 void CheckDuplicateEmailsJobTest::shouldReturnEmails()
0097 {
0098     QFETCH(QStringList, emails);
0099     using mapEmails = QMap<QString, int>;
0100     QFETCH(mapEmails, result);
0101     CheckDuplicateEmailsJob job;
0102     job.setEmails(emails);
0103     job.start();
0104     QCOMPARE(job.result(), result);
0105 }
0106 
0107 QTEST_MAIN(CheckDuplicateEmailsJobTest)
0108 
0109 #include "moc_checkduplicateemailsjobtest.cpp"