import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; // import 'package:stackwallet/pages/pinpad_views/lock_screen_view.dart'; import 'package:stackwallet/services/node_service.dart'; import 'package:stackwallet/services/wallets_service.dart'; @GenerateMocks([], customMocks: [ MockSpec(returnNullOnMissingStub: true), MockSpec(returnNullOnMissingStub: true), MockSpec(returnNullOnMissingStub: true), ]) void main() { testWidgets("LockscreenView builds correctly", (tester) async { // final navigator = mockingjay.MockNavigator(); // final walletsService = MockWalletsService(); // final nodeService = MockNodeService(); // final wallet = MockManager(); // final secureStore = FakeSecureStorage(); // // secureStore.write(key: "walletID", value: "1234"); // // when(walletsService.getWalletId("My Firo Wallet")) // .thenAnswer((_) async => "walletID"); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => walletsService, // ), // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ChangeNotifierProvider( // create: (_) => manager, // ), // ], // child: LockscreenView( // routeOnSuccess: "/mainview", // secureStore: secureStore, // ), // ), // ), // ), // ); // // await tester.pumpAndSettle(); // // expect(find.byType(AppBarIconButton), findsOneWidget); // expect(find.byType(SvgPicture), findsOneWidget); // // expect(find.text("My Firo Wallet"), findsOneWidget); // expect(find.text("Enter PIN"), findsOneWidget); // // expect(find.byType(CustomPinPut), findsOneWidget); }); testWidgets("enter valid pin", (tester) async { // final navigator = mockingjay.MockNavigator(); // final walletsService = MockWalletsService(); // final nodeService = MockNodeService(); // final wallet = MockManager(); // final secureStore = FakeSecureStorage(); // // secureStore.write(key: "walletID_pin", value: "1234"); // // when(walletsService.getWalletId("My Firo Wallet")) // .thenAnswer((_) async => "walletID"); // // mockingjay // .when(() => navigator.pushReplacementNamed("/mainview")) // .thenAnswer((_) async => {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => walletsService, // ), // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ChangeNotifierProvider( // create: (_) => manager, // ), // ], // child: LockscreenView( // routeOnSuccess: "/mainview", // secureStore: secureStore, // ), // ), // ), // ), // ); // // await tester.pumpAndSettle(); // // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "1")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "2")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "3")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "4")); // await tester.pump(const Duration(milliseconds: 500)); // // expect(find.text("PIN code correct. Unlocking wallet..."), findsOneWidget); // // await tester.pump(const Duration(seconds: 2)); // // mockingjay // .verify(() => navigator.pushReplacementNamed("/mainview")) // .called(1); }); testWidgets("wallet initialization fails", (tester) async { // final navigator = mockingjay.MockNavigator(); // final walletsService = MockWalletsService(); // final nodeService = MockNodeService(); // final wallet = MockManager(); // final secureStore = FakeSecureStorage(); // // secureStore.write(key: "walletID_pin", value: "1234"); // // when(walletsService.getWalletId("My Firo Wallet")) // .thenAnswer((_) async => "walletID"); // // mockingjay // .when(() => navigator.pushReplacementNamed("/mainview")) // .thenAnswer((_) async => {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => walletsService, // ), // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ChangeNotifierProvider( // create: (_) => manager, // ), // ], // child: LockscreenView( // routeOnSuccess: "/mainview", // secureStore: secureStore, // ), // ), // ), // ), // ); // // await tester.pumpAndSettle(); // // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "1")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "2")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "3")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "4")); // await tester.pump(const Duration(milliseconds: 500)); // // expect(find.text("PIN code correct. Unlocking wallet..."), findsOneWidget); // // await tester.pump(const Duration(seconds: 2)); // // expect( // find.text( // "Failed to connect to network. Check your internet connection and make sure the Electrum X node you are connected to is not having any issues."), // findsOneWidget); // // await tester.tap(find.byKey(Key("campfireAlertOKButtonKey"))); // await tester.pump(const Duration(seconds: 2)); // await tester.pump(const Duration(seconds: 2)); // // expect( // find.text( // "Failed to connect to network. Check your internet connection and make sure the Electrum X node you are connected to is not having any issues."), // findsNothing); // // mockingjay // .verify(() => navigator.pushReplacementNamed("/mainview")) // .called(1); }); testWidgets("enter invalid pin", (tester) async { // final navigator = mockingjay.MockNavigator(); // final walletsService = MockWalletsService(); // final nodeService = MockNodeService(); // final wallet = MockManager(); // final secureStore = FakeSecureStorage(); // // secureStore.write(key: "walletID_pin", value: "1234"); // // when(walletsService.getWalletId("My Firo Wallet")) // .thenAnswer((_) async => "walletID"); // // mockingjay // .when(() => navigator.pushReplacementNamed("/mainview")) // .thenAnswer((_) async => {}); // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => walletsService, // ), // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ChangeNotifierProvider( // create: (_) => manager, // ), // ], // child: LockscreenView( // routeOnSuccess: "/mainview", // secureStore: secureStore, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "1")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "1")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "3")); // await tester.pump(const Duration(milliseconds: 200)); // await tester.tap(find.byWidgetPredicate( // (widget) => widget is NumberKey && widget.number == "4")); // await tester.pump(const Duration(milliseconds: 500)); // // expect(find.text("Incorrect PIN. Please try again"), findsOneWidget); // // await tester.pump(const Duration(seconds: 2)); // // mockingjay.verifyNever(() => navigator.pushReplacementNamed("/mainview")); }); testWidgets("tap back", (tester) async { // final navigator = mockingjay.MockNavigator(); // final walletsService = MockWalletsService(); // final nodeService = MockNodeService(); // final wallet = MockManager(); // final secureStore = FakeSecureStorage(); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) async => {}); // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => walletsService, // ), // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ChangeNotifierProvider( // create: (_) => manager, // ), // ], // child: LockscreenView( // routeOnSuccess: "/mainview", // secureStore: secureStore, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // await tester.tap(find.byType(AppBarIconButton)); // await tester.pumpAndSettle(); // // mockingjay.verify(() => navigator.pop()).called(1); }); }