Skip to content

Commit

Permalink
test(logs): add tests (#117)
Browse files Browse the repository at this point in the history
  • Loading branch information
tsutsu3 authored Jan 26, 2025
1 parent 02a11b9 commit 59efbaf
Show file tree
Hide file tree
Showing 7 changed files with 457 additions and 1,486 deletions.
1 change: 1 addition & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
ignore:
- "lib/screens/settings/about/about.dart"
- "lib/**/*.g.dart"
10 changes: 10 additions & 0 deletions test/widgets/helpers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import 'package:pi_hole_client/providers/domains_list_provider.dart';
import 'package:pi_hole_client/providers/filters_provider.dart';
import 'package:pi_hole_client/providers/servers_provider.dart';
import 'package:pi_hole_client/providers/status_provider.dart';
import 'package:pi_hole_client/screens/logs/logs_filters_modal.dart';
import 'package:provider/provider.dart';

import './helpers.mocks.dart';
Expand Down Expand Up @@ -895,6 +896,9 @@ class TestSetupHelper {
when(mockServersProvider.deleteDbData()).thenAnswer((_) async => true);
when(mockServersProvider.getServersList).thenReturn([serverV6]);
when(mockServersProvider.colors).thenReturn(lightAppColors);
when(mockServersProvider.queryStatuses).thenReturn(
useApiGatewayVersion == 'v5' ? queryStatusesV5 : queryStatusesV6,
);
}

void _initFiltersProviderMock(String useApiGatewayVersion) {
Expand All @@ -918,6 +922,12 @@ class TestSetupHelper {
when(mockFiltersProvider.statusAllowedAndRetried).thenReturn(
useApiGatewayVersion == 'v5' ? [2, 3, 12, 13, 14] : [3, 4, 13, 14, 15],
);
when(mockFiltersProvider.requestStatus).thenReturn(RequestStatus.all);
when(mockFiltersProvider.defaultSelected).thenReturn(
useApiGatewayVersion == 'v5'
? [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14]
: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
);
}

void _initStatusProviderMock(String useApiGatewayVersion) {
Expand Down
91 changes: 91 additions & 0 deletions test/widgets/logs/clients_filters_modal_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pi_hole_client/screens/logs/clients_filters_modal.dart';

import '../helpers.dart';

void main() async {
await initializeApp();

group(
'Client filter modal tests',
() {
late TestSetupHelper testSetup;

setUp(() async {
testSetup = TestSetupHelper();
testSetup.initializeMock(useApiGatewayVersion: 'v6');
});

testWidgets(
'should uncheck all filter',
(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.buildTestWidget(
const ClientsFiltersModal(
statusBarHeight: 24,
bottomNavBarHeight: 48,
selectedClients: ['192.168.100.2', 'localhost'],
window: false,
),
),
);

expect(find.byType(ClientsFiltersModal), findsOneWidget);
expect(find.text('Clients'), findsOneWidget);
expect(find.text('Uncheck all'), findsOneWidget);
expect(find.text('Close'), findsOneWidget);
expect(find.text('Apply'), findsOneWidget);
await tester.tap(find.text('Uncheck all'));
await tester.pumpAndSettle();

await tester.tap(find.text('Apply'));
await tester.pumpAndSettle();
},
);

testWidgets(
'should check all clients',
(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.buildTestWidget(
const ClientsFiltersModal(
statusBarHeight: 24,
bottomNavBarHeight: 48,
selectedClients: [],
window: false,
),
),
);

expect(find.byType(ClientsFiltersModal), findsOneWidget);
expect(find.text('Clients'), findsOneWidget);
expect(find.text('Check all'), findsOneWidget);
expect(find.text('Close'), findsOneWidget);
expect(find.text('Apply'), findsOneWidget);
await tester.tap(find.text('Check all'));
await tester.pumpAndSettle();

await tester.tap(find.text('Apply'));
await tester.pumpAndSettle();
},
);
},
);
}
52 changes: 52 additions & 0 deletions test/widgets/logs/logs_filters_modal_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pi_hole_client/screens/logs/logs_filters_modal.dart';

import '../helpers.dart';

// TODO: Fix this test
// ═╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
// The following assertion was thrown during layout:

void main() async {
await initializeApp();

group(
'Query logs screen tests',
() {
late TestSetupHelper testSetup;

setUp(() async {
testSetup = TestSetupHelper();
testSetup.initializeMock(useApiGatewayVersion: 'v6');
});

testWidgets(
'should show logs screen on mobile layout',
(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.buildTestWidget(
LogsFiltersModal(
statusBarHeight: 24.0,
bottomNavBarHeight: 48.0,
filterLogs: () {},
window: true,
),
),
);

expect(find.byType(LogsFiltersModal), findsOneWidget);
},
skip: true,
);
},
);
}
Loading

0 comments on commit 59efbaf

Please sign in to comment.