결재 API 계약 보완 및 테스트 정리
This commit is contained in:
@@ -68,6 +68,104 @@ void main() {
|
||||
expect(query['include'], 'steps,histories');
|
||||
});
|
||||
|
||||
test('create는 필수 필드를 전달한다', () async {
|
||||
const path = '/api/v1/approvals';
|
||||
when(
|
||||
() => apiClient.post<Map<String, dynamic>>(
|
||||
path,
|
||||
data: any(named: 'data'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).thenAnswer(
|
||||
(_) async => Response<Map<String, dynamic>>(
|
||||
data: {
|
||||
'data': {
|
||||
'id': 5001,
|
||||
'approval_no': 'APP-2025-0001',
|
||||
'transaction_id': 9001,
|
||||
},
|
||||
},
|
||||
statusCode: 201,
|
||||
requestOptions: RequestOptions(path: path),
|
||||
),
|
||||
);
|
||||
|
||||
final input = ApprovalCreateInput(
|
||||
transactionId: 9001,
|
||||
approvalNo: 'APP-2025-0001',
|
||||
approvalStatusId: 1,
|
||||
requestedById: 7,
|
||||
note: ' 신규 결재 ',
|
||||
);
|
||||
|
||||
await repository.create(input);
|
||||
|
||||
final captured = verify(
|
||||
() => apiClient.post<Map<String, dynamic>>(
|
||||
captureAny(),
|
||||
data: captureAny(named: 'data'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).captured;
|
||||
|
||||
expect(captured.first, equals(path));
|
||||
final payload = captured[1] as Map<String, dynamic>;
|
||||
expect(payload['transaction_id'], 9001);
|
||||
expect(payload['approval_no'], 'APP-2025-0001');
|
||||
expect(payload['approval_status_id'], 1);
|
||||
expect(payload['requested_by_id'], 7);
|
||||
expect(payload['note'], '신규 결재');
|
||||
});
|
||||
|
||||
test('update는 id를 포함해 패치를 수행한다', () async {
|
||||
const path = '/api/v1/approvals/5001';
|
||||
when(
|
||||
() => apiClient.patch<Map<String, dynamic>>(
|
||||
path,
|
||||
data: any(named: 'data'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).thenAnswer(
|
||||
(_) async => Response<Map<String, dynamic>>(
|
||||
data: {
|
||||
'data': {
|
||||
'id': 5001,
|
||||
'approval_no': 'APP-2025-0001',
|
||||
'approval_status': {'id': 2, 'status_name': '진행중'},
|
||||
},
|
||||
},
|
||||
statusCode: 200,
|
||||
requestOptions: RequestOptions(path: path),
|
||||
),
|
||||
);
|
||||
|
||||
final input = ApprovalUpdateInput(
|
||||
id: 5001,
|
||||
approvalStatusId: 2,
|
||||
note: '보류',
|
||||
);
|
||||
|
||||
await repository.update(input);
|
||||
|
||||
final captured = verify(
|
||||
() => apiClient.patch<Map<String, dynamic>>(
|
||||
captureAny(),
|
||||
data: captureAny(named: 'data'),
|
||||
options: any(named: 'options'),
|
||||
cancelToken: any(named: 'cancelToken'),
|
||||
),
|
||||
).captured;
|
||||
|
||||
expect(captured.first, equals(path));
|
||||
final payload = captured[1] as Map<String, dynamic>;
|
||||
expect(payload['id'], 5001);
|
||||
expect(payload['approval_status_id'], 2);
|
||||
expect(payload['note'], '보류');
|
||||
});
|
||||
|
||||
Map<String, dynamic> buildStep({
|
||||
required int id,
|
||||
required int order,
|
||||
|
||||
Reference in New Issue
Block a user