Files
tdc114plus/app/test/directory/directory_api_client_test.dart
T

73 lines
2.3 KiB
Dart

import 'dart:convert';
import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:http/testing.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart';
import 'package:tdc114plus/src/features/auth/domain/auth_models.dart';
import 'package:tdc114plus/src/features/directory/data/directory_api_client.dart';
void main() {
setUp(() async {
SharedPreferences.setMockInitialValues({});
await const AuthSessionStore().save(
PhoneLoginResponse(
status: 'ok',
token: 'session-token',
expiresAt: DateTime.parse('2026-07-02T12:00:00Z'),
user: const LoginUser(
id: 'user-uuid',
name: 'User One',
phoneNumber: '+821012345678',
tenantId: 'tenant-uuid',
tenantName: 'Hanmac',
tenantSlug: 'hanmac',
),
),
);
});
test('lists employees with bearer token and query filters', () async {
final client = DirectoryApiClient(
httpClient: MockClient((request) async {
expect(request.headers['authorization'], 'Bearer session-token');
expect(request.url.path, '/api/v1/tdc114plus/directory/employees');
expect(request.url.queryParameters['q'], 'kim');
expect(request.url.queryParameters['tenantSlug'], 'hanmac');
return http.Response(
jsonEncode({
'items': [
{
'id': 'user-uuid',
'name': 'User One',
'phoneNumber': '+821012345678',
'phoneDisplay': '010-1234-5678',
'tenantId': 'tenant-uuid',
'tenantName': 'Hanmac',
'tenantSlug': 'hanmac',
'status': 'active',
},
],
'limit': 50,
'offset': 0,
'total': 1,
'nextCursor': '',
}),
200,
);
}),
baseUri: Uri.parse('https://sso.example.test'),
sessionStore: const AuthSessionStore(),
);
final response = await client.listEmployees(
query: 'kim',
tenantSlug: 'hanmac',
);
expect(response.total, 1);
expect(response.items.single.phoneDisplay, '010-1234-5678');
});
}