test: execute a transaction to ChristCosmic
This commit is contained in:
parent
cbbd4eee34
commit
fc80f5693c
|
@ -1,10 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:gecko/models/widgets_keys.dart';
|
||||
import 'package:integration_test/integration_test.dart';
|
||||
|
||||
import 'package:gecko/main.dart' as app;
|
||||
|
||||
import 'tests_utility.dart';
|
||||
|
||||
void main() {
|
||||
|
@ -15,22 +14,27 @@ void main() {
|
|||
app.main();
|
||||
await tester.pumpAndSettle(const Duration(seconds: 1));
|
||||
|
||||
// await deleteAllWallets(tester);
|
||||
// Delete all existing chests
|
||||
await deleteAllWallets(tester);
|
||||
|
||||
// Restore a chest
|
||||
await restoreChest(tester);
|
||||
});
|
||||
testWidgets('Send 10 ĞD to ChristCosmic', (tester) async {
|
||||
// await goKey(tester, buttonKey);
|
||||
|
||||
// Execute a transaction to ChristCosmic
|
||||
await payChrist(tester);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Customs actions
|
||||
Future deleteAllWallets(WidgetTester tester) async {
|
||||
if (await isPresent(tester, 'Rechercher')) {
|
||||
await goKey(tester, keyDrawerMenu);
|
||||
await goKey(tester, keyParameters);
|
||||
await goKey(tester, keyDeleteAllWallets);
|
||||
await goKey(tester, keyConfirm);
|
||||
await tester.pumpAndSettle();
|
||||
}
|
||||
}
|
||||
|
||||
Future restoreChest(WidgetTester tester) async {
|
||||
|
@ -45,7 +49,8 @@ Future restoreChest(WidgetTester tester) async {
|
|||
await goKey(tester, keyGoNext);
|
||||
await goKey(tester, keyGoNext);
|
||||
await goKey(tester, keyGoNext);
|
||||
await goKey(tester, keyCachePassword);
|
||||
final isCached = await isIconPresent(tester, Icons.check_box);
|
||||
if (!isCached) await goKey(tester, keyCachePassword);
|
||||
await enterText(tester, keyPinForm, 'AAAAA');
|
||||
await waitFor(tester, 'Accéder à mon coffre');
|
||||
await goKey(tester, keyGoWalletsHome);
|
||||
|
@ -53,3 +58,21 @@ Future restoreChest(WidgetTester tester) async {
|
|||
await goBack(tester);
|
||||
await waitFor(tester, "y'a pas de lézard");
|
||||
}
|
||||
|
||||
Future payChrist(WidgetTester tester) async {
|
||||
await waitFor(tester, 'Rechercher');
|
||||
await goKey(tester, keyOpenSearch);
|
||||
await enterText(tester, keySearchField, 'ChristCosmic');
|
||||
await goKey(tester, keyConfirmSearch);
|
||||
await waitFor(tester, 'XuiQeB');
|
||||
await goKey(tester,
|
||||
keyIndexerResult('5CJKhFCpdSpumgWjSZ3TQmejJuHV6iELJrtdrfs38SXuiQeB'));
|
||||
await waitFor(tester, 'XuiQeB');
|
||||
await waitFor(tester, 'ĞD');
|
||||
await goKey(tester, keyPay);
|
||||
await enterText(tester, keyAmountField, '2.14');
|
||||
await goKey(tester, keyConfirmPayment);
|
||||
await waitFor(tester, 'validé !', timeout: const Duration(seconds: 12));
|
||||
await goKey(tester, keyCloseTransactionScreen);
|
||||
await waitFor(tester, 'XuiQeB');
|
||||
}
|
||||
|
|
|
@ -46,6 +46,26 @@ Future<void> waitFor(
|
|||
} while (finder.evaluate().isEmpty);
|
||||
}
|
||||
|
||||
// Test if text is visible on screen, return a boolean
|
||||
Future<bool> isPresent(WidgetTester tester, String text,
|
||||
{Duration timeout = const Duration(seconds: 1)}) async {
|
||||
try {
|
||||
await waitFor(tester, text, timeout: timeout);
|
||||
return true;
|
||||
} catch (exception) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Test if widget exist on screen, return a boolean
|
||||
Future<bool> isIconPresent(WidgetTester tester, IconData icon,
|
||||
{Duration timeout = const Duration(seconds: 1)}) async {
|
||||
await tester.pumpAndSettle();
|
||||
final finder = find.byIcon(icon);
|
||||
log.d('tatatatatatata: ${finder.evaluate()}');
|
||||
return finder.evaluate().isEmpty ? false : true;
|
||||
}
|
||||
|
||||
extension Truncate on String {
|
||||
String truncate({required int max, String suffix = ''}) {
|
||||
return length < max
|
||||
|
|
|
@ -10,7 +10,8 @@ const keyConfirm = Key('keyConfirm');
|
|||
const keyParameters = Key('keyParameters');
|
||||
const keyContacts = Key('keyContacts');
|
||||
const keyDrawerMenu = Key('keyDrawerMenu');
|
||||
const keyManageWallets = Key('keyManageWallets');
|
||||
const keyOpenWalletsHomme = Key('keyOpenWalletsHomme');
|
||||
const keyOpenSearch = Key('keyOpenSearch');
|
||||
const keyRestoreChest = Key('keyRestoreChest');
|
||||
|
||||
// Wallets home
|
||||
|
@ -46,6 +47,9 @@ const keyImportChest = Key('keyImportChest');
|
|||
const keyViewActivity = Key('keyViewActivity');
|
||||
const keyCertify = Key('keyCertify');
|
||||
const keyPay = Key('keyPay');
|
||||
const keyAmountField = Key('keyAmountField');
|
||||
const keyConfirmPayment = Key('keyConfirmPayment');
|
||||
const keyCloseTransactionScreen = Key('keyCloseTransactionScreen');
|
||||
|
||||
// Activity view
|
||||
const keyListTransactions = Key('keyListTransactions');
|
||||
|
@ -67,8 +71,12 @@ const keyInputWord = Key('keyInputWord');
|
|||
const keyGeneratedPin = Key('keyGeneratedPin');
|
||||
const keyGoWalletsHome = Key('keyGoWalletsHome');
|
||||
|
||||
// Search
|
||||
const keySearchField = Key('keySearchField');
|
||||
const keyConfirmSearch = Key('keyConfirmSearch');
|
||||
|
||||
// Unit keys
|
||||
Key keyMnemonicWord(String word) => Key('keyMnemonicWord$word');
|
||||
Key keyIndexerResult(int keyId) => Key('keyIndexerResult$keyId');
|
||||
Key keyIndexerResult(String keyId) => Key('keyIndexerResult$keyId');
|
||||
Key keyTransaction(int keyId) => Key('keyTransaction$keyId');
|
||||
Key keySearchResult(int keyId) => Key('keySearchResult$keyId');
|
||||
Key keySearchResult(String keyId) => Key('keySearchResult$keyId');
|
||||
|
|
|
@ -294,7 +294,6 @@ class DuniterIndexer with ChangeNotifier {
|
|||
return Text('noResult'.tr());
|
||||
}
|
||||
|
||||
int keyID = 0;
|
||||
double avatarSize = 55;
|
||||
return Expanded(
|
||||
child: ListView(children: <Widget>[
|
||||
|
@ -302,7 +301,7 @@ class DuniterIndexer with ChangeNotifier {
|
|||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5),
|
||||
child: ListTile(
|
||||
key: keyIndexerResult(keyID++),
|
||||
key: keyIndexerResult(profile['id']),
|
||||
horizontalTitleGap: 40,
|
||||
contentPadding: const EdgeInsets.all(5),
|
||||
leading: cesiumPlusProvider.defaultAvatar(avatarSize),
|
||||
|
|
|
@ -282,6 +282,7 @@ Widget geckHome(context) {
|
|||
child: Material(
|
||||
color: orangeC, // button color
|
||||
child: InkWell(
|
||||
key: keyOpenSearch,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(18),
|
||||
child: Image(
|
||||
|
@ -324,7 +325,7 @@ Widget geckHome(context) {
|
|||
],
|
||||
),
|
||||
child: ClipOval(
|
||||
key: keyManageWallets,
|
||||
key: keyOpenWalletsHomme,
|
||||
child: Material(
|
||||
color: orangeC, // button color
|
||||
child: InkWell(
|
||||
|
|
|
@ -29,7 +29,6 @@ class ContactsScreen extends StatelessWidget {
|
|||
DuniterIndexer duniterIndexer =
|
||||
Provider.of<DuniterIndexer>(context, listen: false);
|
||||
|
||||
int keyID = 0;
|
||||
double avatarSize = 55;
|
||||
|
||||
final myContacts = contactsBox.toMap().values.toList();
|
||||
|
@ -72,7 +71,7 @@ class ContactsScreen extends StatelessWidget {
|
|||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5),
|
||||
child: ListTile(
|
||||
key: keySearchResult(keyID++),
|
||||
key: keySearchResult('keyID++'),
|
||||
horizontalTitleGap: 40,
|
||||
contentPadding: const EdgeInsets.all(5),
|
||||
leading: cesiumPlusProvider
|
||||
|
|
|
@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||
import 'package:flutter/services.dart';
|
||||
import 'package:gecko/globals.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:gecko/models/widgets_keys.dart';
|
||||
// import 'package:gecko/providers/home.dart';
|
||||
import 'package:gecko/providers/search.dart';
|
||||
import 'package:gecko/screens/common_elements.dart';
|
||||
|
@ -51,6 +52,7 @@ class SearchScreen extends StatelessWidget {
|
|||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 17),
|
||||
child: TextField(
|
||||
key: keySearchField,
|
||||
controller: searchProvider.searchController,
|
||||
autofocus: true,
|
||||
maxLines: 1,
|
||||
|
@ -91,6 +93,7 @@ class SearchScreen extends StatelessWidget {
|
|||
width: 410,
|
||||
height: 70,
|
||||
child: ElevatedButton(
|
||||
key: keyConfirmSearch,
|
||||
style: ElevatedButton.styleFrom(
|
||||
elevation: 4,
|
||||
primary: orangeC, // background
|
||||
|
|
|
@ -32,7 +32,6 @@ class SearchResultScreen extends StatelessWidget {
|
|||
DuniterIndexer duniterIndexer =
|
||||
Provider.of<DuniterIndexer>(context, listen: false);
|
||||
|
||||
int keyID = 0;
|
||||
double avatarSize = 55;
|
||||
|
||||
return Scaffold(
|
||||
|
@ -95,7 +94,7 @@ class SearchResultScreen extends StatelessWidget {
|
|||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 5),
|
||||
child: ListTile(
|
||||
key: keySearchResult(keyID++),
|
||||
key: keySearchResult(g1Wallet.pubkey!),
|
||||
horizontalTitleGap: 40,
|
||||
contentPadding: const EdgeInsets.all(5),
|
||||
leading: cesiumPlusProvider
|
||||
|
|
|
@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||
import 'package:flutter/services.dart';
|
||||
import 'package:gecko/globals.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:gecko/models/widgets_keys.dart';
|
||||
import 'package:gecko/providers/my_wallets.dart';
|
||||
import 'package:gecko/providers/substrate_sdk.dart';
|
||||
import 'package:gecko/providers/wallets_profiles.dart';
|
||||
|
@ -263,6 +264,7 @@ class TransactionInProgress extends StatelessWidget {
|
|||
width: 380 * ratio,
|
||||
height: 60 * ratio,
|
||||
child: ElevatedButton(
|
||||
key: keyCloseTransactionScreen,
|
||||
style: ElevatedButton.styleFrom(
|
||||
elevation: 4,
|
||||
primary: orangeC, // background
|
||||
|
|
|
@ -573,6 +573,7 @@ class WalletViewScreen extends StatelessWidget {
|
|||
),
|
||||
const SizedBox(height: 10),
|
||||
TextField(
|
||||
key: keyAmountField,
|
||||
controller: walletViewProvider.payAmount,
|
||||
autofocus: true,
|
||||
maxLines: 1,
|
||||
|
@ -618,6 +619,7 @@ class WalletViewScreen extends StatelessWidget {
|
|||
width: double.infinity,
|
||||
height: 60,
|
||||
child: ElevatedButton(
|
||||
key: keyConfirmPayment,
|
||||
style: ElevatedButton.styleFrom(
|
||||
elevation: 4,
|
||||
primary: orangeC, // background
|
||||
|
|
Loading…
Reference in New Issue