From caa249c3a847b16a2bda45ea1cff0a0a5bc49415 Mon Sep 17 00:00:00 2001 From: MicroProgramer Date: Thu, 18 Apr 2024 07:11:01 +0500 Subject: [PATCH] updated pubspec.yaml version for compatibility to all packages and latest flutter sdk --- pubspec.yaml | 12 +- test/src/common/card_utils_test.dart | 244 ----------------- test/src/common/case.dart | 7 - test/src/common/paystack_test.dart | 31 --- test/src/common/string_utils_test.dart | 66 ----- test/src/common/utils_test.dart | 41 --- test/src/common/widget_builder.dart | 9 - test/src/models/card_test.dart | 258 ------------------ .../widgets/checkout/card_checkout_test.dart | 86 ------ .../checkout/checkout_widget_test.dart | 243 ----------------- test/src/widgets/input/card_input_test.dart | 256 ----------------- 11 files changed, 6 insertions(+), 1247 deletions(-) delete mode 100644 test/src/common/card_utils_test.dart delete mode 100644 test/src/common/case.dart delete mode 100644 test/src/common/paystack_test.dart delete mode 100644 test/src/common/string_utils_test.dart delete mode 100644 test/src/common/utils_test.dart delete mode 100644 test/src/common/widget_builder.dart delete mode 100644 test/src/models/card_test.dart delete mode 100644 test/src/widgets/checkout/card_checkout_test.dart delete mode 100644 test/src/widgets/checkout/checkout_widget_test.dart delete mode 100644 test/src/widgets/input/card_input_test.dart diff --git a/pubspec.yaml b/pubspec.yaml index f76392a8..a71f96fc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,16 +6,16 @@ homepage: https://github.com/wilburt/flutter_paystack dependencies: flutter: sdk: flutter - http: ^0.13.5 - intl: ^0.17.0 + http: ^1.2.1 + intl: ^0.19.0 meta: ^1.8.0 - async: ^2.9.0 + async: ^2.11.0 dev_dependencies: flutter_test: sdk: flutter - matcher: ^0.12.12 - mockito: ^5.3.1 + matcher: ^0.12.16+1 + mockito: ^5.4.4 flutter: @@ -33,5 +33,5 @@ flutter: environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=3.0.1 <4.0.0' flutter: ">=2.0.0" \ No newline at end of file diff --git a/test/src/common/card_utils_test.dart b/test/src/common/card_utils_test.dart deleted file mode 100644 index 7635ac61..00000000 --- a/test/src/common/card_utils_test.dart +++ /dev/null @@ -1,244 +0,0 @@ -import 'package:flutter_paystack/flutter_paystack.dart'; -import 'package:flutter_paystack/src/common/card_utils.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'case.dart'; - -void main() { - group("$CardUtils", () { - group("#isWholeNumberPositive", () { - final cases = [ - Case(inp: "12", out: true), - Case(inp: "+9876567", out: false), - Case(inp: "hgfdfghjk", out: false), - Case(inp: "KDHJIWUHE", out: false), - Case(inp: "-1-2-84ufpo", out: false), - Case(inp: "一些角色", out: false), - Case(inp: "九十", out: false), - Case(inp: "девяносто", out: false), - Case(inp: "09765678987656789876545678987656789876545678", out: true), - Case(inp: null, out: false), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.isWholeNumberPositive(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#convertYearTo4Digits", () { - final cases = [ - Case(inp: 10, out: 2010), - Case(inp: 100, out: 100), - Case(inp: 1000, out: 1000), - Case(inp: 20, out: 2020), - Case(inp: 2000, out: 2000), - Case(inp: 94, out: 2094), - Case(inp: 2020, out: 2020), - Case(inp: 87656776, out: 87656776), - Case(inp: 8, out: 2008), - Case(inp: 0, out: 2000), - Case(inp: -10, out: -10), - Case(inp: -0, out: 2000), - Case(inp: -88, out: -88), - Case(inp: null, out: 0), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.convertYearTo4Digits(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#hasYearPassed", () { - final cases = [ - Case(inp: 10, out: true), - Case(inp: 100, out: true), - Case(inp: 1000, out: true), - Case(inp: 23, out: false), - Case(inp: 2000, out: true), - Case(inp: 94, out: false), - Case(inp: 2024, out: false), - Case(inp: 87656776, out: false), - Case(inp: 8, out: true), - Case(inp: 0, out: true), - Case(inp: -10, out: true), - Case(inp: -0, out: true), - Case(inp: -88, out: true), - Case(inp: null, out: true), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.hasYearPassed(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#hasMonthPassed", () { - final cases = [ - Case(inp: [2027, 10], out: false), - Case(inp: [10, 0], out: true), - Case(inp: [0, 0], out: true), - Case(inp: [1994, 1], out: true), - Case(inp: [1, 1], out: true), - Case(inp: [-203, -13], out: true), - Case(inp: [23, 10], out: false), - Case(inp: [2027, 05], out: false), - Case(inp: [null, 05], out: true), - Case(inp: [24, null], out: true), - Case(inp: [null, null], out: true), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.hasMonthPassed(c.inp[0], c.inp[1]); - expect(c.out, value); - }); - }); - }); - - group("#isValidMonth", () { - final cases = [ - Case(inp: 10, out: true), - Case(inp: 0, out: false), - Case(inp: -2, out: false), - Case(inp: 1, out: true), - Case(inp: 193873, out: false), - Case(inp: 8, out: true), - Case(inp: 012, out: true), - Case(inp: null, out: false), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.isValidMonth(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#isNotExpired", () { - final cases = [ - Case(inp: [2027, 10], out: true), - Case(inp: [10, 0], out: false), - Case(inp: [0, 0], out: false), - Case(inp: [1994, 1], out: false), - Case(inp: [1, 1], out: false), - Case(inp: [-203, -13], out: false), - Case(inp: [24, 10], out: true), - Case(inp: [2027, 05], out: true), - Case(inp: [24, null], out: false), - Case(inp: [null, null], out: false), - Case(inp: [45, 67], out: false), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.isNotExpired(c.inp[0], c.inp[1]); - expect(c.out, value); - }); - }); - }); - - group("#getCleanedNumber", () { - final cases = [ - Case(inp: "poiuytdfghjkkjhb", out: ""), - Case(inp: "098765tgb098eyr", out: "098765098"), - Case(inp: "6d8ge8gf7tfhd=-82qgjs9fh7w6ehf8", out: "6887829768"), - Case(inp: "0", out: "0"), - Case(inp: "девяносто", out: ""), - Case(inp: "一些角色", out: ""), - Case(inp: null, out: ""), - ]; - - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.getCleanedNumber(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#concatenateCardFields", () { - final cases = [ - Case( - inp: PaymentCard( - number: null, cvc: null, expiryMonth: null, expiryYear: null), - out: throwsA(TypeMatcher())), - Case(inp: null, out: throwsA(TypeMatcher())), - Case( - inp: PaymentCard( - number: "4111111111111111", - cvc: "123", - expiryMonth: 12, - expiryYear: 12), - out: "4111111111111111*123*12*12"), - Case( - inp: PaymentCard( - number: "5500000000000004", - cvc: null, - expiryMonth: 12, - expiryYear: 12), - out: "5500000000000004*null*12*12"), - Case( - inp: PaymentCard( - number: "340000000000009", - cvc: "433", - expiryMonth: 199, - expiryYear: null), - out: "340000000000009*433*199*0"), - Case( - inp: PaymentCard( - number: "340000000000009", - cvc: "433", - expiryMonth: null, - expiryYear: 30), - out: "340000000000009*433*0*30"), - Case( - inp: PaymentCard( - number: "340000000000009", - cvc: "433", - expiryMonth: null, - expiryYear: null), - out: "340000000000009*433*0*0"), - ]; - - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.concatenateCardFields; - if (c.out is String) { - var v = value(c.inp); - expect(v, c.out); - } else { - expect(() => value(c.inp), c.out); - } - }); - }); - }); - - group("#getExpiryDate", () { - final cases = [ - Case(inp: "poiuytdfghjkkjhb", out: [-1, -1]), - Case(inp: "0/12", out: [0, 12]), - Case(inp: "13/0", out: [13, 0]), - Case(inp: "девяносто/носто", out: [-1, -1]), - Case(inp: "一些角色/12", out: [-1, 12]), - Case(inp: null, out: [-1, -1]), - Case(inp: "12/23", out: [12, 23]), - Case(inp: "-12/-23", out: [-12, -23]), - Case(inp: "13/", out: [13, -1]), - Case(inp: "/", out: [-1, -1]), - Case(inp: "", out: [-1, -1]), - Case(inp: "12/23/14", out: [12, 14]), - Case(inp: "1223", out: [1223, -1]), - ]; - - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = CardUtils.getExpiryDate(c.inp); - expect(c.out, value); - }); - }); - }); - }); -} diff --git a/test/src/common/case.dart b/test/src/common/case.dart deleted file mode 100644 index e75c6eff..00000000 --- a/test/src/common/case.dart +++ /dev/null @@ -1,7 +0,0 @@ -class Case { - dynamic inp; - dynamic out; - String? desc; - - Case({required this.inp, required this.out, this.desc}); -} diff --git a/test/src/common/paystack_test.dart b/test/src/common/paystack_test.dart deleted file mode 100644 index 9a5bc629..00000000 --- a/test/src/common/paystack_test.dart +++ /dev/null @@ -1,31 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/services.dart'; -import 'package:flutter_paystack/src/common/paystack.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - const MethodChannel channel = - MethodChannel('plugins.wilburt/flutter_paystack'); - - TestWidgetsFlutterBinding.ensureInitialized(); - - setUp(() { - channel.setMockMethodCallHandler((MethodCall methodCall) async { - return ''; - }); - }); - - tearDown(() { - channel.setMockMethodCallHandler(null); - }); - - group("$PaystackPlugin", () { - test('is properly initialized with passed key', () async { - var publicKey = Platform.environment["PAYSTACK_TEST_PUBLIC_KEY"] ?? ""; - final plugin = PaystackPlugin(); - await plugin.initialize(publicKey: publicKey); - expect(publicKey, plugin.publicKey); - }); - }); -} diff --git a/test/src/common/string_utils_test.dart b/test/src/common/string_utils_test.dart deleted file mode 100644 index 4c70bbfe..00000000 --- a/test/src/common/string_utils_test.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'package:flutter_paystack/src/common/string_utils.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'case.dart'; - -void main() { - group("$StringUtils", () { - group("#isEmpty", () { - final cases = [ - Case(inp: "876jje", out: false), - Case(inp: "@", out: false), - Case(inp: "12344323", out: false), - Case(inp: "null", out: true), - Case(inp: null, out: true), - Case(inp: "娱乐", out: false), - Case(inp: "развлекательная", out: false), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = StringUtils.isEmpty(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#isValidEmail", () { - final cases = [ - Case(inp: "email", out: false), - Case(inp: "@", out: false), - Case(inp: ".com", out: false), - Case(inp: "email@.com", out: false), - Case(inp: "email@host.com", out: true), - Case(inp: "ema-il@host-h.com", out: true), - Case(inp: "e_mail@host-j.gov", out: true), - Case(inp: "asdf@adsf.adsf", out: true), - Case(inp: "развлекательная@adsf.adsf", out: false), - Case(inp: "1234444", out: false), - Case(inp: "null", out: false), - Case(inp: null, out: false), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = StringUtils.isValidEmail(c.inp); - expect(c.out, value); - }); - }); - }); - - group("#nullify", () { - final cases = [ - Case(inp: "you", out: "you"), - Case(inp: "развлекательная", out: "развлекательная"), - Case(inp: "娱乐", out: "娱乐"), - Case(inp: "", out: null), - Case(inp: '', out: null), - Case(inp: null, out: isNot(equals("q"))), - ]; - cases.forEach((c) { - test("${c.inp} returns ${c.out}", () { - final value = StringUtils.nullify(c.inp); - expect(value, c.out); - }); - }); - }); - }); -} diff --git a/test/src/common/utils_test.dart b/test/src/common/utils_test.dart deleted file mode 100644 index f0595e92..00000000 --- a/test/src/common/utils_test.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_paystack/src/common/my_strings.dart'; -import 'package:flutter_paystack/src/common/utils.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - const MethodChannel channel = - MethodChannel('plugins.wilburt/flutter_paystack'); - - TestWidgetsFlutterBinding.ensureInitialized(); - - setUp(() { - channel.setMockMethodCallHandler((MethodCall methodCall) async { - return ''; - }); - }); - - tearDown(() { - channel.setMockMethodCallHandler(null); - }); - - group("$Utils", () { - group("#getKeyErrorMsg", () { - test("returns a string with keyType", () { - final keyType = "public"; - expect(Utils.getKeyErrorMsg(keyType), contains(keyType)); - }); - }); - - group("#formatAmount", () { - test("throws Error when currency formatter is not set", () { - expect(() => Utils.formatAmount(100), throwsA(TypeMatcher())); - }); - - test("returns normally when currency formatter has been set", () { - Utils.setCurrencyFormatter(Strings.ngn, Strings.nigerianLocale); - expect(() => Utils.formatAmount(100), returnsNormally); - }); - }); - }); -} diff --git a/test/src/common/widget_builder.dart b/test/src/common/widget_builder.dart deleted file mode 100644 index 965d1131..00000000 --- a/test/src/common/widget_builder.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; - -MaterialApp buildTestWidget(Widget child) { - return MaterialApp( - home: Material( - child: child, - ), - ); -} diff --git a/test/src/models/card_test.dart b/test/src/models/card_test.dart deleted file mode 100644 index 4e8b8927..00000000 --- a/test/src/models/card_test.dart +++ /dev/null @@ -1,258 +0,0 @@ -import 'package:flutter_paystack/flutter_paystack.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import '../common/case.dart'; - -void main() { - group("$PaymentCard", () { - group("#type", () { - final cases = [ - Case(inp: null, out: CardType.unknown), - Case(inp: "9765478765567656765", out: CardType.unknown), - Case(inp: "4111111111111111", out: CardType.visa), - Case(inp: "4222 22222 2222", out: CardType.visa), - Case(inp: "5500000000000004", out: CardType.masterCard), - Case(inp: "3400 0000 0000 009", out: CardType.americanExpress), - Case(inp: "30000000000004", out: CardType.dinersClub), - Case(inp: "6011000000000004", out: CardType.discover), - Case(inp: "3530111333300000", out: CardType.jcb), - Case(inp: "5060666666666666666", out: CardType.verve), - Case( - desc: "doesn't return verve type for Ameerican Express number", - inp: "378282246310005", - out: isNot(equals(CardType.verve)), - ), - Case( - desc: "returns Unknown for empty number", - inp: "", - out: CardType.unknown, - ), - ]; - cases.forEach((c) { - test(c.desc ?? "returns ${c.out} for ${c.inp}", () { - final value = PaymentCard.empty()..number = c.inp; - expect(value.type, c.out); - }); - }); - }); - - group("#getTypeForIIN", () { - final cases = [ - Case(inp: null, out: CardType.unknown), - Case(inp: "", out: CardType.unknown), - Case(inp: "000", out: CardType.unknown), - Case(inp: "4", out: CardType.visa), - Case(inp: "4", out: CardType.visa), - Case(inp: "55", out: CardType.masterCard), - Case(inp: "51", out: CardType.masterCard), - Case(inp: "3782", out: CardType.americanExpress), - Case(inp: "305", out: CardType.dinersClub), - Case(inp: "6011", out: CardType.discover), - Case(inp: "3561", out: CardType.jcb), - Case(inp: "5060", out: CardType.verve), - Case(inp: "506 0", out: CardType.verve), - Case( - desc: "doesn't return Ameerican Express type for VISA number", - inp: "4", - out: isNot(equals(CardType.americanExpress))), - ]; - cases.forEach((c) { - test(c.desc ?? "returns ${c.out} for ${c.inp}", () { - final value = PaymentCard.empty()..number = c.inp; - expect(value.getTypeForIIN(value.number), c.out); - }); - }); - }); - - group("#number", () { - final cases = [ - Case(inp: "4 22 22222 2222 2", out: "2222"), - Case( - desc: - "setting empty space as card number doesn't generate empty last4Digits", - inp: " ", - out: ""), - Case(inp: "12", out: "12"), - Case(inp: "1298", out: "1298"), - Case(inp: "976 5478 765567656 765", out: "6765"), - Case(inp: "5060666666666666666", out: "6666"), - Case(inp: "随机你,等等", out: ""), - Case( - desc: - "setting 340000000000009 as card number doesn't generate 7688 as last4Digits", - inp: "340000000000009", - out: isNot(equals("7688"))), - ]; - cases.forEach((c) { - test( - c.desc ?? - "setting ${c.inp} as card number generates ${c.out} as last4Digits", - () { - final value = PaymentCard.empty()..number = c.inp; - expect(value.last4Digits, c.out); - }); - }); - }); - - group("#number", () { - final cases = [ - Case(inp: "4222 22 22 2222 2", out: "4222222222222"), - Case(inp: "5060666666666666666", out: "5060666666666666666"), - Case(inp: "3YSHHjj40000B000000A009", out: "340000000000009"), - Case(inp: "随机你,等等", out: ""), - Case(inp: "随机你,等等124", out: "124"), - ]; - cases.forEach((c) { - test("${c.inp} is cleaned and assigned as ${c.out}", () { - final value = PaymentCard.empty()..number = c.inp; - expect(value.number, c.out); - }); - }); - }); - - group("#cvv", () { - final cases = [ - Case(inp: "123", out: "123"), - Case(inp: "așa", out: ""), - Case(inp: "8777等等", out: "8777"), - Case(inp: "9 11 1", out: "9111"), - Case(inp: "随机你,等等124", out: "124"), - Case( - desc: "какая is not assigned as какая", - inp: "какая", - out: isNot(equals("какая"))), - ]; - cases.forEach((c) { - test(c.desc ?? "${c.inp} is cleaned and assigned as ${c.out}", () { - final value = PaymentCard.empty()..cvc = c.inp; - expect(value.cvc, c.out); - }); - }); - }); - - group("#isValid", () { - final cases = [ - Case(desc: "empty details", inp: PaymentCard.empty(), out: false), - Case( - desc: "null details", - inp: PaymentCard( - number: null, cvc: null, expiryMonth: null, expiryYear: null), - out: false), - Case( - desc: "empty details", - inp: - PaymentCard(number: "", cvc: "", expiryMonth: 0, expiryYear: 0), - out: false), - Case( - desc: "invalid number and other valid details", - inp: PaymentCard( - number: "9876567876567", - cvc: "123", - expiryMonth: 12, - expiryYear: 12), - out: false), - Case( - desc: "invalid cvv and other valid details", - inp: PaymentCard( - number: "4111111111111111", - cvc: "12333", - expiryMonth: 12, - expiryYear: 12), - out: false), - Case( - desc: "invalid month and other valid details", - inp: PaymentCard( - number: "4111111111111111", - cvc: "123", - expiryMonth: 90, - expiryYear: 12), - out: false), - Case( - desc: "negative month and other valid details", - inp: PaymentCard( - number: "6011000000000004", - cvc: "123", - expiryMonth: -9, - expiryYear: 12), - out: false), - Case( - desc: "negative year and other valid details", - inp: PaymentCard( - number: "4111111111111111", - cvc: "123", - expiryMonth: -9, - expiryYear: -2020), - out: false), - Case( - desc: "four digit year and other valid details", - inp: PaymentCard( - number: "4111111111111111", - cvc: "123", - expiryMonth: 09, - expiryYear: 2027), - out: true), - Case( - desc: "expired card", - inp: PaymentCard( - number: "4111111111111111", - cvc: "123", - expiryMonth: 09, - expiryYear: 2002), - out: false), - Case( - desc: "valid card", - inp: PaymentCard( - number: "6011000000000004", - cvc: "123", - expiryMonth: 09, - expiryYear: 27), - out: true), - ]; - - cases.forEach((c) { - test("returns ${c.out} for ${c.desc}", () { - var valid = c.inp.isValid(); - expect(valid, c.out); - }); - }); - }); - - group("#validCVC", () { - final cases = [ - Case( - desc: "returns false for empty cvv", - inp: PaymentCard.empty()..cvc = "", - out: false), - Case( - desc: "returns false for empty cvv", - inp: PaymentCard.empty()..cvc = null, - out: false), - Case( - desc: "returns false for two character length cvv", - inp: PaymentCard.empty()..cvc = "12", - out: false), - Case( - desc: "returns false for alphanumeric characters", - inp: PaymentCard.empty()..cvc = "A9ri12499", - out: false), - Case( - desc: "returns true for 3 character length cvv", - inp: PaymentCard.empty()..cvc = "123", - out: true), - Case( - desc: - "returns false for 3 character length cvv American Express cards", - inp: PaymentCard.empty() - ..type = CardType.americanExpress - ..cvc = "123", - out: false), - ]; - cases.forEach((c) { - test("returns ${c.out} for ${c.inp}", () { - var valid = c.inp.validCVC(null); - expect(valid, c.out); - }); - }); - }); - }); -} diff --git a/test/src/widgets/checkout/card_checkout_test.dart b/test/src/widgets/checkout/card_checkout_test.dart deleted file mode 100644 index cd36b47c..00000000 --- a/test/src/widgets/checkout/card_checkout_test.dart +++ /dev/null @@ -1,86 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/cupertino.dart'; -import 'package:flutter_paystack/flutter_paystack.dart'; -import 'package:flutter_paystack/src/api/service/contracts/cards_service_contract.dart'; -import 'package:flutter_paystack/src/common/utils.dart'; -import 'package:flutter_paystack/src/widgets/checkout/card_checkout.dart'; -import 'package:flutter_paystack/src/widgets/input/card_input.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/mockito.dart'; - -import '../../common/widget_builder.dart'; - -class MockedCardService extends Mock implements CardServiceContract {} - -void main() { - group("$CardCheckout", () { - String publicKey = Platform.environment["PAYSTACK_TEST_PUBLIC_KEY"] ?? ""; - - final charge = Charge() - ..amount = 20000 - ..currency = "USD" - ..email = 'customer@email.com'; - - Utils.setCurrencyFormatter(charge.currency, "en_US"); - - final checkoutWidget = buildTestWidget( - CardCheckout( - publicKey: publicKey, - charge: charge, - service: MockedCardService(), - onResponse: (v) {}, - onProcessingChange: (v) {}, - onCardChange: (v) {}, - ), - ); - - group("input instruction", () { - testWidgets("displayed", (tester) async { - await tester.pumpWidget(checkoutWidget); - - await tester.pumpAndSettle(); - - expect(find.byKey(Key("InstructionKey")), findsOneWidget); - }); - }); - - group("card input", () { - testWidgets("displayed", (tester) async { - await tester.pumpWidget(checkoutWidget); - - await tester.pumpAndSettle(); - - expect(find.byKey(Key("CardInput")), findsOneWidget); - }); - - testWidgets("displays the correct amount when `hideAmount` is false", - (tester) async { - await tester.pumpWidget(checkoutWidget); - - await tester.pumpAndSettle(); - - CardInput input = tester.widget(find.byKey(Key("CardInput"))); - expect(input.buttonText, "Pay ${charge.currency} 200.00"); - }); - - testWidgets("displays the \"Continue\" when `hideAmount` is true", - (tester) async { - await tester.pumpWidget(buildTestWidget(CardCheckout( - publicKey: publicKey, - charge: charge, - service: MockedCardService(), - onResponse: (v) {}, - onProcessingChange: (v) {}, - onCardChange: (v) {}, - hideAmount: true, - ))); - - await tester.pumpAndSettle(); - - CardInput input = tester.widget(find.byKey(Key("CardInput"))); - expect(input.buttonText, "Continue"); - }); - }); - }); -} diff --git a/test/src/widgets/checkout/checkout_widget_test.dart b/test/src/widgets/checkout/checkout_widget_test.dart deleted file mode 100644 index b5c069ac..00000000 --- a/test/src/widgets/checkout/checkout_widget_test.dart +++ /dev/null @@ -1,243 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:flutter_paystack/flutter_paystack.dart'; -import 'package:flutter_paystack/src/api/service/contracts/banks_service_contract.dart'; -import 'package:flutter_paystack/src/api/service/contracts/cards_service_contract.dart'; -import 'package:flutter_paystack/src/widgets/checkout/checkout_widget.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/mockito.dart'; - -import '../../common/widget_builder.dart'; - -class MockedCardService extends Mock implements CardServiceContract {} - -class MockedBankService extends Mock implements BankServiceContract {} - -void main() { - late String publicKey; - - setUp(() { - publicKey = Platform.environment["PAYSTACK_TEST_PUBLIC_KEY"] ?? ""; - }); - group("$CheckoutWidget", () { - var charge = Charge() - ..amount = 20000 - ..currency = "USD" - ..email = 'customer@email.com'; - - group("custom logo", () { - testWidgets("is supplied", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.card, - charge: charge, - fullscreen: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - - await tester.pumpAndSettle(); - - expect(find.byKey(Key("Logo")), findsOneWidget); - expect(find.byKey(Key("PaystackBottomIcon")), findsOneWidget); - expect(find.byKey(Key("PaystackLogo")), findsOneWidget); - expect(find.byKey(Key("PaystackIcon")), findsNothing); - expect(find.byIcon(Icons.lock), findsOneWidget); - expect(find.byKey(Key("SecuredBy")), findsOneWidget); - }); - - testWidgets("is not passed", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.bank, - charge: charge, - fullscreen: false, - logo: null, - ), - ); - - await tester.pumpWidget(checkoutWidget); - - await tester.pumpAndSettle(); - - expect(find.byKey(Key("Logo")), findsNothing); - expect(find.byKey(Key("PaystackBottomIcon")), findsNothing); - expect(find.byKey(Key("PaystackIcon")), findsOneWidget); - expect(find.byKey(Key("PaystackLogo")), findsOneWidget); - expect(find.byIcon(Icons.lock), findsOneWidget); - expect(find.byKey(Key("SecuredBy")), findsOneWidget); - }); - }); - - group("card", () { - testWidgets("card checkout is displayed for selectable method", - (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("CardCheckout")), findsOneWidget); - }); - - testWidgets("card checkout is displayed for card method", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("CardCheckout")), findsOneWidget); - }); - - testWidgets("card checkout is not displayed for bank method", - (tester) async { - var bankService = MockedBankService(); - - when(bankService.fetchSupportedBanks()) - .thenAnswer((_) => Future.value([])); - - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: bankService, - cardsService: MockedCardService(), - method: CheckoutMethod.bank, - charge: charge, - fullscreen: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("CardCheckout")), findsNothing); - }); - }); - - group("email", () { - testWidgets("is displayed when `hideEmail` is false", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - hideEmail: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("ChargeEmail")), findsOneWidget); - }); - - testWidgets("is not displayed when `hideEmail` is true", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - hideEmail: true, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("ChargeEmail")), findsNothing); - }); - - testWidgets("is not displayed when no email is passed", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge..email = null, - fullscreen: false, - hideEmail: true, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("ChargeEmail")), findsNothing); - }); - }); - - group("amount", () { - testWidgets("is displayed when `hideAmount` is false", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - hideAmount: false, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("DisplayAmount")), findsOneWidget); - }); - - testWidgets("is not displayed when `hideAmount` is true", (tester) async { - final checkoutWidget = buildTestWidget( - CheckoutWidget( - publicKey: publicKey, - bankService: MockedBankService(), - cardsService: MockedCardService(), - method: CheckoutMethod.selectable, - charge: charge, - fullscreen: false, - hideAmount: true, - logo: Container(), - ), - ); - - await tester.pumpWidget(checkoutWidget); - await tester.pumpAndSettle(); - expect(find.byKey(Key("DisplayAmount")), findsNothing); - }); - }); - }); -} diff --git a/test/src/widgets/input/card_input_test.dart b/test/src/widgets/input/card_input_test.dart deleted file mode 100644 index 6a2f6d0f..00000000 --- a/test/src/widgets/input/card_input_test.dart +++ /dev/null @@ -1,256 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_paystack/flutter_paystack.dart'; -import 'package:flutter_paystack/src/widgets/input/card_input.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import '../../common/widget_builder.dart'; - -void main() { - group("$CardInput", () { - final buttonText = "Pay NGN 300"; - final paymentCard = PaymentCard.empty(); - - final cardInputWidget = buildTestWidget(CardInput( - buttonText: buttonText, - card: paymentCard, - onValidated: (v) {}, - )); - - group("pay button", () { - testWidgets("isDisplayed", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("PayButton")); - expect(cardNumberFinder, findsOneWidget); - }); - - testWidgets("callsValidateInputs", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("PayButton")); - await tester.tap(cardNumberFinder); - - await tester.pump(); - expect(find.text("Invalid card number"), findsOneWidget); - expect(find.text("Invalid card expiry"), findsOneWidget); - expect(find.text("Invalid cvv"), findsOneWidget); - }); - }); - - group("card number", () { - testWidgets("isDisplayed", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("CardNumberKey")); - expect(cardNumberFinder, findsOneWidget); - }); - - testWidgets("defaultIssuerIconIsDisplayed", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("DefaultIssuerIcon")); - expect(cardNumberFinder, findsOneWidget); - expect(find.byKey(Key("IssuerIcon")), findsNothing); - }); - - testWidgets("displayErrorWithNoInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card number"), findsOneWidget); - }); - - testWidgets("displayErrorWithInvalidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("CardNumberKey")); - await tester.enterText(cardNumberFinder, "411111111111111111"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card number"), findsOneWidget); - }); - - testWidgets("displaysIssuerIconWhenIncompleteNumberIsInputted", - (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("CardNumberKey")); - await tester.enterText(cardNumberFinder, "533"); - - await tester.pump(); - - expect(find.byKey(Key("IssuerIcon")), findsOneWidget); - expect(find.byKey(Key("DefaultIssuerIcon")), findsNothing); - }); - - testWidgets("displaysNoErrorWithValidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cardNumberFinder = find.byKey(Key("CardNumberKey")); - await tester.enterText(cardNumberFinder, "3000 0000 0000 04"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card number"), findsNothing); - }); - }); - - group("card expiry", () { - testWidgets("isDisplayed", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final expiryFinder = find.byKey(Key("ExpiryKey")); - expect(expiryFinder, findsOneWidget); - }); - - testWidgets("displaysErrorWithEmptyInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card expiry"), findsOneWidget); - }); - - testWidgets("displaysErrorWithInvalidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final expiryFinder = find.byKey(Key("ExpiryKey")); - await tester.enterText(expiryFinder, "1365"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card expiry"), findsOneWidget); - }); - - testWidgets("displaysNoErrorWithValidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final expiryFinder = find.byKey(Key("ExpiryKey")); - await tester.enterText(expiryFinder, "12/18"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid card expiry"), findsOneWidget); - }); - - testWidgets("moreThanFourCharactersIsNotAccepted", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final expiryFinder = find.byKey(Key("ExpiryKey")); - await tester.enterText(expiryFinder, "12218"); - - expect(find.text("12/21"), findsOneWidget); - expect(find.text("12/218"), findsNothing); - expect(find.text("12/18"), findsNothing); - expect(find.text("122/18"), findsNothing); - }); - }); - - group("cvv", () { - testWidgets("isDisplayed", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cvvFinder = find.byKey(Key("CVVKey")); - expect(cvvFinder, findsOneWidget); - }); - - testWidgets("displaysErrorWithEmptyInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid cvv"), findsOneWidget); - }); - - testWidgets("displaysErrorWithInvalidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cvvFinder = find.byKey(Key("CVVKey")); - await tester.enterText(cvvFinder, "12"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid cvv"), findsOneWidget); - }); - - testWidgets("displaysNoErrorWithValidInput", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cvvFinder = find.byKey(Key("CVVKey")); - await tester.enterText(cvvFinder, "123"); - - await tester.tap(find.byKey(Key("PayButton"))); - - await tester.pump(); - - expect(find.text("Invalid cvv"), findsNothing); - }); - - testWidgets("moreThanFourCharactersIsNotAccepted", (tester) async { - await tester.pumpWidget(cardInputWidget); - - await tester.pumpAndSettle(); - - final cvvFinder = find.byKey(Key("CVVKey")); - await tester.enterText(cvvFinder, "123456"); - - expect(find.text("1234"), findsOneWidget); - expect(find.text("12345"), findsNothing); - expect(find.text("123456"), findsNothing); - }); - }); - }); -}