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

0001 /*
0002     This file is part of the KContacts framework.
0003     SPDX-FileCopyrightText: 2016-2019 Laurent Montel <montel@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "fieldgrouptest.h"
0009 #include "fieldgroup.h"
0010 #include "parametermap_p.h"
0011 #include "vcardtool_p.h"
0012 #include <QTest>
0013 
0014 FieldGroupTest::FieldGroupTest(QObject *parent)
0015     : QObject(parent)
0016 {
0017 }
0018 
0019 FieldGroupTest::~FieldGroupTest()
0020 {
0021 }
0022 
0023 void FieldGroupTest::shouldHaveDefaultValue()
0024 {
0025     KContacts::FieldGroup fieldgroup;
0026     QVERIFY(!fieldgroup.isValid());
0027     QVERIFY(fieldgroup.fieldGroupName().isEmpty());
0028     QVERIFY(fieldgroup.params().empty());
0029     QVERIFY(fieldgroup.value().isEmpty());
0030 }
0031 
0032 void FieldGroupTest::shouldAssignValue()
0033 {
0034     const QString fielgroundname(QStringLiteral("fr"));
0035     const QString value(QStringLiteral("bla"));
0036     KContacts::ParameterMap params;
0037     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0038     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0039     KContacts::FieldGroup fieldGroup(fielgroundname);
0040     fieldGroup.setParams(params);
0041     fieldGroup.setValue(value);
0042     QVERIFY(fieldGroup.isValid());
0043     QVERIFY(!fieldGroup.fieldGroupName().isEmpty());
0044     QCOMPARE(fieldGroup.fieldGroupName(), fielgroundname);
0045     QVERIFY(!fieldGroup.params().empty());
0046     QCOMPARE(fieldGroup.params(), params);
0047     QCOMPARE(fieldGroup.value(), value);
0048 }
0049 
0050 void FieldGroupTest::shouldAssignExternal()
0051 {
0052     KContacts::FieldGroup fieldgroup;
0053     const QString fieldgroundname(QStringLiteral("fr"));
0054     const QString value(QStringLiteral("bla"));
0055     fieldgroup.setValue(value);
0056     fieldgroup.setFieldGroupName(fieldgroundname);
0057     QVERIFY(fieldgroup.isValid());
0058     QCOMPARE(fieldgroup.fieldGroupName(), fieldgroundname);
0059     QCOMPARE(fieldgroup.value(), value);
0060 }
0061 
0062 void FieldGroupTest::shouldSerialized()
0063 {
0064     KContacts::FieldGroup fieldGroup;
0065     KContacts::FieldGroup result;
0066     const QString lang(QStringLiteral("fr"));
0067     fieldGroup.setFieldGroupName(lang);
0068     const QString value(QStringLiteral("bla"));
0069     fieldGroup.setValue(value);
0070 
0071     KContacts::ParameterMap params;
0072     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0073     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0074     fieldGroup.setParams(params);
0075 
0076     QByteArray data;
0077     QDataStream s(&data, QIODevice::WriteOnly);
0078     s << fieldGroup;
0079 
0080     QDataStream t(&data, QIODevice::ReadOnly);
0081     t >> result;
0082 
0083     QVERIFY(fieldGroup == result);
0084 }
0085 
0086 void FieldGroupTest::shouldEqualFieldGroup()
0087 {
0088     KContacts::FieldGroup fieldGroup;
0089     KContacts::FieldGroup result;
0090     const QString lang(QStringLiteral("fr"));
0091     const QString value(QStringLiteral("bla"));
0092     fieldGroup.setValue(value);
0093     fieldGroup.setFieldGroupName(lang);
0094     KContacts::ParameterMap params;
0095     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0096     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0097     fieldGroup.setParams(params);
0098 
0099     result = fieldGroup;
0100     QVERIFY(fieldGroup == result);
0101 }
0102 
0103 void FieldGroupTest::shouldParseFieldGroup()
0104 {
0105     QByteArray vcarddata(
0106         "BEGIN:VCARD\n"
0107         "VERSION:3.0\n"
0108         "N:LastName;FirstName;;;\n"
0109         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0110         "REV:2015-03-14T09:24:45+00:00\n"
0111         "FN:FirstName LastName\n"
0112         "fr.foo:bla\n"
0113         "fr2.foo:bla\n"
0114         "END:VCARD\n");
0115 
0116     KContacts::VCardTool vcard;
0117     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0118     QCOMPARE(lst.count(), 1);
0119     QCOMPARE(lst.at(0).fieldGroupList().count(), 2);
0120 }
0121 
0122 void FieldGroupTest::shouldParseWithoutFieldGroup()
0123 {
0124     QByteArray vcarddata(
0125         "BEGIN:VCARD\n"
0126         "VERSION:3.0\n"
0127         "N:LastName;FirstName;;;\n"
0128         "UID:c80cf296-0825-4eb0-ab16-1fac1d522a33@xxxxxx.xx\n"
0129         "REV:2015-03-14T09:24:45+00:00\n"
0130         "FN:FirstName LastName\n"
0131         "END:VCARD\n");
0132 
0133     KContacts::VCardTool vcard;
0134     const KContacts::AddresseeList lst = vcard.parseVCards(vcarddata);
0135     QCOMPARE(lst.count(), 1);
0136     QCOMPARE(lst.at(0).fieldGroupList().count(), 0);
0137 }
0138 
0139 void FieldGroupTest::shouldCreateVCard()
0140 {
0141     KContacts::AddresseeList lst;
0142     KContacts::Addressee addr;
0143     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0144     addr.setUid(QStringLiteral("testuid"));
0145     KContacts::FieldGroup::List lstFieldGroup;
0146     KContacts::FieldGroup fieldGroup(QStringLiteral("fr"));
0147     const QString value(QStringLiteral("bla"));
0148     fieldGroup.setValue(value);
0149     lstFieldGroup << fieldGroup;
0150     addr.setFieldGroupList(lstFieldGroup);
0151     lst << addr;
0152     KContacts::VCardTool vcard;
0153     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0154     QByteArray expected(
0155         "BEGIN:VCARD\r\n"
0156         "VERSION:4.0\r\n"
0157         "EMAIL:foo@kde.org\r\n"
0158         "N:;;;;\r\n"
0159         "UID:testuid\r\n"
0160         "fr:bla\r\n"
0161         "END:VCARD\r\n\r\n");
0162 
0163     QCOMPARE(ba, expected);
0164 }
0165 
0166 void FieldGroupTest::shouldCreateVCardWithTwoLang()
0167 {
0168     KContacts::AddresseeList lst;
0169     KContacts::Addressee addr;
0170     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0171     addr.setUid(QStringLiteral("testuid"));
0172     KContacts::FieldGroup::List lstFieldGroup;
0173     KContacts::FieldGroup fieldGroup1(QStringLiteral("fr"));
0174     const QString value(QStringLiteral("bla"));
0175     fieldGroup1.setValue(value);
0176 
0177     KContacts::FieldGroup fieldGroup2(QStringLiteral("fr2"));
0178     fieldGroup2.setValue(value);
0179     lstFieldGroup << fieldGroup1 << fieldGroup2;
0180     addr.setFieldGroupList(lstFieldGroup);
0181     lst << addr;
0182     KContacts::VCardTool vcard;
0183     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0184     QByteArray expected(
0185         "BEGIN:VCARD\r\n"
0186         "VERSION:4.0\r\n"
0187         "EMAIL:foo@kde.org\r\n"
0188         "N:;;;;\r\n"
0189         "UID:testuid\r\n"
0190         "fr:bla\r\n"
0191         "fr2:bla\r\n"
0192         "END:VCARD\r\n\r\n");
0193 
0194     QCOMPARE(ba, expected);
0195 }
0196 
0197 void FieldGroupTest::shouldCreateVCardWithParameters()
0198 {
0199     KContacts::AddresseeList lst;
0200     KContacts::Addressee addr;
0201     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0202     addr.setUid(QStringLiteral("testuid"));
0203     const QString value(QStringLiteral("bla"));
0204     KContacts::FieldGroup::List lstFieldGroup;
0205     KContacts::FieldGroup fieldGroup(QStringLiteral("fr"));
0206     KContacts::ParameterMap params;
0207     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0208     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0209     fieldGroup.setParams(params);
0210     fieldGroup.setValue(value);
0211     lstFieldGroup << fieldGroup;
0212     addr.setFieldGroupList(lstFieldGroup);
0213     lst << addr;
0214     KContacts::VCardTool vcard;
0215     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v4_0);
0216     QByteArray expected(
0217         "BEGIN:VCARD\r\n"
0218         "VERSION:4.0\r\n"
0219         "EMAIL:foo@kde.org\r\n"
0220         "N:;;;;\r\n"
0221         "UID:testuid\r\n"
0222         "fr;FOO1=bla1,blo1;FOO2=bla2,blo2:bla\r\n"
0223         "END:VCARD\r\n\r\n");
0224     QCOMPARE(ba, expected);
0225 }
0226 
0227 void FieldGroupTest::shouldNotGenerateFieldGroupForVCard3()
0228 {
0229     KContacts::AddresseeList lst;
0230     KContacts::Addressee addr;
0231     addr.setEmails(QStringList() << QStringLiteral("foo@kde.org"));
0232     addr.setUid(QStringLiteral("testuid"));
0233     KContacts::FieldGroup::List lstFieldGroup;
0234     KContacts::FieldGroup fieldGroup(QStringLiteral("fr"));
0235     KContacts::ParameterMap params;
0236     params.push_back({QStringLiteral("Foo1"), {QStringLiteral("bla1"), QStringLiteral("blo1")}});
0237     params.push_back({QStringLiteral("Foo2"), {QStringLiteral("bla2"), QStringLiteral("blo2")}});
0238     fieldGroup.setParams(params);
0239     const QString value(QStringLiteral("bla"));
0240     fieldGroup.setValue(value);
0241     lstFieldGroup << fieldGroup;
0242     addr.setFieldGroupList(lstFieldGroup);
0243     lst << addr;
0244     KContacts::VCardTool vcard;
0245     const QByteArray ba = vcard.exportVCards(lst, KContacts::VCard::v3_0);
0246     QByteArray expected(
0247         "BEGIN:VCARD\r\n"
0248         "VERSION:3.0\r\n"
0249         "EMAIL:foo@kde.org\r\n"
0250         "N:;;;;\r\n"
0251         "UID:testuid\r\n"
0252         "fr;FOO1=bla1,blo1;FOO2=bla2,blo2:bla\r\n"
0253         "END:VCARD\r\n\r\n");
0254     QCOMPARE(ba, expected);
0255 }
0256 
0257 QTEST_MAIN(FieldGroupTest)
0258 
0259 #include "moc_fieldgrouptest.cpp"