Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@ extension InAppPurchasePlugin: InAppPurchase2API {
{
purchaseOptions.insert(.appAccountToken(accountTokenUUID))
}
if let quantity = options?.quantity {
purchaseOptions.insert(.quantity(Int(quantity)))
}

if #available(iOS 17.4, macOS 14.4, *) {
if let promotionalOffer = options?.promotionalOffer {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,41 @@ void main() {
expect(lastPurchaseOptions.winBackOfferId, isNull);
expect(lastPurchaseOptions.promotionalOffer, isNull);
});

test('should pass quantity for consumable product with Sk2PurchaseParam',
() async {
final Sk2PurchaseParam purchaseParam = Sk2PurchaseParam(
productDetails:
AppStoreProduct2Details.fromSK2Product(dummyProductWrapper),
quantity: 3,
applicationUserName: 'testUser',
);

await iapStoreKitPlatform.buyConsumable(purchaseParam: purchaseParam);

final SK2ProductPurchaseOptionsMessage lastPurchaseOptions =
fakeStoreKit2Platform.lastPurchaseOptions!;

expect(lastPurchaseOptions.appAccountToken, 'testUser');
expect(lastPurchaseOptions.quantity, 3);
expect(lastPurchaseOptions.winBackOfferId, isNull);
expect(lastPurchaseOptions.promotionalOffer, isNull);
});
test('should default to quantity = 1 when not provided in Sk2PurchaseParam',
() async {
final Sk2PurchaseParam purchaseParam = Sk2PurchaseParam(
productDetails:
AppStoreProduct2Details.fromSK2Product(dummyProductWrapper),
applicationUserName: 'testUser',
);

await iapStoreKitPlatform.buyConsumable(purchaseParam: purchaseParam);

final SK2ProductPurchaseOptionsMessage lastPurchaseOptions =
fakeStoreKit2Platform.lastPurchaseOptions!;

expect(lastPurchaseOptions.quantity, 1);
});
});

group('restore purchases', () {
Expand Down