결재 단계 편집 다이얼로그 구현
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:mocktail/mocktail.dart';
|
||||
|
||||
import 'package:superport_v2/core/common/models/paginated_result.dart';
|
||||
import 'package:superport_v2/features/approvals/domain/entities/approval.dart';
|
||||
import 'package:superport_v2/features/approvals/step/domain/entities/approval_step_input.dart';
|
||||
import 'package:superport_v2/features/approvals/step/domain/entities/approval_step_record.dart';
|
||||
import 'package:superport_v2/features/approvals/step/domain/repositories/approval_step_repository.dart';
|
||||
import 'package:superport_v2/features/approvals/step/presentation/controllers/approval_step_controller.dart';
|
||||
@@ -11,6 +12,12 @@ class _MockApprovalStepRepository extends Mock
|
||||
implements ApprovalStepRepository {}
|
||||
|
||||
void main() {
|
||||
setUpAll(() {
|
||||
registerFallbackValue(
|
||||
ApprovalStepInput(approvalId: 1, stepOrder: 1, approverId: 1),
|
||||
);
|
||||
});
|
||||
|
||||
late ApprovalStepController controller;
|
||||
late _MockApprovalStepRepository repository;
|
||||
|
||||
@@ -142,4 +149,76 @@ void main() {
|
||||
expect(detail, isNull);
|
||||
expect(controller.errorMessage, isNotNull);
|
||||
});
|
||||
|
||||
test('createStep 성공 시 생성된 레코드를 반환한다', () async {
|
||||
when(() => repository.create(any())).thenAnswer((_) async => sampleRecord);
|
||||
|
||||
when(
|
||||
() => repository.list(
|
||||
page: any(named: 'page'),
|
||||
pageSize: any(named: 'pageSize'),
|
||||
query: any(named: 'query'),
|
||||
statusId: any(named: 'statusId'),
|
||||
approverId: any(named: 'approverId'),
|
||||
approvalId: any(named: 'approvalId'),
|
||||
),
|
||||
).thenAnswer((_) async => createResult([sampleRecord]));
|
||||
|
||||
final result = await controller.createStep(
|
||||
ApprovalStepInput(approvalId: 10, stepOrder: 1, approverId: 21),
|
||||
);
|
||||
|
||||
expect(result, isNotNull);
|
||||
expect(controller.errorMessage, isNull);
|
||||
verify(() => repository.create(any())).called(1);
|
||||
});
|
||||
|
||||
test('createStep 실패 시 null을 반환하고 에러를 기록한다', () async {
|
||||
when(() => repository.create(any())).thenThrow(Exception('fail'));
|
||||
|
||||
final result = await controller.createStep(
|
||||
ApprovalStepInput(approvalId: 10, stepOrder: 1, approverId: 21),
|
||||
);
|
||||
|
||||
expect(result, isNull);
|
||||
expect(controller.errorMessage, isNotNull);
|
||||
});
|
||||
|
||||
test('updateStep 성공 시 수정된 레코드를 반환한다', () async {
|
||||
when(
|
||||
() => repository.update(any(), any()),
|
||||
).thenAnswer((_) async => sampleRecord);
|
||||
|
||||
when(
|
||||
() => repository.list(
|
||||
page: any(named: 'page'),
|
||||
pageSize: any(named: 'pageSize'),
|
||||
query: any(named: 'query'),
|
||||
statusId: any(named: 'statusId'),
|
||||
approverId: any(named: 'approverId'),
|
||||
approvalId: any(named: 'approvalId'),
|
||||
),
|
||||
).thenAnswer((_) async => createResult([sampleRecord]));
|
||||
|
||||
final result = await controller.updateStep(
|
||||
100,
|
||||
ApprovalStepInput(stepOrder: 2, approverId: 25, approvalId: 10),
|
||||
);
|
||||
|
||||
expect(result, isNotNull);
|
||||
expect(controller.errorMessage, isNull);
|
||||
verify(() => repository.update(100, any())).called(1);
|
||||
});
|
||||
|
||||
test('updateStep 실패 시 null을 반환한다', () async {
|
||||
when(() => repository.update(any(), any())).thenThrow(Exception('fail'));
|
||||
|
||||
final result = await controller.updateStep(
|
||||
100,
|
||||
ApprovalStepInput(stepOrder: 2, approverId: 25, approvalId: 10),
|
||||
);
|
||||
|
||||
expect(result, isNull);
|
||||
expect(controller.errorMessage, isNotNull);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user