Skip to content
Snippets Groups Projects
transactions_test.dart 3.88 KiB
import 'dart:convert';

import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:ginkgo/data/models/transaction.dart';
import 'package:ginkgo/data/models/transaction_state.dart';
import 'package:ginkgo/data/models/transaction_type.dart';
import 'package:ginkgo/g1/transactions_v1_parser.dart';
import 'package:ginkgo/ui/contacts_cache.dart';

void main() {
  setUpAll(() {
    ContactsCache().init(true);
  });

  test('test put', () async {
    final MemoryFallbackBox<String> fallbackBox = MemoryFallbackBox<String>();

    await fallbackBox.put('key', 'value');
    final String? value = fallbackBox.get('key');

    expect(value, 'value');
  });

  test('Test parsing', () async {
    TestWidgetsFlutterBinding.ensureInitialized();
    final String txData = await rootBundle.loadString('assets/tx.json');
    final TransactionState result =
        await transactionsParser(txData, <Transaction>[]);
    expect(result.balance, equals(6700));
    final List<Transaction> txs = result.transactions;
    for (final Transaction tx in txs) {
      expect(tx.recipientsWithoutCashBack.contains(tx.from), equals(false));
    }
    expect(
        txs.first.recipients[0].pubKey ==
            '9Bcx5JV3swCQBEeH3PcuNcBVperLscWtN78hjFVx1yzG',
        equals(true));
    expect(
        txs.first.from.pubKey != '9Bcx5JV3swCQBEeH3PcuNcBVperLscWtN78hjFVx1yzG',
        equals(true));
    expect(txs[txs.length - 2].amount < 0, equals(true));
    expect(txs.last.amount > 0, equals(true));
  });

  test('Test gva history parsing', () async {
    TestWidgetsFlutterBinding.ensureInitialized();
    final String txData = await rootBundle.loadString('assets/gva-tx.json');
    final TransactionState result = await transactionsV1Parser(
        (jsonDecode(txData) as Map<String, dynamic>)['data']
            as Map<String, dynamic>,
        TransactionState.emptyState,
        '6DrGg8cftpkgffv4Y4Lse9HSjgc8coEQor3yvMPHAnVH');
    expect(result.balance, equals(3));
    final List<Transaction> txs = result.transactions;
    for (final Transaction tx in txs) {
      expect(tx.recipientsWithoutCashBack.contains(tx.from), equals(false));
    }
    expect(txs.first.from.pubKey,
        equals('BrgsSYK3xUzDyztGBHmxq69gfNxBfe2UKpxG21oZUBr5'));
    expect(txs.first.recipients[0].pubKey,
        equals('6DrGg8cftpkgffv4Y4Lse9HSjgc8coEQor3yvMPHAnVH'));
    expect(txs.first.type, equals(TransactionType.receiving));
    expect(txs.first.amount, equals(100));
    expect(txs[1].recipients[0].pubKey,
        equals('EDB7chzCBdtUCnqFZquVeto4a65FjeRkPrqcV8NwVbTx'));
    expect(txs[1].from.pubKey,
        equals('6DrGg8cftpkgffv4Y4Lse9HSjgc8coEQor3yvMPHAnVH'));
    expect(txs[1].amount, equals(-1200));
    expect(txs[1].type, equals(TransactionType.sent));