Test Cases

This commit is contained in:
2026-04-11 07:40:49 +08:00
parent f223d1f958
commit 7d8851a94a
14 changed files with 2171 additions and 92 deletions
+18 -4
View File
@@ -5,6 +5,7 @@ import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:tasq/models/office.dart';
import 'package:tasq/models/profile.dart';
import 'package:tasq/models/ticket_message.dart';
import 'package:tasq/models/user_office.dart';
import 'package:tasq/providers/profile_provider.dart';
@@ -15,7 +16,8 @@ import 'package:tasq/screens/admin/user_management_screen.dart';
class _FakeAdminController extends AdminUserController {
_FakeAdminController()
: super(SupabaseClient('http://localhost', 'test-key'));
: super(SupabaseClient('http://localhost', 'test-key',
authOptions: const AuthClientOptions(autoRefreshToken: false)));
String? lastSetPasswordUserId;
String? lastSetPasswordValue;
@@ -48,7 +50,7 @@ void main() {
ProviderScope buildApp({required List<Override> overrides}) {
return ProviderScope(
overrides: overrides,
child: const MaterialApp(home: UserManagementScreen()),
child: const MaterialApp(home: Scaffold(body: UserManagementScreen())),
);
}
@@ -61,6 +63,8 @@ void main() {
});
testWidgets('Edit dialog pre-fills fields and shows actions', (tester) async {
await tester.binding.setSurfaceSize(const Size(1280, 900));
addTearDown(() async => await tester.binding.setSurfaceSize(null));
await tester.pumpWidget(
buildApp(
overrides: [
@@ -72,7 +76,7 @@ void main() {
UserOffice(userId: 'user-1', officeId: 'office-1'),
]),
),
ticketMessagesAllProvider.overrideWith((ref) => const Stream.empty()),
ticketMessagesAllProvider.overrideWith((ref) => Stream.value(const <TicketMessage>[])),
isAdminProvider.overrideWith((ref) => true),
// Provide an AdminUserStatus so the dialog can show email/status immediately.
adminUserStatusProvider.overrideWithProvider(
@@ -89,6 +93,10 @@ void main() {
await tester.pump();
await tester.pump(const Duration(milliseconds: 16));
for (var i = 0; i < 20; i++) {
if (find.text('Alice Admin').evaluate().isNotEmpty) break;
await tester.pump(const Duration(milliseconds: 50));
}
expect(find.text('Alice Admin'), findsOneWidget);
@@ -138,6 +146,8 @@ void main() {
testWidgets('Reset password and lock call admin controller', (tester) async {
final fake = _FakeAdminController();
await tester.binding.setSurfaceSize(const Size(1280, 900));
addTearDown(() async => await tester.binding.setSurfaceSize(null));
await tester.pumpWidget(
buildApp(
overrides: [
@@ -149,7 +159,7 @@ void main() {
UserOffice(userId: 'user-1', officeId: 'office-1'),
]),
),
ticketMessagesAllProvider.overrideWith((ref) => const Stream.empty()),
ticketMessagesAllProvider.overrideWith((ref) => Stream.value(const <TicketMessage>[])),
isAdminProvider.overrideWith((ref) => true),
adminUserStatusProvider.overrideWithProvider(
FutureProvider.autoDispose.family<AdminUserStatus, String>(
@@ -166,6 +176,10 @@ void main() {
await tester.pump();
await tester.pump(const Duration(milliseconds: 16));
for (var i = 0; i < 20; i++) {
if (find.text('Alice Admin').evaluate().isNotEmpty) break;
await tester.pump(const Duration(milliseconds: 50));
}
// Open edit dialog (again)
await tester.tap(find.text('Alice Admin'));