결재 및 마스터 모듈을 v4 API 계약에 맞게 조정
This commit is contained in:
@@ -22,6 +22,52 @@ void main() {
|
||||
repository = ApprovalRepositoryRemote(apiClient: apiClient);
|
||||
});
|
||||
|
||||
test('list는 신규 필터 파라미터를 전달한다', () async {
|
||||
const path = '/api/v1/approvals';
|
||||
when(
|
||||
() => apiClient.get<Map<String, dynamic>>(
|
||||
path,
|
||||
query: any(named: 'query'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).thenAnswer(
|
||||
(_) async => Response<Map<String, dynamic>>(
|
||||
data: {'items': const [], 'page': 1, 'page_size': 20, 'total': 0},
|
||||
statusCode: 200,
|
||||
requestOptions: RequestOptions(path: path),
|
||||
),
|
||||
);
|
||||
|
||||
await repository.list(
|
||||
page: 2,
|
||||
pageSize: 50,
|
||||
transactionId: 10,
|
||||
approvalStatusId: 5,
|
||||
requestedById: 7,
|
||||
includeSteps: true,
|
||||
includeHistories: true,
|
||||
);
|
||||
|
||||
final captured = verify(
|
||||
() => apiClient.get<Map<String, dynamic>>(
|
||||
captureAny(),
|
||||
query: captureAny(named: 'query'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).captured;
|
||||
|
||||
expect(captured.first, equals(path));
|
||||
final query = captured[1] as Map<String, dynamic>;
|
||||
expect(query['page'], 2);
|
||||
expect(query['page_size'], 50);
|
||||
expect(query['transaction_id'], 10);
|
||||
expect(query['approval_status_id'], 5);
|
||||
expect(query['requested_by_id'], 7);
|
||||
expect(query['include'], 'steps,histories');
|
||||
});
|
||||
|
||||
Map<String, dynamic> buildStep({
|
||||
required int id,
|
||||
required int order,
|
||||
@@ -147,4 +193,52 @@ void main() {
|
||||
expect(result.histories.length, 2);
|
||||
expect(result.histories.last.id, 91001);
|
||||
});
|
||||
|
||||
test('fetchDetail은 include 파라미터를 steps,histories로 조합한다', () async {
|
||||
const path = '/api/v1/approvals/1';
|
||||
when(
|
||||
() => apiClient.get<Map<String, dynamic>>(
|
||||
path,
|
||||
query: any(named: 'query'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).thenAnswer(
|
||||
(_) async => Response<Map<String, dynamic>>(
|
||||
data: {
|
||||
'data': {
|
||||
'id': 1,
|
||||
'approval_no': 'AP-1',
|
||||
'status': {'id': 1, 'status_name': '대기'},
|
||||
'current_step': {'id': 2, 'step_order': 1},
|
||||
'requester': {
|
||||
'id': 3,
|
||||
'employee_no': 'EMP-3',
|
||||
'employee_name': '신청자',
|
||||
},
|
||||
'requested_at': '2024-01-01T00:00:00Z',
|
||||
'steps': const [],
|
||||
'histories': const [],
|
||||
},
|
||||
},
|
||||
statusCode: 200,
|
||||
requestOptions: RequestOptions(path: path),
|
||||
),
|
||||
);
|
||||
|
||||
await repository.fetchDetail(1, includeSteps: true, includeHistories: true);
|
||||
|
||||
final query =
|
||||
verify(
|
||||
() => apiClient.get<Map<String, dynamic>>(
|
||||
any(),
|
||||
query: captureAny(named: 'query'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).captured.first
|
||||
as Map<String, dynamic>;
|
||||
|
||||
expect(query['include'], 'steps,histories');
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user