File indexing completed on 2024-04-21 03:53:29

0001 /*
0002   This file is part of the KContacts framework.
0003   SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB a KDAB Group company <info@kdab.net>
0004   SPDX-FileContributor: Kevin Krammer <krake@kdab.com>
0005 
0006   SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include <QTest>
0010 
0011 #include "converter/kcontacts/vcardconverter.h"
0012 #include "kcontacts/vcarddrag.h"
0013 
0014 #include <QMimeData>
0015 using namespace KContacts;
0016 
0017 class VCardDragTest : public QObject
0018 {
0019     Q_OBJECT
0020 
0021 public:
0022     VCardDragTest();
0023 
0024 private:
0025     Addressee mAddressee1;
0026     Addressee mAddressee2;
0027 
0028 private Q_SLOTS:
0029     void testPopulate();
0030     void testCanDecode();
0031     void testFromMimeData();
0032 };
0033 
0034 QTEST_MAIN(VCardDragTest)
0035 
0036 VCardDragTest::VCardDragTest()
0037     : QObject()
0038 {
0039     mAddressee1.setGivenName(QStringLiteral("Kevin"));
0040     mAddressee1.setFamilyName(QStringLiteral("Krammer"));
0041     mAddressee1.addEmail(QStringLiteral("kevin.krammer@gmx.at"));
0042 
0043     mAddressee2.setGivenName(QStringLiteral("Tobias"));
0044     mAddressee2.setFamilyName(QStringLiteral("König"));
0045     mAddressee2.addEmail(QStringLiteral("tokoe@kde.org"));
0046 }
0047 
0048 void VCardDragTest::testPopulate()
0049 {
0050     VCardConverter converter;
0051     const QByteArray vcard = converter.createVCard(mAddressee1);
0052     QVERIFY(!vcard.isEmpty());
0053 
0054     QMimeData *data = new QMimeData();
0055     bool result = VCardDrag::populateMimeData(data, vcard);
0056     QVERIFY(result);
0057     QVERIFY(data->hasFormat(KContacts::Addressee::mimeType()));
0058     QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcard);
0059     delete data;
0060 
0061     data = new QMimeData();
0062     result = VCardDrag::populateMimeData(data, Addressee::List() << mAddressee1);
0063     QVERIFY(result);
0064     QVERIFY(data->hasFormat(KContacts::Addressee::mimeType()));
0065     QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcard);
0066     delete data;
0067 
0068     const QByteArray vcards = converter.createVCards(Addressee::List() << mAddressee1 << mAddressee2);
0069     data = new QMimeData();
0070     result = VCardDrag::populateMimeData(data, Addressee::List() << mAddressee1 << mAddressee2);
0071     QVERIFY(result);
0072     QVERIFY(data->hasFormat(KContacts::Addressee::mimeType()));
0073     QCOMPARE(data->data(KContacts::Addressee::mimeType()), vcards);
0074     delete data;
0075 
0076     data = new QMimeData();
0077     result = VCardDrag::populateMimeData(data, Addressee::List());
0078     QVERIFY(!result);
0079     QVERIFY(!data->hasFormat(KContacts::Addressee::mimeType()));
0080     delete data;
0081 }
0082 
0083 void VCardDragTest::testCanDecode()
0084 {
0085     VCardConverter converter;
0086     const QByteArray vcard = converter.createVCard(mAddressee1);
0087     QVERIFY(!vcard.isEmpty());
0088 
0089     QMimeData *data = new QMimeData();
0090     data->setData(Addressee::mimeType(), vcard);
0091     QVERIFY(VCardDrag::canDecode(data));
0092     delete data;
0093 
0094     data = new QMimeData();
0095     data->setData(QStringLiteral("text/x-vcard"), vcard);
0096     QVERIFY(VCardDrag::canDecode(data));
0097     delete data;
0098 
0099     data = new QMimeData();
0100     data->setData(QStringLiteral("application/octetstream"), vcard);
0101     QVERIFY(!VCardDrag::canDecode(data));
0102     delete data;
0103 }
0104 
0105 void VCardDragTest::testFromMimeData()
0106 {
0107     VCardConverter converter;
0108     const QByteArray vcard = converter.createVCard(mAddressee1);
0109     QVERIFY(!vcard.isEmpty());
0110 
0111     QByteArray content;
0112 
0113     QMimeData *data = new QMimeData();
0114     data->setData(Addressee::mimeType(), vcard);
0115     bool result = VCardDrag::fromMimeData(data, content);
0116     QVERIFY(result);
0117     QCOMPARE(content, vcard);
0118     delete data;
0119 
0120     data = new QMimeData();
0121     data->setData(QStringLiteral("text/x-vcard"), vcard);
0122     result = VCardDrag::fromMimeData(data, content);
0123     QVERIFY(result);
0124     QCOMPARE(content, vcard);
0125     delete data;
0126 
0127     data = new QMimeData();
0128     data->setData(QStringLiteral("application/octetstream"), vcard);
0129     result = VCardDrag::fromMimeData(data, content);
0130     QVERIFY(!result);
0131     delete data;
0132 
0133     const QByteArray vcards = converter.createVCards(Addressee::List() << mAddressee1 << mAddressee2);
0134     QVERIFY(!vcards.isEmpty());
0135 
0136     Addressee::List addresseeList;
0137 
0138     data = new QMimeData();
0139     data->setData(Addressee::mimeType(), vcards);
0140     result = VCardDrag::fromMimeData(data, addresseeList);
0141     QVERIFY(result);
0142     QCOMPARE(addresseeList.count(), 2);
0143     QCOMPARE(addresseeList[0], mAddressee1);
0144     QCOMPARE(addresseeList[1], mAddressee2);
0145     delete data;
0146 
0147     data = new QMimeData();
0148     data->setData(QStringLiteral("text/x-vcard"), vcards);
0149     result = VCardDrag::fromMimeData(data, addresseeList);
0150     QVERIFY(result);
0151     QCOMPARE(addresseeList.count(), 2);
0152     QCOMPARE(addresseeList[0], mAddressee1);
0153     QCOMPARE(addresseeList[1], mAddressee2);
0154     delete data;
0155 
0156     data = new QMimeData();
0157     data->setData(QStringLiteral("application/octetstream"), vcards);
0158     result = VCardDrag::fromMimeData(data, addresseeList);
0159     QVERIFY(!result);
0160     delete data;
0161 
0162     data = new QMimeData();
0163     data->setData(Addressee::mimeType(), QByteArray());
0164     result = VCardDrag::fromMimeData(data, addresseeList);
0165     QVERIFY(!result);
0166     delete data;
0167 }
0168 
0169 #include "vcarddragtest.moc"