#include #include #include "../libEet/eetv4xml.h" class EetV4XmlTest : public QObject { Q_OBJECT private: static EetV4SaleRequest validRequest() { EetV4SaleRequest request; request.messageUuid = QUuid(QStringLiteral("550e8400-e29b-41d4-a716-446655440000")); request.sentAt = QDateTime(QDate(2027, 1, 1), QTime(12, 0), QTimeZone::fromSecondsAheadOfUtc(3600)); request.saleAt = request.sentAt; request.taxpayerEic = QStringLiteral("CZ00000019"); request.unitId = 11; request.cashRegisterId = QStringLiteral("1"); request.receiptNumber = QStringLiteral("123"); EetV4Amount::fromString(QStringLiteral("123.45"), &request.totalSale); return request; } private slots: void serializesRequiredAttributes() { QString error; const QByteArray xml = EetV4Xml::serializeSale(validRequest(), &error); QVERIFY2(!xml.isEmpty(), qPrintable(error)); QVERIFY(xml.startsWith("")); QVERIFY(xml.contains("xmlns=\"http://fs.gov.cz/eet/schema/v4\"")); QVERIFY(xml.contains("uuid_zpravy=\"550e8400-e29b-41d4-a716-446655440000\"")); QVERIFY(xml.contains("eic_popl=\"CZ00000019\"")); QVERIFY(xml.contains("id_jednotky=\"11\"")); QVERIFY(xml.contains("celk_trzba=\"123.45\"")); QVERIFY(!xml.contains("fik")); QVERIFY(!xml.contains("pkp")); QVERIFY(!xml.contains("bkp")); } void serializesOptionalAttributes() { EetV4SaleRequest request = validRequest(); request.verificationMode = true; request.authorizingTaxpayerEic = QStringLiteral("CZ00000020"); request.multipleTaxpayerAuthorization = true; request.hasIntendedSettlement = true; request.hasSettlement = true; EetV4Amount::fromString(QStringLiteral("100.00"), &request.intendedSettlement); EetV4Amount::fromString(QStringLiteral("25.00"), &request.settlement); const QByteArray xml = EetV4Xml::serializeSale(request); QVERIFY(xml.contains("overeni=\"true\"")); QVERIFY(xml.contains("eic_poverujiciho=\"CZ00000020\"")); QVERIFY(xml.contains("povereni_vice_popl=\"true\"")); QVERIFY(xml.contains("urceno_cerp_zuct=\"100.00\"")); QVERIFY(xml.contains("cerp_zuct=\"25.00\"")); } void rejectsInvalidRequest() { EetV4SaleRequest request = validRequest(); request.taxpayerEic = QStringLiteral("invalid"); QString error; QVERIFY(EetV4Xml::serializeSale(request, &error).isEmpty()); QVERIFY(!error.isEmpty()); } void producesParseableXml() { QXmlStreamReader reader(EetV4Xml::serializeSale(validRequest())); while (!reader.atEnd()) { reader.readNext(); } QVERIFY2(!reader.hasError(), qPrintable(reader.errorString())); } }; QTEST_MAIN(EetV4XmlTest) #include "eetv4xml_test.moc"