import 'package:flutter_test/flutter_test.dart'; import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; void main() { test('PhoneLoginRequest serializes phone login payload', () { const request = PhoneLoginRequest( phoneNumber: '01012345678', device: LoginDeviceInfo( platform: 'android', appVersion: '0.1.0', deviceName: 'Pixel 8', ), ); expect(request.toJson(), { 'phoneNumber': '01012345678', 'device': { 'platform': 'android', 'appVersion': '0.1.0', 'deviceName': 'Pixel 8', }, }); }); test('PhoneLoginResponse parses session token response', () { final response = PhoneLoginResponse.fromJson({ 'status': 'ok', 'token': 'baron-sso-session-token', 'expiresAt': '2026-07-02T12:00:00Z', 'user': { 'id': 'user-uuid', 'name': 'User One', 'phoneNumber': '+821012345678', 'tenantId': 'tenant-uuid', 'tenantName': 'Hanmac', 'tenantSlug': 'hanmac', 'department': 'Engineering', 'grade': 'Lead', 'position': 'Manager', 'jobTitle': 'Developer', }, }); expect(response.status, 'ok'); expect(response.token, 'baron-sso-session-token'); expect( response.expiresAt.toUtc().toIso8601String(), '2026-07-02T12:00:00.000Z', ); expect(response.user.tenantSlug, 'hanmac'); }); test('CurrentUser parses permissions and can map to employee', () { final user = CurrentUser.fromJson({ 'id': 'user-uuid', 'name': 'User One', 'phoneNumber': '+821012345678', 'email': 'user@example.com', 'tenantId': 'tenant-uuid', 'tenantName': 'Hanmac', 'tenantSlug': 'hanmac', 'department': 'Engineering', 'permissions': { 'directory': true, 'organization': true, 'favoritesSync': false, }, }); expect(user.permissions.directory, isTrue); expect(user.permissions.favoritesSync, isFalse); expect(user.toEmployee().department, 'Engineering'); }); }