Antti Kaijanmäki has proposed merging 
lp:~unity-api-team/kubuntu-packaging/qt-purchasing-packaging into 
lp:~kubuntu-packagers/kubuntu-packaging/qtpurchasing-opensource-src.

Commit message:
update distro patch.

Requested reviews:
  Kubuntu Packagers (kubuntu-packagers)

For more details, see:
https://code.launchpad.net/~unity-api-team/kubuntu-packaging/qt-purchasing-packaging/+merge/282479
-- 
Your team Kubuntu Packagers is requested to review the proposed merge of 
lp:~unity-api-team/kubuntu-packaging/qt-purchasing-packaging into 
lp:~kubuntu-packagers/kubuntu-packaging/qtpurchasing-opensource-src.
=== modified file 'debian/patches/ubuntu_libpay_backend.diff'
--- debian/patches/ubuntu_libpay_backend.diff	2015-10-15 22:31:01 +0000
+++ debian/patches/ubuntu_libpay_backend.diff	2016-01-13 17:41:24 +0000
@@ -1,3 +1,15 @@
+diff --git a/.gitignore b/.gitignore
+index 4a5200a..a34a6af 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -81,6 +81,7 @@ tst_*~
+ # ---------------------
+ 
+ debug
++build
+ include/*
+ include/*/*
+ lib/*
 diff --git a/src/purchasing/inapppurchase/inapppurchase.pri b/src/purchasing/inapppurchase/inapppurchase.pri
 index 85bab80..b6f3abc 100644
 --- a/src/purchasing/inapppurchase/inapppurchase.pri
@@ -194,10 +206,10 @@
 +#endif // QUBUNTUINAPPPRODUCT_P_H
 diff --git a/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp b/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp
 new file mode 100644
-index 0000000..cc3c556
+index 0000000..a879e77
 --- /dev/null
 +++ b/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp
-@@ -0,0 +1,272 @@
+@@ -0,0 +1,275 @@
 +/****************************************************************************
 +**
 +** Copyright (C) 2015 The Qt Company Ltd.
@@ -408,19 +420,22 @@
 +
 +    if (prev == PAY_PACKAGE_ITEM_STATUS_PURCHASING)
 +    {
-+        if ((status == PAY_PACKAGE_ITEM_STATUS_APPROVED) ||
-+            (status == PAY_PACKAGE_ITEM_STATUS_PURCHASED))
-+        {
-+            auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++        auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++
++        switch (status) {
++        case PAY_PACKAGE_ITEM_STATUS_APPROVED:
++        case PAY_PACKAGE_ITEM_STATUS_PURCHASED:
 +            emitTransactionReadyForItem(item, QInAppTransaction::PurchaseApproved);
-+            pay_item_unref(item);
-+        }
-+        else if (status == PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED)
-+        {
-+            auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++            break;
++        case PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED:
++        case PAY_PACKAGE_ITEM_STATUS_UNKNOWN:
 +            emitTransactionReadyForItem(item, QInAppTransaction::PurchaseFailed);
-+            pay_item_unref(item);
++            break;
++        default:
++            qCritical() << "Unexpected status transition to:" << status;
++            break;
 +        }
++        pay_item_unref(item);
 +    }
 +
 +    m_statuses[sku] = status;
@@ -1041,10 +1056,10 @@
 +#endif // STORE_MOCK_H
 diff --git a/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp b/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp
 new file mode 100644
-index 0000000..6eae435
+index 0000000..adf6cee
 --- /dev/null
 +++ b/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp
-@@ -0,0 +1,339 @@
+@@ -0,0 +1,423 @@
 +/****************************************************************************
 +**
 +** Copyright (C) 2015 The Qt Company Ltd.
@@ -1118,6 +1133,8 @@
 +    void registeredProducts();
 +    void restorePurchases();
 +    void successfulPurchase();
++    void purchaseCancelled();
++    void purchaseAccessDenied();
 +
 +private:
 +
@@ -1138,7 +1155,9 @@
 +    QMap<QString,IAP> m_iaps {
 +        { "sword",  {    0,    0,   0, "available", "$1", QInAppProduct::Consumable, "sword",  "Sword",  "A Sword." } },
 +        { "shield", { 1000,    0, 100, "approved",  "$1", QInAppProduct::Unlockable, "shield", "Shield", "A Shield." } },
-+        { "amulet", { 1000, 1010, 101, "purchased", "$1", QInAppProduct::Unlockable, "amulet", "Amulet", "An Amulet." } }
++        { "amulet", { 1000, 1010, 101, "purchased", "$1", QInAppProduct::Unlockable, "amulet", "Amulet", "An Amulet." } },
++        { "cancel", { 0, 0, 0, "available", "$0", QInAppProduct::Unlockable, "cancel", "Cancel", "For testing cancelling of purchase." } },
++        { "denied", { 0, 0, 0, "available", "$0", QInAppProduct::Unlockable, "denied", "Denied", "For testing access denied by trust store." } }
 +    };
 +
 +    void verifyProduct(const QInAppProduct *product, const IAP item) {
@@ -1380,6 +1399,86 @@
 +    QCOMPARE(finalizedSku, sku);
 +}
 +
++void tst_QInAppStore::purchaseCancelled()
++{
++    // SETUP
++
++    StoreMock mock (PACKAGE_S, storeItems());
++
++    // instantiate a store with the registered products
++    QInAppStore store(this);
++    for (const auto &item : m_iaps)
++        store.registerProduct(item.type, item.sku);
++
++    // Set our expectations.
++
++    const int expectedRegistered = 0;
++    const int expectedUnknown = 0;
++    const int expectedReady = 1;
++    const auto sku = QString::fromUtf8("cancel");
++    const auto expectedTimeStamp = QDateTime::currentDateTime();
++
++    // TEST: PURCHASE
++
++    QSignalSpy registered (&store, SIGNAL(productRegistered(QInAppProduct *)));
++    QSignalSpy unknown    (&store, SIGNAL(productUnknown(QInAppProduct::ProductType,QString)));
++    QSignalSpy ready      (&store, SIGNAL(transactionReady(QInAppTransaction *)));
++
++    auto product = store.registeredProduct(sku);
++    QVERIFY(product != nullptr);
++    product->purchase();
++
++    QTRY_COMPARE (ready.length(), expectedReady);
++    QCOMPARE (registered.length(), expectedRegistered);
++    QCOMPARE (unknown.length(), expectedUnknown);
++    auto transaction = ready.at(0).at(0).value<QInAppTransaction *>();
++    QVERIFY (transaction->errorString().isEmpty());
++    QCOMPARE (transaction->failureReason(), QInAppTransaction::NoFailure);
++    QVERIFY (transaction->orderId() != 0);
++    verifyProduct(transaction->product(), m_iaps[sku]);
++    QCOMPARE (transaction->status(), QInAppTransaction::PurchaseFailed);
++}
++
++void tst_QInAppStore::purchaseAccessDenied()
++{
++    // SETUP
++
++    StoreMock mock (PACKAGE_S, storeItems());
++
++    // instantiate a store with the registered products
++    QInAppStore store(this);
++    for (const auto &item : m_iaps)
++        store.registerProduct(item.type, item.sku);
++
++    // Set our expectations.
++
++    const int expectedRegistered = 0;
++    const int expectedUnknown = 0;
++    const int expectedReady = 1;
++    const auto sku = QString::fromUtf8("denied");
++    const auto expectedTimeStamp = QDateTime::currentDateTime();
++
++    // TEST: PURCHASE
++
++    QSignalSpy registered (&store, SIGNAL(productRegistered(QInAppProduct *)));
++    QSignalSpy unknown    (&store, SIGNAL(productUnknown(QInAppProduct::ProductType,QString)));
++    QSignalSpy ready      (&store, SIGNAL(transactionReady(QInAppTransaction *)));
++
++    auto product = store.registeredProduct(sku);
++    QVERIFY(product != nullptr);
++    product->purchase();
++
++    QTRY_COMPARE (ready.length(), expectedReady);
++    QCOMPARE (registered.length(), expectedRegistered);
++    QCOMPARE (unknown.length(), expectedUnknown);
++    auto transaction = ready.at(0).at(0).value<QInAppTransaction *>();
++    QVERIFY (transaction->errorString().isEmpty());
++    QCOMPARE (transaction->failureReason(), QInAppTransaction::NoFailure);
++    QVERIFY (transaction->orderId() != 0);
++    verifyProduct(transaction->product(), m_iaps[sku]);
++    QCOMPARE (transaction->status(), QInAppTransaction::PurchaseFailed);
++}
++
 +
 +QTEST_GUILESS_MAIN(tst_QInAppStore)
 +

-- 
kubuntu-devel mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel

Reply via email to