1 /*
2 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7 #include <field.h>
8 #include <pass.h>
9
10 #include <QJsonDocument>
11 #include <QJsonObject>
12 #include <QLocale>
13 #include <QTest>
14
15 #include <cmath>
16
initLocale()17 void initLocale()
18 {
19 qputenv("TZ", "UTC");
20 }
21
22 Q_CONSTRUCTOR_FUNCTION(initLocale)
23
24 namespace KPkPass
25 {
26 class FieldTest : public QObject
27 {
28 Q_OBJECT
29 private Q_SLOTS:
initTestCase()30 void initTestCase()
31 {
32 QLocale::setDefault(QLocale(QStringLiteral("fr_FR")));
33 }
34
testBoardingPass()35 void testBoardingPass()
36 {
37 std::unique_ptr<KPkPass::Pass> pass(KPkPass::Pass::fromFile(QStringLiteral(SOURCE_DIR "/data/boardingpass-v1.pkpass")));
38 QVERIFY(pass);
39
40 auto obj =
41 QJsonDocument::fromJson(R"({"key":"valid-date","label":"Datum","dateStyle":"PKDateStyleShort","value":"2021-06-27T14:30:00+02:00"})").object();
42 KPkPass::Field f(obj, pass.get());
43 QCOMPARE(f.value().type(), QVariant::DateTime);
44 QCOMPARE(f.value(), QDateTime({2021, 6, 27}, {14, 30}, Qt::OffsetFromUTC, 7200));
45 QCOMPARE(f.valueDisplayString(), QLatin1String("27/06/2021 14:30"));
46
47 obj = QJsonDocument::fromJson(R"({"key":"valid-date","label":"Datum","dateStyle":"PKDateStyleShort","value":"2021-06-27T00:00:00+02:00"})").object();
48 f = KPkPass::Field(obj, pass.get());
49 QCOMPARE(f.value().type(), QVariant::DateTime);
50 QCOMPARE(f.value().toDateTime().date(), QDate({2021, 6, 27}));
51 QCOMPARE(f.valueDisplayString(), QLatin1String("27/06/2021"));
52
53 obj = QJsonDocument::fromJson(R"({"key":"valid-locations","label":"Ort","value":"Freibad Killesberg\n"})").object();
54 f = KPkPass::Field(obj, pass.get());
55
56 QCOMPARE(f.value().type(), QVariant::String);
57 QCOMPARE(f.value(), QLatin1String("Freibad Killesberg\n"));
58 QCOMPARE(f.valueDisplayString(), QLatin1String("Freibad Killesberg"));
59 }
60 };
61 }
62
63 QTEST_GUILESS_MAIN(KPkPass::FieldTest)
64
65 #include "fieldtest.moc"
66