test: complete account lifecycle hardening coverage
This commit is contained in:
parent
8e0e2d5f97
commit
4ac29ab44c
|
|
@ -183,6 +183,12 @@ class AppDatabase extends _$AppDatabase {
|
||||||
return changed == 1 || await getCloudOwnerUid(rideId) == normalizedUid;
|
return changed == 1 || await getCloudOwnerUid(rideId) == normalizedUid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<int> clearCloudOwnerUid(String uid) async {
|
||||||
|
if (uid.trim().isEmpty) return 0;
|
||||||
|
return (update(rides)..where((r) => r.cloudOwnerUid.equals(uid.trim())))
|
||||||
|
.write(const RidesCompanion(cloudOwnerUid: Value(null)));
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> endRide(int rideId, RidesCompanion data) async {
|
Future<void> endRide(int rideId, RidesCompanion data) async {
|
||||||
await (update(rides)..where((t) => t.id.equals(rideId))).write(data.copyWith(endTime: Value(DateTime.now())));
|
await (update(rides)..where((t) => t.id.equals(rideId))).write(data.copyWith(endTime: Value(DateTime.now())));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ import 'package:motorcycle_dash/services/auth/auth_providers.dart';
|
||||||
|
|
||||||
/// In-memory Mock AuthService for unit testing without live network / Firebase credentials
|
/// In-memory Mock AuthService for unit testing without live network / Firebase credentials
|
||||||
class FakeAuthService implements AuthService {
|
class FakeAuthService implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
final _stateController = StreamController<AuthState>.broadcast();
|
final _stateController = StreamController<AuthState>.broadcast();
|
||||||
AuthState _currentState = const AuthState.unauthenticated(isFirebaseConfigured: true);
|
AuthState _currentState = const AuthState.unauthenticated(isFirebaseConfigured: true);
|
||||||
bool _isConfigured = true;
|
bool _isConfigured = true;
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ import 'package:motorcycle_dash/services/sync/cloud_restore_service.dart';
|
||||||
import 'package:motorcycle_dash/services/sync/r2_download_service.dart';
|
import 'package:motorcycle_dash/services/sync/r2_download_service.dart';
|
||||||
|
|
||||||
class _TestAuthService implements AuthService {
|
class _TestAuthService implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
AuthUser? _user;
|
AuthUser? _user;
|
||||||
String? token = 'token';
|
String? token = 'token';
|
||||||
bool configured = true;
|
bool configured = true;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,11 @@ import 'package:motorcycle_dash/services/sync/sync_observer.dart';
|
||||||
import 'package:motorcycle_dash/features/rides/ride_state_machine.dart';
|
import 'package:motorcycle_dash/features/rides/ride_state_machine.dart';
|
||||||
|
|
||||||
class TestMockAuthService implements AuthService {
|
class TestMockAuthService implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
AuthUser? _user;
|
AuthUser? _user;
|
||||||
AuthState _state = const AuthState.unauthenticated();
|
AuthState _state = const AuthState.unauthenticated();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,11 @@ import 'package:motorcycle_dash/services/sync/sync_outbox.dart';
|
||||||
import 'package:motorcycle_dash/services/sync/sync_provider.dart';
|
import 'package:motorcycle_dash/services/sync/sync_provider.dart';
|
||||||
|
|
||||||
class MockAuthService implements AuthService {
|
class MockAuthService implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
AuthUser? _user;
|
AuthUser? _user;
|
||||||
AuthState _state = const AuthState.unauthenticated();
|
AuthState _state = const AuthState.unauthenticated();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,11 @@ import 'package:motorcycle_dash/services/sync/sync_models.dart';
|
||||||
import 'package:motorcycle_dash/services/sync/firebase_sync_provider.dart';
|
import 'package:motorcycle_dash/services/sync/firebase_sync_provider.dart';
|
||||||
|
|
||||||
class _Auth implements AuthService {
|
class _Auth implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
AuthUser? user;
|
AuthUser? user;
|
||||||
@override bool get isConfigured => true;
|
@override bool get isConfigured => true;
|
||||||
@override AuthUser? get currentUser => user;
|
@override AuthUser? get currentUser => user;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,11 @@ import 'package:motorcycle_dash/services/sync/sync_manager.dart';
|
||||||
import 'package:motorcycle_dash/services/sync/sync_provider.dart';
|
import 'package:motorcycle_dash/services/sync/sync_provider.dart';
|
||||||
|
|
||||||
class MockSecurityAuthService implements AuthService {
|
class MockSecurityAuthService implements AuthService {
|
||||||
|
@override bool get isEmailVerified => false;
|
||||||
|
@override Future<void> sendEmailVerification() async {}
|
||||||
|
@override Future<void> reloadCurrentUser() async {}
|
||||||
|
@override Future<void> reauthenticate({String? password}) async {}
|
||||||
|
@override Future<void> deleteCurrentUser() async {}
|
||||||
AuthUser? _user;
|
AuthUser? _user;
|
||||||
String? _token;
|
String? _token;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue