Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test(logs): add widget tests #117

Merged
merged 6 commits into from
Jan 26, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add logs tests
  • Loading branch information
tsutsu3 committed Jan 26, 2025
commit 35a6909709cb6f8a4404fc88a6ab5dad0df6330b
8 changes: 8 additions & 0 deletions test/widgets/helpers.dart
Original file line number Diff line number Diff line change
@@ -896,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) {
@@ -920,6 +923,11 @@ class TestSetupHelper {
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) {
92 changes: 92 additions & 0 deletions test/widgets/logs/clients_filters_modal_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
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';
import '../utils.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();
},
);
},
);
}
51 changes: 51 additions & 0 deletions test/widgets/logs/logs_filters_modal_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// 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: couse
// ═╡ 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);
// },
// );
// },
// );
// }
2 changes: 0 additions & 2 deletions test/widgets/logs/logs_test.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:pi_hole_client/screens/logs/logs.dart';
import 'package:pi_hole_client/screens/logs/logs_filters_modal.dart';

import '../helpers.dart';

106 changes: 106 additions & 0 deletions test/widgets/logs/status_filters_modal_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pi_hole_client/screens/logs/status_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 StatusFiltersModal(
statusBarHeight: 24,
bottomNavBarHeight: 48,
statusSelected: [
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
],
window: false,
),
),
);

expect(find.byType(StatusFiltersModal), findsOneWidget);
expect(find.text('Logs status'), 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 StatusFiltersModal(
statusBarHeight: 24,
bottomNavBarHeight: 48,
statusSelected: [3, 4],
window: false,
),
),
);

expect(find.byType(StatusFiltersModal), findsOneWidget);
expect(find.text('Logs status'), 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();
},
);
},
);
}
Loading
Oops, something went wrong.