Added Type, Category and Signatories on task

This commit is contained in:
2026-02-21 14:33:22 +08:00
parent d32449d096
commit 8d31a629ac
14 changed files with 1178 additions and 48 deletions
+8 -16
View File
@@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:tasq/models/notification_item.dart';
import 'package:tasq/models/office.dart';
@@ -13,12 +12,9 @@ import 'package:tasq/models/team.dart';
import 'package:tasq/models/team_member.dart';
import 'package:tasq/providers/notifications_provider.dart';
import 'package:tasq/providers/profile_provider.dart';
import 'package:tasq/providers/tasks_provider.dart';
import 'package:tasq/providers/tickets_provider.dart';
import 'package:tasq/providers/typing_provider.dart';
import 'package:tasq/providers/user_offices_provider.dart';
import 'package:tasq/providers/supabase_provider.dart';
import 'package:tasq/screens/admin/offices_screen.dart';
import 'package:tasq/screens/admin/user_management_screen.dart';
import 'package:tasq/screens/tasks/tasks_list_screen.dart';
@@ -28,6 +24,8 @@ import 'package:tasq/screens/teams/teams_screen.dart';
import 'package:tasq/providers/teams_provider.dart';
import 'package:tasq/widgets/app_shell.dart';
// (Noop typing controller removed — use provider overrides when needed.)
// Test double for NotificationsController so widget tests don't initialize
// a real Supabase client.
class FakeNotificationsController implements NotificationsController {
@@ -50,10 +48,6 @@ class FakeNotificationsController implements NotificationsController {
Future<void> markReadForTask(String taskId) async {}
}
SupabaseClient _fakeSupabaseClient() {
return SupabaseClient('http://localhost', 'test-key');
}
void main() {
final now = DateTime(2026, 2, 10, 12, 0, 0);
final office = Office(id: 'office-1', name: 'HQ');
@@ -84,6 +78,9 @@ void main() {
creatorId: 'user-2',
startedAt: null,
completedAt: null,
requestType: null,
requestTypeOther: null,
requestCategory: null,
);
final notification = NotificationItem(
id: 'N-1',
@@ -99,7 +96,6 @@ void main() {
List<Override> baseOverrides() {
return [
supabaseClientProvider.overrideWithValue(_fakeSupabaseClient()),
currentProfileProvider.overrideWith((ref) => Stream.value(admin)),
profilesProvider.overrideWith((ref) => Stream.value([admin, tech])),
@@ -107,22 +103,17 @@ void main() {
notificationsProvider.overrideWith((ref) => Stream.value([notification])),
ticketsProvider.overrideWith((ref) => Stream.value([ticket])),
tasksProvider.overrideWith((ref) => Stream.value([task])),
tasksControllerProvider.overrideWith((ref) => TasksController(null)),
userOfficesProvider.overrideWith(
(ref) =>
Stream.value([UserOffice(userId: 'user-1', officeId: 'office-1')]),
),
ticketMessagesAllProvider.overrideWith((ref) => const Stream.empty()),
ticketMessagesProvider.overrideWith((ref, id) => const Stream.empty()),
isAdminProvider.overrideWith((ref) => true),
notificationsControllerProvider.overrideWithValue(
FakeNotificationsController(),
),
typingIndicatorProvider.overrideWithProvider(
AutoDisposeStateNotifierProvider.family<
TypingIndicatorController,
TypingIndicatorState,
String
>((ref, id) => TypingIndicatorController(_fakeSupabaseClient(), id)),
),
];
}
@@ -135,6 +126,7 @@ void main() {
(ref) => Stream.value(const <UserOffice>[]),
),
ticketMessagesAllProvider.overrideWith((ref) => const Stream.empty()),
ticketMessagesProvider.overrideWith((ref, id) => const Stream.empty()),
isAdminProvider.overrideWith((ref) => true),
];
}