stack_wallet/test/widget_tests/trade_card_test.dart

95 lines
2.9 KiB
Dart
Raw Normal View History

2023-09-12 16:41:49 +00:00
import 'dart:io';
2022-10-19 10:09:34 +00:00
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
2023-05-08 17:59:00 +00:00
import 'package:flutter_test/flutter_test.dart';
2023-05-12 20:02:04 +00:00
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:stackwallet/models/exchange/response_objects/trade.dart';
2023-05-12 20:02:04 +00:00
import 'package:stackwallet/models/isar/stack_theme.dart';
2023-09-12 16:41:49 +00:00
import 'package:stackwallet/themes/coin_icon_provider.dart';
import 'package:stackwallet/themes/stack_colors.dart';
2023-09-12 16:41:49 +00:00
import 'package:stackwallet/themes/theme_providers.dart';
2023-05-12 20:02:04 +00:00
import 'package:stackwallet/themes/theme_service.dart';
import 'package:stackwallet/widgets/trade_card.dart';
2022-10-19 10:09:34 +00:00
2023-05-12 20:02:04 +00:00
import '../sample_data/theme_json.dart';
import 'trade_card_test.mocks.dart';
@GenerateMocks([
ThemeService,
2023-09-12 16:41:49 +00:00
IThemeAssets,
2023-05-12 20:02:04 +00:00
])
void main() {
testWidgets("Test Trade card builds", (widgetTester) async {
2023-05-12 20:02:04 +00:00
final mockThemeService = MockThemeService();
2023-09-12 16:41:49 +00:00
final mockIThemeAssets = MockIThemeAssets();
when(mockIThemeAssets.txExchangeFailed).thenAnswer(
(_) =>
"${Directory.current.path}/test/sample_data/light/assets/dummy.svg",
);
2023-05-12 20:02:04 +00:00
when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
(_) => StackTheme.fromJson(
json: lightThemeJsonMap,
),
);
final trade = Trade(
uuid: "uuid",
tradeId: "trade id",
rateType: "Estimate rate",
direction: "",
timestamp: DateTime.parse("1662544771"),
updatedAt: DateTime.parse("1662544771"),
payInCurrency: "BTC",
payInAmount: "10",
payInAddress: "btc address",
payInNetwork: "",
payInExtraId: "",
payInTxid: "",
payOutCurrency: "xmr",
payOutAmount: "10",
payOutAddress: "xmr address",
payOutNetwork: "",
payOutExtraId: "",
payOutTxid: "",
refundAddress: "refund address",
refundExtraId: "",
status: "Failed",
exchangeName: "Some Exchange");
await widgetTester.pumpWidget(
ProviderScope(
2023-05-12 20:02:04 +00:00
overrides: [
pThemeService.overrideWithValue(mockThemeService),
2023-09-12 16:41:49 +00:00
themeAssetsProvider.overrideWithProvider(
StateProvider(
(ref) => mockIThemeAssets,
),
),
coinIconProvider.overrideWithProvider(
(argument) => Provider<String>((_) =>
"${Directory.current.path}/test/sample_data/light/assets/dummy.svg"),
),
2023-05-12 20:02:04 +00:00
],
child: MaterialApp(
theme: ThemeData(
extensions: [
StackColors.fromStackColorTheme(
2023-05-08 17:59:00 +00:00
StackTheme.fromJson(
2023-05-12 20:02:04 +00:00
json: lightThemeJsonMap,
2023-05-08 17:59:00 +00:00
),
),
],
),
home: TradeCard(trade: trade, onTap: () {}),
),
),
);
expect(find.byType(TradeCard), findsOneWidget);
expect(find.text("BTC → XMR"), findsOneWidget);
expect(find.text("Some Exchange"), findsOneWidget);
});
}