Skip to content

Commit 7a24b4c

Browse files
committed
feat: Buat use case endpoint deleteTrackUser
Sekalian dengan unit test-nya.
1 parent 02ad9b3 commit 7a24b4c

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import 'package:dipantau_desktop_client/core/error/failure.dart';
2+
import 'package:dipantau_desktop_client/core/usecase/usecase.dart';
3+
import 'package:dipantau_desktop_client/feature/data/model/general/general_response.dart';
4+
import 'package:dipantau_desktop_client/feature/domain/repository/track/track_repository.dart';
5+
import 'package:equatable/equatable.dart';
6+
7+
class DeleteTrackUser implements UseCaseRecords<GeneralResponse?, ParamsDeleteTrackUser> {
8+
final TrackRepository repository;
9+
10+
DeleteTrackUser({required this.repository});
11+
12+
@override
13+
Future<({Failure? failure, GeneralResponse? response})> call(ParamsDeleteTrackUser params) {
14+
return repository.deleteTrackUser(params.trackId);
15+
}
16+
}
17+
18+
class ParamsDeleteTrackUser extends Equatable {
19+
final int trackId;
20+
21+
ParamsDeleteTrackUser({required this.trackId});
22+
23+
@override
24+
List<Object?> get props => [
25+
trackId,
26+
];
27+
28+
@override
29+
String toString() {
30+
return 'ParamsDeleteTrackUser{trackId: $trackId}';
31+
}
32+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import 'dart:convert';
2+
3+
import 'package:dipantau_desktop_client/feature/data/model/general/general_response.dart';
4+
import 'package:dipantau_desktop_client/feature/domain/usecase/delete_track_user/delete_track_user.dart';
5+
import 'package:flutter_test/flutter_test.dart';
6+
import 'package:mockito/mockito.dart';
7+
8+
import '../../../../fixture/fixture_reader.dart';
9+
import '../../../../helper/mock_helper.mocks.dart';
10+
11+
void main() {
12+
late DeleteTrackUser useCase;
13+
late MockTrackRepository mockRepository;
14+
15+
setUp(() {
16+
mockRepository = MockTrackRepository();
17+
useCase = DeleteTrackUser(repository: mockRepository);
18+
});
19+
20+
const trackId = 1;
21+
final tParams = ParamsDeleteTrackUser(trackId: trackId);
22+
23+
test(
24+
'pastikan objek repository berhasil menerima respon sukses atau gagal dari endpoint',
25+
() async {
26+
// arrange
27+
final tResponse = GeneralResponse.fromJson(
28+
json.decode(
29+
fixture('general_response.json'),
30+
),
31+
);
32+
final tResult = (failure: null, response: tResponse);
33+
when(mockRepository.deleteTrackUser(any)).thenAnswer((_) async => tResult);
34+
35+
// act
36+
final result = await useCase(tParams);
37+
38+
// assert
39+
expect(result, tResult);
40+
verify(mockRepository.deleteTrackUser(trackId));
41+
verifyNoMoreInteractions(mockRepository);
42+
},
43+
);
44+
45+
test(
46+
'pastikan output dari nilai props',
47+
() async {
48+
// assert
49+
expect(
50+
tParams.props,
51+
[
52+
tParams.trackId,
53+
],
54+
);
55+
},
56+
);
57+
58+
test(
59+
'pastikan output dari fungsi toString',
60+
() async {
61+
// assert
62+
expect(
63+
tParams.toString(),
64+
'ParamsDeleteTrackUser{trackId: $trackId}',
65+
);
66+
},
67+
);
68+
}

0 commit comments

Comments
 (0)