From 4ded04c4a7e43831f2a9ef0b30f343a556396ece Mon Sep 17 00:00:00 2001 From: npub1tquskdu6yc4h8l7xxtceculxw600grekeq0xg2ukqfrwl7vrzg3quz3gmp <58390b379a262b73ffc632f19c73e6769ef40f36c81e642b960246eff9831222@buzz.block.builderlab.xyz> Date: Mon, 3 Aug 2026 21:15:16 -0700 Subject: [PATCH] test(mobile): cover authenticated age gate Co-authored-by: Tom Brow Signed-off-by: Tom Brow --- .../features/age_gate/age_gate_app_test.dart | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/mobile/test/features/age_gate/age_gate_app_test.dart b/mobile/test/features/age_gate/age_gate_app_test.dart index bbbb9567c..401bb6266 100644 --- a/mobile/test/features/age_gate/age_gate_app_test.dart +++ b/mobile/test/features/age_gate/age_gate_app_test.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:buzz/app.dart'; import 'package:buzz/features/age_gate/age_restriction_page.dart'; import 'package:buzz/features/age_gate/age_signal_provider.dart'; +import 'package:buzz/features/home/home_page.dart'; import 'package:buzz/shared/auth/auth.dart'; import 'package:buzz/shared/theme/theme_provider.dart'; import 'package:flutter/material.dart'; @@ -18,6 +19,26 @@ void main() { .setMockMethodCallHandler(ageSignalChannel, null); }); + testWidgets('blocks authenticated app content', (tester) async { + SharedPreferences.setMockInitialValues({}); + final prefs = await SharedPreferences.getInstance(); + + await tester.pumpWidget( + ProviderScope( + overrides: [ + authProvider.overrideWith(() => _AuthenticatedAuthNotifier()), + ageSignalProvider.overrideWith(() => _BlockingAgeSignalNotifier()), + savedPrefsProvider.overrideWithValue(prefs), + ], + child: const App(), + ), + ); + await tester.pump(); + + expect(find.byType(AgeRestrictionPage), findsOneWidget); + expect(find.byType(HomePage), findsNothing); + }); + testWidgets('requests after the first frame and gates pushed routes', ( tester, ) async { @@ -63,6 +84,18 @@ void main() { }); } +class _AuthenticatedAuthNotifier extends AuthNotifier { + @override + Future build() async { + return const AuthState(status: AuthStatus.authenticated); + } +} + +class _BlockingAgeSignalNotifier extends AgeSignalNotifier { + @override + bool build() => true; +} + class _FakeAuthNotifier extends AuthNotifier { @override Future build() async {