File indexing completed on 2024-04-14 14:18:54

0001 /*
0002     This file is part of the KContacts framework.
0003     SPDX-FileCopyrightText: 2015-2019 Laurent Montel <montel@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 #include "emailtest.h"
0008 #include "email.h"
0009 #include "parametermap_p.h"
0010 #include "vcardtool_p.h"
0011 #include <QTest>
0012 
0013 EmailTest::EmailTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 EmailTest::~EmailTest()
0019 {
0020 }
0021 
0022 void EmailTest::shouldHaveDefaultValue()
0023 {
0024     KContacts::Email email;
0025     QVERIFY(!email.isValid());
0026     QVERIFY(email.mail().isEmpty());
0027     QVERIFY(email.params().empty());
0028 }
0029 
0030 void EmailTest::shouldAssignValue()
0031 {
0032     const QString mail(QStringLiteral("foo@kde.org"));
0033     KContacts::ParameterMap params;
0034     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0035     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0036     KContacts::Email email(mail);
0037     email.setParams(params);
0038     QVERIFY(email.isValid());
0039     QVERIFY(!email.mail().isEmpty());
0040     QCOMPARE(email.mail(), mail);
0041     QVERIFY(!email.params().empty());
0042     QCOMPARE(email.params(), params);
0043 }
0044 
0045 void EmailTest::shouldAssignExternal()
0046 {
0047     KContacts::Email email;
0048     const QString mail(QStringLiteral("foo@kde.org"));
0049     email.setEmail(mail);
0050     QVERIFY(email.isValid());
0051     QVERIFY(!email.mail().isEmpty());
0052     QCOMPARE(email.mail(), mail);
0053 }
0054 
0055 void EmailTest::shouldSerialized()
0056 {
0057     KContacts::Email email;
0058     KContacts::Email result;
0059     const QString mail(QStringLiteral("foo@kde.org"));
0060     email.setEmail(mail);
0061     KContacts::ParameterMap params;
0062     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0063     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0064     email.setParams(params);
0065 
0066     QByteArray data;
0067     QDataStream s(&data, QIODevice::WriteOnly);
0068     s << email;
0069 
0070     QDataStream t(&data, QIODevice::ReadOnly);
0071     t >> result;
0072 
0073     QVERIFY(email == result);
0074 }
0075 
0076 void EmailTest::shouldEqualEmail()
0077 {
0078     KContacts::Email email;
0079     KContacts::Email result;
0080     const QString mail(QStringLiteral("foo@kde.org"));
0081     email.setEmail(mail);
0082     KContacts::ParameterMap params;
0083     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0084     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0085     email.setParams(params);
0086 
0087     result = email;
0088     QVERIFY(email == result);
0089 }
0090 
0091 void EmailTest::shouldParseEmailVCard()
0092 {
0093     QByteArray vcarddata(
0094         "BEGIN:VCARD\n"
0095         "VERSION:3.0\n"
0096         "EMAIL;TYPE=HOME,PREF;X-EVOLUTION-UI-SLOT=2:foo@foo.com\n"
0097         "N:LastName;FirstName;;;\n"
0098         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0099         "REV:2015-03-14T09:24:45+00:00\n"
0100         "FN:FirstName LastName\n"
0101         "END:VCARD\n");
0102 
0103     KContacts::VCardTool vcard;
0104     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0105     QCOMPARE(lst.count(), 1);
0106     QVERIFY(!lst.at(0).emailList().isEmpty());
0107     QCOMPARE(lst.at(0).emailList().count(), 1);
0108     KContacts::Email email = lst.at(0).emailList().at(0);
0109     QCOMPARE(email.mail(), QStringLiteral("foo@foo.com"));
0110     QCOMPARE(email.params().size(), 2);
0111 }
0112 
0113 void EmailTest::shouldParseEmailVCardWithMultiEmails()
0114 {
0115     QByteArray vcarddata(
0116         "BEGIN:VCARD\n"
0117         "VERSION:3.0\n"
0118         "EMAIL;TYPE=WORK;X-EVOLUTION-UI-SLOT=2:foo@foo.com\n"
0119         "EMAIL;TYPE=HOME,PREF;X-EVOLUTION-UI-SLOT=2:bla@bla.com\n"
0120         "N:LastName;FirstName;;;\n"
0121         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0122         "REV:2015-03-14T09:24:45+00:00\n"
0123         "FN:FirstName LastName\n"
0124         "END:VCARD\n");
0125 
0126     KContacts::VCardTool vcard;
0127     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0128     QCOMPARE(lst.count(), 1);
0129     QVERIFY(!lst.at(0).emailList().isEmpty());
0130     QCOMPARE(lst.at(0).emailList().count(), 2);
0131     KContacts::Email email = lst.at(0).emailList().at(0);
0132     QCOMPARE(email.mail(), QStringLiteral("bla@bla.com"));
0133     QCOMPARE(email.type(), KContacts::Email::Home);
0134     QVERIFY(email.isPreferred());
0135     email = lst.at(0).emailList().at(1);
0136     QCOMPARE(email.mail(), QStringLiteral("foo@foo.com"));
0137     QCOMPARE(email.type(), KContacts::Email::Work);
0138     QVERIFY(!email.isPreferred());
0139 
0140     QCOMPARE(email.params().size(), 2);
0141 }
0142 
0143 void EmailTest::shouldParseEmailVCardWithoutEmail()
0144 {
0145     QByteArray vcarddata(
0146         "BEGIN:VCARD\n"
0147         "VERSION:3.0\n"
0148         "N:LastName;FirstName;;;\n"
0149         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0150         "REV:2015-03-14T09:24:45+00:00\n"
0151         "FN:FirstName LastName\n"
0152         "END:VCARD\n");
0153 
0154     KContacts::VCardTool vcard;
0155     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0156     QCOMPARE(lst.count(), 1);
0157     QVERIFY(lst.at(0).emailList().isEmpty());
0158 }
0159 
0160 void EmailTest::shouldExportVcard()
0161 {
0162     KContacts::AddresseeList lst;
0163     KContacts::Addressee addr;
0164     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org") << QStringLiteral("bla@kde.org"));
0165     addr.setUid(QStringLiteral("testuid"));
0166     lst << addr;
0167     KContacts::VCardTool vcard;
0168     QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0169     QByteArray expected(
0170         "BEGIN:VCARD\r\n"
0171         "VERSION:4.0\r\n"
0172         "EMAIL:foo@kde.org\r\n"
0173         "EMAIL:bla@kde.org\r\n"
0174         "N:;;;;\r\n"
0175         "UID:testuid\r\n"
0176         "END:VCARD\r\n\r\n");
0177 
0178     QCOMPARE(ba, expected);
0179 
0180     KContacts::Addressee addr2;
0181     addr2.setUid(QStringLiteral("testuid"));
0182     KContacts::Email email1;
0183     KContacts::Email email2;
0184     email1.setEmail(QStringLiteral("foo@kde.org"));
0185     email1.setType(KContacts::Email::Work);
0186     email1.setPreferred(true);
0187     email2.setEmail(QStringLiteral("bla@kde.org"));
0188     email2.setType(KContacts::Email::Home);
0189     addr2.setEmailList({email1, email2});
0190     ba = vcard.exportVCards({addr2}, KContacts::VCard::v4_0);
0191     QByteArray expected2(
0192         "BEGIN:VCARD\r\n"
0193         "VERSION:4.0\r\n"
0194         "EMAIL;TYPE=WORK,PREF:foo@kde.org\r\n"
0195         "EMAIL;TYPE=HOME:bla@kde.org\r\n"
0196         "N:;;;;\r\n"
0197         "UID:testuid\r\n"
0198         "END:VCARD\r\n\r\n");
0199 
0200     QCOMPARE(ba, expected2);
0201 }
0202 
0203 QTEST_MAIN(EmailTest)
0204 
0205 #include "moc_emailtest.cpp"