From ba57ab13f2f5734651cddaa378dcb17c66fde068 Mon Sep 17 00:00:00 2001 From: TaprootFreakAI <315477232+TaprootFreakAI@users.noreply.github.com> Date: Sun, 6 Sep 2026 22:15:45 +0200 Subject: [PATCH 1/3] test(history): pin inbound transfers labelled as Kauf Golden of the current direction-only titles so a follow-up PR can replace the same PNG when inbound-from-external becomes Empfangen. --- ...n_history_transfer_labels_golden_test.dart | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 test/goldens/screens/transaction_history/transaction_history_transfer_labels_golden_test.dart diff --git a/test/goldens/screens/transaction_history/transaction_history_transfer_labels_golden_test.dart b/test/goldens/screens/transaction_history/transaction_history_transfer_labels_golden_test.dart new file mode 100644 index 000000000..4f2f92a94 --- /dev/null +++ b/test/goldens/screens/transaction_history/transaction_history_transfer_labels_golden_test.dart @@ -0,0 +1,141 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:clock/clock.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:get_it/get_it.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:realunit_wallet/models/transaction.dart'; +import 'package:realunit_wallet/packages/config/api_config.dart'; +import 'package:realunit_wallet/packages/repository/transaction_repository.dart'; +import 'package:realunit_wallet/packages/service/app_store.dart'; +import 'package:realunit_wallet/packages/service/dfx/real_unit_pdf_service.dart'; +import 'package:realunit_wallet/packages/utils/default_assets.dart'; +import 'package:realunit_wallet/screens/settings/bloc/settings_bloc.dart'; +import 'package:realunit_wallet/screens/transaction_history/cubits/filter/transaction_history_filter_cubit.dart'; +import 'package:realunit_wallet/screens/transaction_history/transaction_history_page.dart'; + +import '../../../helper/helper.dart'; + +// Pins direction-only labels (inbound → Kauf, outbound → Verkauf) so a +// follow-up PR can recategorise the same four rows and replace the same +// `transaction_history_transfer_labels` PNG for a pixel before/after. + +class _MockTransactionHistoryFilterCubit + extends MockCubit + implements TransactionHistoryFilterCubit {} + +class _MockTransactionRepository extends Mock implements TransactionRepository {} + +class _MockRealUnitPdfService extends Mock implements RealUnitPdfService {} + +class _MockApiConfig extends Mock implements ApiConfig {} + +void main() { + const walletAddress = '0xcabd3f4b10a7089986e708d19140bfc98e5880c0'; + const counterparty = '0x1234567890abcdef1234567890abcdef12345678'; + + late MockSettingsBloc settingsBloc; + final transactionRepository = _MockTransactionRepository(); + + // decimals of realUnitAsset is 0 → amounts are plain share counts. + // Direction alone drives the title today; no TransferCategory on this branch. + Transaction inbound(String txId, int shares, DateTime timestamp) => + Transaction( + height: 200, + txId: txId, + chainId: 1, + senderAddress: counterparty, + receiverAddress: walletAddress, + amount: BigInt.from(shares), + asset: realUnitAsset, + type: TransactionTypes.tokenTransfer, + note: null, + data: null, + timestamp: timestamp, + ); + + Transaction outbound(String txId, int shares, DateTime timestamp) => + Transaction( + height: 199, + txId: txId, + chainId: 1, + senderAddress: walletAddress, + receiverAddress: counterparty, + amount: BigInt.from(shares), + asset: realUnitAsset, + type: TransactionTypes.tokenTransfer, + note: null, + data: null, + timestamp: timestamp, + ); + + // Same four rows the fix PR will recategorise (order + timestamps fixed). + final transactions = [ + // looks like Kauf; later PR: purchase + inbound('0xtx1', 100, DateTime.utc(2026, 5, 20, 10, 30)), + // THE BUG (Bojan); later PR: transferIn / Empfangen + inbound('0xtx2', 10, DateTime.utc(2026, 5, 19, 12)), + // looks like Verkauf; later PR: transferOut / Gesendet + outbound('0xtx3', 10, DateTime.utc(2026, 5, 18, 14)), + // looks like Verkauf; later PR: sale + outbound('0xtx4', 20, DateTime.utc(2026, 5, 15, 9, 15)), + ]; + + final pinnedClock = Clock.fixed(DateTime.utc(2026, 5, 23)); + + setUpAll(() { + final getIt = GetIt.instance; + final apiConfig = _MockApiConfig(); + final appStore = MockAppStore(); + when(() => apiConfig.asset).thenReturn(realUnitAsset); + when(() => appStore.apiConfig).thenReturn(apiConfig); + when(() => appStore.primaryAddress).thenReturn(walletAddress); + when(() => transactionRepository.watchTransactionsOfAssets(any(), any())) + .thenAnswer((_) => const Stream>.empty()); + getIt.registerSingleton(appStore); + getIt.registerSingleton(_MockRealUnitPdfService()); + getIt.registerSingleton(transactionRepository); + }); + + tearDownAll(() async => GetIt.instance.reset()); + + setUp(() { + settingsBloc = MockSettingsBloc(); + when(() => settingsBloc.state).thenReturn(const SettingsState()); + }); + + group('$TransactionHistoryView', () { + late _MockTransactionHistoryFilterCubit filterCubit; + + setUp(() { + filterCubit = _MockTransactionHistoryFilterCubit(); + when(() => filterCubit.state).thenReturn(TransactionHistoryFilterState()); + }); + + Widget buildSubject() => MultiBlocProvider( + providers: [ + BlocProvider.value(value: settingsBloc), + BlocProvider.value( + value: filterCubit, + ), + ], + child: TransactionHistoryView(walletAddress: walletAddress), + ); + + goldenTest( + 'inbound from an external wallet labelled Kauf', + fileName: 'transaction_history_transfer_labels', + constraints: phoneConstraints, + builder: () { + when(() => filterCubit.state).thenReturn( + TransactionHistoryFilterState( + all: transactions, + filtered: transactions, + ), + ); + return withClock(pinnedClock, () => wrapForGolden(buildSubject())); + }, + ); + }); +} From 8848fea3acebd37322802b0d65fc49b8deb87ab2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Sep 2026 22:17:00 +0200 Subject: [PATCH 2/3] test(goldens): regenerate baselines on the self-hosted runner --- .../transaction_history_transfer_labels.png | Bin 0 -> 34806 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/goldens/screens/transaction_history/goldens/macos/transaction_history_transfer_labels.png diff --git a/test/goldens/screens/transaction_history/goldens/macos/transaction_history_transfer_labels.png b/test/goldens/screens/transaction_history/goldens/macos/transaction_history_transfer_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ff10cbd4eff769d19498dd0412b9eee8d8851d GIT binary patch literal 34806 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 Y(e~>L{q!R~S0gL`N=2qr%H-4k1%_B$W&i*H literal 0 HcmV?d00001 From 0bfc266b1c1e0a690711c8f9912b7a331396837a Mon Sep 17 00:00:00 2001 From: TaprootFreakAI <315477232+TaprootFreakAI@users.noreply.github.com> Date: Sun, 6 Sep 2026 22:27:29 +0200 Subject: [PATCH 3/3] ci: trigger workflows on bot regen