mirror of https://github.com/flutter/samples.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.6 KiB
75 lines
2.6 KiB
import 'package:compass_app/domain/models/itinerary_config/itinerary_config.dart';
|
|
import 'package:compass_app/ui/auth/logout/view_models/logout_viewmodel.dart';
|
|
import 'package:compass_app/ui/auth/logout/widgets/logout_button.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:mocktail_image_network/mocktail_image_network.dart';
|
|
|
|
import '../../../testing/app.dart';
|
|
import '../../../testing/fakes/repositories/fake_auth_repository.dart';
|
|
import '../../../testing/fakes/repositories/fake_itinerary_config_repository.dart';
|
|
import '../../../testing/mocks.dart';
|
|
|
|
void main() {
|
|
group('LogoutButton test', () {
|
|
late MockGoRouter goRouter;
|
|
late FakeAuthRepository fakeAuthRepository;
|
|
late FakeItineraryConfigRepository fakeItineraryConfigRepository;
|
|
late LogoutViewModel viewModel;
|
|
|
|
setUp(() {
|
|
goRouter = MockGoRouter();
|
|
fakeAuthRepository = FakeAuthRepository();
|
|
// Setup a token, should be cleared after logout
|
|
fakeAuthRepository.token = 'TOKEN';
|
|
// Setup an ItineraryConfig with some data, should be cleared after logout
|
|
fakeItineraryConfigRepository = FakeItineraryConfigRepository(
|
|
itineraryConfig: const ItineraryConfig(continent: 'CONTINENT'));
|
|
viewModel = LogoutViewModel(
|
|
authRepository: fakeAuthRepository,
|
|
itineraryConfigRepository: fakeItineraryConfigRepository,
|
|
);
|
|
});
|
|
|
|
Future<void> loadScreen(WidgetTester tester) async {
|
|
await testApp(
|
|
tester,
|
|
LogoutButton(viewModel: viewModel),
|
|
goRouter: goRouter,
|
|
);
|
|
}
|
|
|
|
testWidgets('should load widget', (WidgetTester tester) async {
|
|
await mockNetworkImages(() async {
|
|
await loadScreen(tester);
|
|
expect(find.byType(LogoutButton), findsOneWidget);
|
|
});
|
|
});
|
|
|
|
testWidgets('should perform logout', (WidgetTester tester) async {
|
|
await mockNetworkImages(() async {
|
|
await loadScreen(tester);
|
|
|
|
// Repo should have a key
|
|
expect(fakeAuthRepository.token, 'TOKEN');
|
|
// Itinerary config should have data
|
|
expect(
|
|
fakeItineraryConfigRepository.itineraryConfig,
|
|
const ItineraryConfig(continent: 'CONTINENT'),
|
|
);
|
|
|
|
// // Perform logout
|
|
await tester.tap(find.byType(LogoutButton));
|
|
await tester.pumpAndSettle();
|
|
|
|
// Repo should have no key
|
|
expect(fakeAuthRepository.token, null);
|
|
// Itinerary config should be cleared
|
|
expect(
|
|
fakeItineraryConfigRepository.itineraryConfig,
|
|
const ItineraryConfig(),
|
|
);
|
|
});
|
|
});
|
|
});
|
|
}
|