Skip to content

Commit

Permalink
added subnet and ping tests
Browse files Browse the repository at this point in the history
  • Loading branch information
git-elliot committed Jan 18, 2025
1 parent 0c11a04 commit 4167392
Show file tree
Hide file tree
Showing 9 changed files with 273 additions and 21 deletions.
4 changes: 2 additions & 2 deletions integration_test/app_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:vernet/ui/adaptive/adaptive_list.dart';
import 'dns/lookup/lookup_test.dart' as lookup_test;
import 'dns/reverse_lookup/reverse_lookup.dart' as reverse_lookup;
import 'network_troubleshooting_test/ping_test/ping_test.dart' as ping_test;
import 'settings/dark_theme_test.dart' as dark_theme_test;
import 'settings/settings_test.dart' as settings_test;
import 'wifi_test/wifi_test_runner.dart' as wifi_test_runner;

void main() {
Expand All @@ -26,5 +26,5 @@ void main() {
ping_test.main();
lookup_test.main();
reverse_lookup.main();
dark_theme_test.main();
settings_test.main();
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:network_tools_flutter/network_tools_flutter.dart';
import 'package:vernet/helper/app_settings.dart';
import 'package:vernet/main.dart';
import 'package:vernet/ui/adaptive/adaptive_list.dart';
import 'package:vernet/values/keys.dart';

void main() {
final appSettings = AppSettings.instance;
group('Ping integration test', () {
testWidgets('tap on the ping button, verify ping ended', (tester) async {
await appSettings.load();
// Load app widget.
await tester.pumpWidget(const MyApp(true));
await tester.pumpAndSettle();
Expand Down Expand Up @@ -40,7 +43,10 @@ void main() {

expect(find.text('Sent: 5'), findsOneWidget);
expect(find.text('Received : 5'), findsOneWidget);
expect(find.byType(AdaptiveListTile), findsAtLeastNWidgets(5));
expect(
find.byType(AdaptiveListTile),
findsAtLeastNWidgets(appSettings.pingCount),
);
});
});
}
20 changes: 5 additions & 15 deletions integration_test/settings/dark_theme_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import 'package:vernet/main.dart';
import 'package:vernet/providers/dark_theme_provider.dart';
import 'package:vernet/values/keys.dart';

import 'test_utils.dart';

void main() {
group('Test if theme preference is set properly', () {
testWidgets('dark theme test', (tester) async {
Expand All @@ -12,10 +14,7 @@ void main() {

await tester.pumpWidget(const MyApp(true));

final settingsButton = find.byKey(WidgetKey.settingsButton.key);

await tester.tap(settingsButton);
await tester.pumpAndSettle();
await TestUtils.tapSettingsButton(tester, find);

final changeThemeButton = find.byKey(WidgetKey.changeThemeTile.key);
await tester.tap(changeThemeButton);
Expand All @@ -26,7 +25,6 @@ void main() {
await tester.tap(darkThemeTileButton);
await tester.pumpAndSettle();

await tester.pumpAndSettle();
expect(await darkThemePreference.getTheme(), ThemePreference.dark);
});

Expand All @@ -36,10 +34,7 @@ void main() {

await tester.pumpWidget(const MyApp(true));

final settingsButton = find.byKey(WidgetKey.settingsButton.key);

await tester.tap(settingsButton);
await tester.pumpAndSettle();
await TestUtils.tapSettingsButton(tester, find);

final changeThemeButton = find.byKey(WidgetKey.changeThemeTile.key);
await tester.tap(changeThemeButton);
Expand All @@ -50,7 +45,6 @@ void main() {
await tester.tap(darkThemeTileButton);
await tester.pumpAndSettle();

await tester.pumpAndSettle();
expect(await darkThemePreference.getTheme(), ThemePreference.light);
});

Expand All @@ -60,10 +54,7 @@ void main() {

await tester.pumpWidget(const MyApp(true));

final settingsButton = find.byKey(WidgetKey.settingsButton.key);

await tester.tap(settingsButton);
await tester.pumpAndSettle();
await TestUtils.tapSettingsButton(tester, find);

final changeThemeButton = find.byKey(WidgetKey.changeThemeTile.key);
await tester.tap(changeThemeButton);
Expand All @@ -74,7 +65,6 @@ void main() {
await tester.tap(darkThemeTileButton);
await tester.pumpAndSettle();

await tester.pumpAndSettle();
expect(await darkThemePreference.getTheme(), ThemePreference.system);
});
});
Expand Down
7 changes: 7 additions & 0 deletions integration_test/settings/settings_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'dark_theme_test.dart' as dark_theme_test;
import 'subnet_tests.dart' as subnet_test;

void main() {
dark_theme_test.main();
subnet_test.main();
}
178 changes: 178 additions & 0 deletions integration_test/settings/subnet_tests.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:vernet/helper/app_settings.dart';
import 'package:vernet/main.dart';
import 'package:vernet/values/keys.dart';

import 'test_utils.dart';

void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
final appSettings = AppSettings.instance;
group('subnet tests', () {
testWidgets('set custom subnet test', (tester) async {
await appSettings.load();

await tester.pumpWidget(const MyApp(true));

await TestUtils.tapSettingsButton(tester, find);

await TestUtils.scrollUntilVisibleByWidgetKey(
WidgetKey.customSubnetTile,
tester,
find,
200.0,
);

await TestUtils.tapByWidgetKey(WidgetKey.customSubnetTile, tester, find);

await TestUtils.enterTextByKey(
WidgetKey.settingsTextField,
'192.168.1.0',
tester,
find,
);

await TestUtils.tapByWidgetKey(
WidgetKey.settingsSubmitButton,
tester,
find,
);
await appSettings.load();

expect(appSettings.customSubnet, '192.168.1.0');
});

testWidgets('First subnet test', (tester) async {
await appSettings.load();

await tester.pumpWidget(const MyApp(true));

await TestUtils.tapSettingsButton(tester, find);

await TestUtils.scrollUntilVisibleByWidgetKey(
WidgetKey.firstSubnetTile,
tester,
find,
200.0,
);

await TestUtils.tapByWidgetKey(WidgetKey.firstSubnetTile, tester, find);

await TestUtils.enterTextByKey(
WidgetKey.settingsTextField,
'10',
tester,
find,
);

await TestUtils.tapByWidgetKey(
WidgetKey.settingsSubmitButton,
tester,
find,
);
await appSettings.load();

expect(appSettings.firstSubnet, 10);
});

testWidgets('Last subnet test', (tester) async {
await appSettings.load();

await tester.pumpWidget(const MyApp(true));

await TestUtils.tapSettingsButton(tester, find);

await TestUtils.scrollUntilVisibleByWidgetKey(
WidgetKey.lastSubnetTile,
tester,
find,
200.0,
);

await TestUtils.tapByWidgetKey(WidgetKey.lastSubnetTile, tester, find);

await TestUtils.enterTextByKey(
WidgetKey.settingsTextField,
'250',
tester,
find,
);

await TestUtils.tapByWidgetKey(
WidgetKey.settingsSubmitButton,
tester,
find,
);
await appSettings.load();

expect(appSettings.lastSubnet, 250);
});

testWidgets('Socket timeout test', (tester) async {
await appSettings.load();

await tester.pumpWidget(const MyApp(true));

await TestUtils.tapSettingsButton(tester, find);

await TestUtils.scrollUntilVisibleByWidgetKey(
WidgetKey.socketTimeoutTile,
tester,
find,
200.0,
);

await TestUtils.tapByWidgetKey(WidgetKey.socketTimeoutTile, tester, find);

await TestUtils.enterTextByKey(
WidgetKey.settingsTextField,
'250',
tester,
find,
);

await TestUtils.tapByWidgetKey(
WidgetKey.settingsSubmitButton,
tester,
find,
);
await appSettings.load();

expect(appSettings.socketTimeout, 250);
});

testWidgets('Ping count test', (tester) async {
await appSettings.load();

await tester.pumpWidget(const MyApp(true));

await TestUtils.tapSettingsButton(tester, find);

await TestUtils.scrollUntilVisibleByWidgetKey(
WidgetKey.pingCountTile,
tester,
find,
200.0,
);

await TestUtils.tapByWidgetKey(WidgetKey.pingCountTile, tester, find);

await TestUtils.enterTextByKey(
WidgetKey.settingsTextField,
'6',
tester,
find,
);

await TestUtils.tapByWidgetKey(
WidgetKey.settingsSubmitButton,
tester,
find,
);
await appSettings.load();

expect(appSettings.pingCount, 6);
});
});
}
57 changes: 57 additions & 0 deletions integration_test/settings/test_utils.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:vernet/values/keys.dart';

class TestUtils {
static Future<void> tapSettingsButton(
WidgetTester tester,
CommonFinders find,
) async {
await tapByWidgetKey(WidgetKey.settingsButton, tester, find);
}

static Future<void> tapByText(
String text,
WidgetTester tester,
CommonFinders find,
) async {
final widget = find.text(text);
await tester.tap(widget);
await tester.pumpAndSettle();
}

static Future<void> enterTextByKey(
WidgetKey widgetKey,
String text,
WidgetTester tester,
CommonFinders find,
) async {
final textField = find.byKey(widgetKey.key);
await tester.enterText(textField, text);
await tester.pumpAndSettle();
}

static Future<void> tapByWidgetKey(
WidgetKey widgetKey,
WidgetTester tester,
CommonFinders find,
) async {
final widget = find.byKey(widgetKey.key);
await tester.tap(widget);
await tester.pumpAndSettle();
}

static Future<void> scrollUntilVisibleByWidgetKey(
WidgetKey widgetKey,
WidgetTester tester,
CommonFinders find,
double scrollDistance,
) async {
final widget = find.byKey(widgetKey.key);
await tester.scrollUntilVisible(
widget,
scrollDistance,
scrollable: find.byType(Scrollable),
);
}
}
5 changes: 5 additions & 0 deletions lib/pages/settings_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class _SettingsPageState extends State<SettingsPage> {
),
Card(
child: AdaptiveListTile(
key: WidgetKey.firstSubnetTile.key,
title: const Text(StringValue.firstSubnet),
subtitle: const Text(StringValue.firstSubnetDesc),
trailing: Text(
Expand All @@ -96,6 +97,7 @@ class _SettingsPageState extends State<SettingsPage> {
),
Card(
child: AdaptiveListTile(
key: WidgetKey.lastSubnetTile.key,
title: const Text(StringValue.lastSubnet),
subtitle: const Text(StringValue.lastSubnetDesc),
trailing: Text(
Expand All @@ -117,6 +119,7 @@ class _SettingsPageState extends State<SettingsPage> {
),
Card(
child: AdaptiveListTile(
key: WidgetKey.socketTimeoutTile.key,
title: const Text(StringValue.socketTimeout),
subtitle: const Text(StringValue.socketTimeoutdesc),
trailing: Text(
Expand All @@ -138,6 +141,7 @@ class _SettingsPageState extends State<SettingsPage> {
),
Card(
child: AdaptiveListTile(
key: WidgetKey.pingCountTile.key,
title: const Text(StringValue.pingCount),
subtitle: const Text(StringValue.pingCountDesc),
trailing: Text(
Expand All @@ -159,6 +163,7 @@ class _SettingsPageState extends State<SettingsPage> {
),
Card(
child: AdaptiveListTile(
key: WidgetKey.customSubnetTile.key,
title: const Text(StringValue.customSubnet),
subtitle: const Text(StringValue.customSubnetDesc),
trailing: Text(
Expand Down
Loading

0 comments on commit 4167392

Please sign in to comment.