Skip to content

Commit

Permalink
test(main): add tests (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
tsutsu3 authored Feb 1, 2025
1 parent 8beffda commit 8c9fcac
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/functions/status_updater.dart
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ class StatusUpdater {
}
}

void dispose() {
_statusDataTimer?.cancel();
_overTimeDataTimer?.cancel();
}

void _updateStatusData(
ServersProvider serversProvider,
StatusProvider statusProvider,
Expand Down
6 changes: 6 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,12 @@ class _PiHoleClientState extends State<PiHoleClient> {
super.initState();
}

@override
void dispose() {
statusUpdater.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
final statusProvider = Provider.of<StatusProvider>(context);
Expand Down
33 changes: 33 additions & 0 deletions test/widgets/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,37 @@ class TestSetupHelper {
);
}

Widget buildMainTestWidget(Widget child) {
return MultiProvider(
providers: [
ChangeNotifierProvider<ServersProvider>(
create: (context) => mockServersProvider,
),
ChangeNotifierProvider<AppConfigProvider>(
create: (context) => mockConfigProvider,
),
ChangeNotifierProvider<StatusProvider>(
create: (context) => mockStatusProvider,
),
ChangeNotifierProxyProvider<ServersProvider, DomainsListProvider>(
create: (context) => mockDomainsListProvider,
update: (context, serverConfig, servers) =>
servers!..update(serverConfig),
),
ChangeNotifierProxyProvider<ServersProvider, FiltersProvider>(
create: (context) => mockFiltersProvider,
update: (context, serverConfig, servers) =>
servers!..update(serverConfig),
),
ChangeNotifierProxyProvider<AppConfigProvider, ServersProvider>(
create: (context) => mockServersProvider,
update: (context, appConfig, servers) => servers!..update(appConfig),
),
],
child: child,
);
}

void _initConfiProviderMock(String useApiGatewayVersion) {
when(mockConfigProvider.showingSnackbar).thenReturn(false);
when(mockConfigProvider.logsPerQuery).thenReturn(2);
Expand Down Expand Up @@ -943,6 +974,8 @@ class TestSetupHelper {
when(mockStatusProvider.getOvertimeDataJson)
.thenReturn(overtimeData.toJson());
when(mockStatusProvider.getRealtimeStatus).thenReturn(realtimeStatus);
when(mockStatusProvider.startAutoRefresh).thenReturn(true);
when(mockStatusProvider.getRefreshServerStatus).thenReturn(true);
}

void _initDomainListProviderMock(String useApiGatewayVersion) {}
Expand Down
49 changes: 49 additions & 0 deletions test/widgets/main_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pi_hole_client/base.dart';
import 'package:pi_hole_client/main.dart';
import 'package:pi_hole_client/screens/home/home.dart';

import './helpers.dart';

void main() async {
await initializeApp();

group(
'PiHoleClient Widget Tests',
() {
late TestSetupHelper testSetup;

setUp(() async {
testSetup = TestSetupHelper();

testSetup.initializeMock(useApiGatewayVersion: 'v6');
});

testWidgets(
'should show pihole client widget',
(WidgetTester tester) async {
tester.view.physicalSize = const Size(1080, 2400);
tester.view.devicePixelRatio = 2.0;

addTearDown(() {
tester.view.resetPhysicalSize();
tester.view.resetDevicePixelRatio();
});

await tester.pumpWidget(
testSetup.buildMainTestWidget(
const PiHoleClient(),
),
);

expect(find.byType(PiHoleClient), findsOneWidget);
await tester.pumpAndSettle(const Duration(seconds: 3));

expect(find.byType(Base), findsOneWidget);
expect(find.byType(Home), findsOneWidget);
},
);
},
);
}

0 comments on commit 8c9fcac

Please sign in to comment.