-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added menu and placeholder screens - DC
- Loading branch information
1 parent
893bf12
commit fb62bf4
Showing
12 changed files
with
273 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import 'package:flutter/material.dart'; | ||
|
||
class SettingsPage extends StatelessWidget { | ||
const SettingsPage({super.key}); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Scaffold( | ||
appBar: AppBar( | ||
title: const Text('Settings'), | ||
), | ||
body: const Center( | ||
child: Text('Settings Page'), | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import 'package:flutter/material.dart'; | ||
|
||
class StatisticsPage extends StatelessWidget { | ||
const StatisticsPage({super.key}); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Scaffold( | ||
appBar: AppBar( | ||
title: const Text('Statistics'), | ||
), | ||
body: const Center( | ||
child: Text('Statistics Page'), | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:uchu/screens/settings_page.dart'; | ||
import 'package:uchu/screens/statistics_page.dart'; | ||
|
||
class NavigationService { | ||
Future<T?> pushSettingsPage<T>(BuildContext context) { | ||
return Navigator.push<T>( | ||
context, | ||
MaterialPageRoute( | ||
builder: (context) { | ||
return const SettingsPage(); | ||
}, | ||
), | ||
); | ||
} | ||
|
||
Future<T?> pushStatisticsPage<T>(BuildContext context) { | ||
return Navigator.push<T>( | ||
context, | ||
MaterialPageRoute( | ||
builder: (context) { | ||
return const StatisticsPage(); | ||
}, | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import 'package:flutter/material.dart'; | ||
import 'package:get_it/get_it.dart'; | ||
import 'package:uchu/services/navigation_service.dart'; | ||
import 'package:uchu/utilities/url_helper.dart'; | ||
|
||
class UchuDrawer extends StatelessWidget { | ||
const UchuDrawer({super.key}); | ||
|
||
@override | ||
Widget build(BuildContext context) { | ||
return Drawer( | ||
child: ListView.builder( | ||
itemBuilder: (context, index) { | ||
switch (index) { | ||
case 0: | ||
return const DrawerHeader(child: Text('Uchu')); | ||
case 1: | ||
return ListTile( | ||
title: const Text('Settings'), | ||
onTap: () => GetIt.instance | ||
.get<NavigationService>() | ||
.pushSettingsPage(context), | ||
); | ||
case 2: | ||
return ListTile( | ||
title: const Text('Statistics'), | ||
onTap: () => GetIt.instance | ||
.get<NavigationService>() | ||
.pushStatisticsPage(context), | ||
); | ||
case 3: | ||
return ListTile( | ||
title: const Text('Bug Report/Feature Request'), | ||
onTap: () => GetIt.instance | ||
.get<UrlHelper>() | ||
.launchUrl('https://github.com/ChopinDavid/uchu/issues'), | ||
); | ||
} | ||
}, | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
main() { | ||
test( | ||
'placeholder', | ||
() { | ||
expect(1 + 1, 2); | ||
}, | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
main() { | ||
test( | ||
'placeholder', | ||
() { | ||
expect(1 + 1, 2); | ||
}, | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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:get_it/get_it.dart'; | ||
import 'package:mocktail/mocktail.dart'; | ||
import 'package:uchu/services/navigation_service.dart'; | ||
import 'package:uchu/utilities/url_helper.dart'; | ||
import 'package:uchu/widgets/uchu_drawer.dart'; | ||
|
||
import '../../test_utils.dart'; | ||
import '../mocks.dart'; | ||
|
||
main() { | ||
late NavigationService mockNavigationService; | ||
late UrlHelper mockUrlHelper; | ||
|
||
setUpAll(TestUtils.registerFallbackValues); | ||
|
||
setUp(() async { | ||
await GetIt.instance.reset(); | ||
|
||
mockNavigationService = MockNavigationService(); | ||
mockUrlHelper = MockUrlHelper(); | ||
|
||
when(() => mockNavigationService.pushSettingsPage(any())).thenAnswer( | ||
(invocation) async {}, | ||
); | ||
|
||
when(() => mockNavigationService.pushStatisticsPage(any())).thenAnswer( | ||
(invocation) async {}, | ||
); | ||
|
||
when(() => mockUrlHelper.launchUrl(any())).thenAnswer( | ||
(invocation) async => true, | ||
); | ||
|
||
GetIt.instance.registerSingleton<NavigationService>(mockNavigationService); | ||
GetIt.instance.registerSingleton<UrlHelper>(mockUrlHelper); | ||
}); | ||
|
||
testWidgets( | ||
'Tapping "Settings" pushes the settings page', | ||
(widgetTester) async { | ||
await widgetTester.pumpWidget( | ||
const MaterialApp( | ||
home: UchuDrawer(), | ||
), | ||
); | ||
|
||
await widgetTester.pumpAndSettle(); | ||
|
||
await widgetTester.tap(find.text('Settings')); | ||
|
||
verify(() => mockNavigationService.pushSettingsPage(any())).called(1); | ||
}, | ||
); | ||
|
||
testWidgets( | ||
'Tapping "Statistics" pushes the statistics page', | ||
(widgetTester) async { | ||
await widgetTester.pumpWidget( | ||
const MaterialApp( | ||
home: UchuDrawer(), | ||
), | ||
); | ||
|
||
await widgetTester.pumpAndSettle(); | ||
|
||
await widgetTester.tap(find.text('Statistics')); | ||
|
||
verify(() => mockNavigationService.pushStatisticsPage(any())).called(1); | ||
}, | ||
); | ||
|
||
testWidgets( | ||
'Tapping "Bug Report/Feature Request" launches the Uchu GitHub issues page', | ||
(widgetTester) async { | ||
await widgetTester.pumpWidget( | ||
const MaterialApp( | ||
home: UchuDrawer(), | ||
), | ||
); | ||
|
||
await widgetTester.pumpAndSettle(); | ||
|
||
await widgetTester.tap(find.text('Bug Report/Feature Request')); | ||
|
||
verify(() => mockUrlHelper | ||
.launchUrl('https://github.com/ChopinDavid/uchu/issues')).called(1); | ||
}, | ||
); | ||
} |