Skip to content

Commit 88e386a

Browse files
committed
feat(Home): add unit tests - repository and usecase get live streams
1 parent 55ff844 commit 88e386a

File tree

4 files changed

+120
-28
lines changed

4 files changed

+120
-28
lines changed

test/features/home/data/models/live_stream_model_test.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ void main() {
2121
'should return a valid model when the JSON',
2222
() async {
2323
// arrange
24-
final String jsonMap = fixture('live_stream_model.json');
25-
final List jsonListRaw = jsonDecode(jsonMap)['data'];
24+
final List<dynamic> arrayRaw =
25+
jsonDecode(fixture('live_stream_model.json'));
2626
// act
27-
final List<LiveStreamModel> result = jsonListRaw
27+
final List<LiveStreamModel> result = arrayRaw
2828
.map<LiveStreamModel>(
2929
(liveStreamJson) => LiveStreamModel.fromMap(liveStreamJson))
3030
.toList();
3131
// assert
32-
expect(result.length, jsonListRaw.length);
32+
expect(result.length, arrayRaw.length);
3333
},
3434
);
3535
});
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import 'dart:convert';
2+
import 'package:mockito/mockito.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:streamskit_mobile/features/home/data/datasources/local_live_stream_source.dart';
5+
import 'package:streamskit_mobile/features/home/data/model/live_stream_model.dart';
6+
import 'package:streamskit_mobile/features/home/data/repositories/live_stream_repository_impl.dart';
7+
8+
import '../../../../fixtures/fixture_reader.dart';
9+
10+
class MockLocalDataSource extends Mock implements LocalLiveStreamSource {
11+
@override
12+
List<LiveStreamModel> getLiveStreams() {
13+
return super.noSuchMethod(Invocation.method(#getLiveStreams, [])) ?? [];
14+
}
15+
}
16+
17+
void main() {
18+
late LiveStreamRepositoryImpl repository;
19+
late MockLocalDataSource mockLocalDataSource;
20+
21+
setUp(() {
22+
mockLocalDataSource = MockLocalDataSource();
23+
repository = LiveStreamRepositoryImpl(localData: mockLocalDataSource);
24+
});
25+
26+
group('get live streams', () {
27+
final List<dynamic> arrayRaw =
28+
jsonDecode(fixture('live_stream_model.json'));
29+
final List<LiveStreamModel> liveStreams = arrayRaw
30+
.map(
31+
(liveStream) => LiveStreamModel.fromMap(liveStream),
32+
)
33+
.toList();
34+
35+
test(
36+
'should return list live stream model',
37+
() async {
38+
// arrange
39+
when(mockLocalDataSource.getLiveStreams()).thenAnswer(
40+
(_) => liveStreams,
41+
);
42+
// act
43+
repository.getLiveStreams();
44+
// assert
45+
verifyNever(mockLocalDataSource.saveLiveStreams(liveStreams));
46+
},
47+
);
48+
});
49+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import 'package:dartz/dartz.dart';
2+
import 'package:mockito/annotations.dart';
3+
import 'package:mockito/mockito.dart';
4+
import 'package:flutter_test/flutter_test.dart';
5+
import 'package:streamskit_mobile/core/error/failure.dart';
6+
import 'package:streamskit_mobile/core/usecase/usecase.dart';
7+
import 'package:streamskit_mobile/features/home/data/model/live_stream_model.dart';
8+
import 'package:streamskit_mobile/features/home/domain/repositories/live_stream_repository.dart';
9+
import 'package:streamskit_mobile/features/home/domain/usecases/get_list_live_streaming.dart';
10+
11+
@GenerateMocks([LiveStreamModel])
12+
List<LiveStreamModel> liveStreams = listLiveStreamFake;
13+
14+
class MockLiveStreamRepository extends Mock implements LiveStreamRepository {
15+
@override
16+
Either<Failure, List<LiveStreamModel>> getLiveStreams() {
17+
return (super.noSuchMethod(Invocation.method(#getTodos, [])) ??
18+
Right(liveStreams));
19+
}
20+
}
21+
22+
void main() {
23+
late GetListLiveStreaming usecase;
24+
late MockLiveStreamRepository mockLiveStreamRepository;
25+
26+
setUp(() {
27+
mockLiveStreamRepository = MockLiveStreamRepository();
28+
usecase = GetListLiveStreaming(repository: mockLiveStreamRepository);
29+
});
30+
31+
test(
32+
'should get list live streams from repository',
33+
() async {
34+
when(mockLiveStreamRepository.getLiveStreams())
35+
.thenAnswer((_) => Right(liveStreams));
36+
// act
37+
final result = usecase(NoParams());
38+
// assert
39+
expect(result.isRight(),
40+
Right<Failure, List<LiveStreamModel>>(liveStreams).isRight());
41+
verify(mockLiveStreamRepository.getLiveStreams());
42+
verifyNoMoreInteractions(mockLiveStreamRepository);
43+
},
44+
);
45+
}

test/fixtures/live_stream_model.json

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
{
2-
"data": [
3-
{
4-
"peopleParticipant": 910,
5-
"type": 1,
6-
"urlToImage": ""
7-
},
8-
{
9-
"peopleParticipant": 910,
10-
"type": 2,
11-
"urlToImage": ""
12-
},
13-
{
14-
"peopleParticipant": 910,
15-
"type": 3,
16-
"urlToImage": ""
17-
},
18-
{
19-
"peopleParticipant": 910,
20-
"type": 4,
21-
"urlToImage": ""
22-
}
23-
]
24-
}
1+
[
2+
{
3+
"peopleParticipant": 910,
4+
"type": 1,
5+
"urlToImage": ""
6+
},
7+
{
8+
"peopleParticipant": 910,
9+
"type": 2,
10+
"urlToImage": ""
11+
},
12+
{
13+
"peopleParticipant": 910,
14+
"type": 3,
15+
"urlToImage": ""
16+
},
17+
{
18+
"peopleParticipant": 910,
19+
"type": 4,
20+
"urlToImage": ""
21+
}
22+
]

0 commit comments

Comments
 (0)