// import 'package:flutter/material.dart'; // import 'package:flutter_svg/svg.dart'; // import 'package:flutter_test/flutter_test.dart'; // import 'package:mockingjay/mockingjay.dart' as mockingjay; import 'package:mockito/annotations.dart'; // import 'package:mockito/mockito.dart'; import 'package:stackwallet/services/node_service.dart'; // import 'package:stackwallet/widgets/node_card.dart'; // import 'node_card_test.mocks.dart'; @GenerateMocks([], customMocks: [ MockSpec(returnNullOnMissingStub: true), ]) void main() { // testWidgets("NodeCard builds inactive node correctly", (tester) async { // final nodeService = MockNodeService(); // // when(nodeService.activeNodeName).thenAnswer((_) => "some other node"); // // await tester.pumpWidget( // MaterialApp( // home: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "Campfire default", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("Campfire default"), findsOneWidget); // expect(find.byType(Text), findsOneWidget); // expect(find.byType(SvgPicture), findsOneWidget); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // }); // // testWidgets("NodeCard builds active node correctly", (tester) async { // final nodeService = MockNodeService(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // await tester.pumpWidget( // MaterialApp( // home: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "Campfire default", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("Campfire default"), findsOneWidget); // expect(find.text("Connected"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(2)); // expect(find.byType(SvgPicture), findsOneWidget); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // }); // // testWidgets("tap to open context menu on default node", (tester) async { // final nodeService = MockNodeService(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // await tester.pumpWidget( // MaterialApp( // home: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "Campfire default", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("Campfire default"), findsOneWidget); // expect(find.text("Connected"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(2)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(4)); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // }); // // testWidgets("tap to open context menu on any other node", (tester) async { // final nodeService = MockNodeService(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // await tester.pumpWidget( // MaterialApp( // home: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // }); // // testWidgets("tap connect", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // when(nodeService.setCurrentNode("some other node")) // .thenAnswer((_) async {}); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Connect")); // await tester.pumpAndSettle(); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // verify(nodeService.setCurrentNode("some other node")).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(1); // mockingjay.verifyNoMoreInteractions(navigator); // }); // // testWidgets("tap details", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // mockingjay // .when(() => navigator.push(mockingjay.any())) // .thenAnswer((_) async {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Details")); // await tester.pump(); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(1); // mockingjay // .verify(() => navigator.push(mockingjay.any( // that: mockingjay.isRoute(whereName: equals("/nodedetailsview"))))) // .called(1); // // mockingjay.verifyNoMoreInteractions(navigator); // }); // // testWidgets("tap edit", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // mockingjay // .when(() => navigator.push(mockingjay.any())) // .thenAnswer((_) async {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Edit")); // await tester.pump(); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(1); // mockingjay // .verify(() => navigator.push(mockingjay.any( // that: // mockingjay.isRoute(whereName: equals("/editnodedetailsview"))))) // .called(1); // // mockingjay.verifyNoMoreInteractions(navigator); // }); // // testWidgets("tap delete and cancel", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Delete")); // await tester.pumpAndSettle(); // // expect(find.byType(ModalPopupDialog), findsOneWidget); // expect(find.byType(SimpleButton), findsOneWidget); // expect(find.byType(GradientButton), findsOneWidget); // expect(find.text("CANCEL"), findsOneWidget); // expect(find.text("DELETE"), findsOneWidget); // expect(find.text("Do you want to delete some other node?"), findsOneWidget); // // await tester.tap(find.byType(SimpleButton)); // await tester.pumpAndSettle(); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(2); // // mockingjay.verifyNoMoreInteractions(navigator); // }); // // testWidgets("tap delete and confirm fails", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // when(nodeService.deleteNode("some other node")) // .thenAnswer((_) async => false); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Delete")); // await tester.pumpAndSettle(); // // expect(find.byType(ModalPopupDialog), findsOneWidget); // expect(find.byType(SimpleButton), findsOneWidget); // expect(find.byType(GradientButton), findsOneWidget); // expect(find.text("CANCEL"), findsOneWidget); // expect(find.text("DELETE"), findsOneWidget); // expect(find.text("Do you want to delete some other node?"), findsOneWidget); // // await tester.tap(find.byType(GradientButton)); // await tester.pumpAndSettle(); // // expect(find.byType(CampfireAlert), findsOneWidget); // expect(find.text("Error: Could not delete node named \"some other node\"!"), // findsOneWidget); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // verify(nodeService.deleteNode("some other node")).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(2); // // mockingjay.verifyNoMoreInteractions(navigator); // }); // // testWidgets("tap delete and confirm succeeds", (tester) async { // final nodeService = MockNodeService(); // final navigator = mockingjay.MockNavigator(); // // when(nodeService.activeNodeName).thenAnswer((_) => "Campfire default"); // when(nodeService.deleteNode("some other node")) // .thenAnswer((_) async => true); // // mockingjay.when(() => navigator.pop()).thenAnswer((_) {}); // // await tester.pumpWidget( // MaterialApp( // home: mockingjay.MockNavigatorProvider( // navigator: navigator, // child: MultiProvider( // providers: [ // ChangeNotifierProvider( // create: (_) => nodeService, // ), // ], // child: NodeCard( // nodeName: "some other node", // nodeData: { // "port": "9000", // "ipAddress": "some url", // "useSSL": true, // }, // ), // ), // ), // ), // ); // await tester.pumpAndSettle(); // // expect(find.text("some other node"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(1)); // expect(find.byType(SvgPicture), findsOneWidget); // // await tester.tap(find.byType(NodeCard)); // await tester.pumpAndSettle(); // // expect(find.text("Connect"), findsOneWidget); // expect(find.text("Details"), findsOneWidget); // expect(find.text("Edit"), findsOneWidget); // expect(find.text("Delete"), findsOneWidget); // expect(find.byType(Text), findsNWidgets(5)); // // await tester.tap(find.text("Delete")); // await tester.pumpAndSettle(); // // expect(find.byType(ModalPopupDialog), findsOneWidget); // expect(find.byType(SimpleButton), findsOneWidget); // expect(find.byType(GradientButton), findsOneWidget); // expect(find.text("CANCEL"), findsOneWidget); // expect(find.text("DELETE"), findsOneWidget); // expect(find.text("Do you want to delete some other node?"), findsOneWidget); // // await tester.tap(find.byType(GradientButton)); // await tester.pumpAndSettle(); // // expect(find.byType(CampfireAlert), findsNothing); // expect(find.text("Error: Could not delete node named \"some other node\"!"), // findsNothing); // // verify(nodeService.activeNodeName).called(1); // verify(nodeService.addListener(any)).called(1); // verify(nodeService.deleteNode("some other node")).called(1); // // verifyNoMoreInteractions(nodeService); // // mockingjay.verify(() => navigator.pop()).called(2); // // mockingjay.verifyNoMoreInteractions(navigator); // }); }