Skip to content

Commit b41bd90

Browse files
committed
[Test] Tested files service and made it more stable
1 parent 8a8885b commit b41bd90

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

lib/domain/files_service.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import 'package:flashcard_project/domain/model/file_information.dart';
22
import 'package:flashcard_project/repository/gdrive_repo.dart';
33
import 'package:googleapis/drive/v2.dart';
44

5-
class FileService {
6-
final GDriveRepo _sheetRepo = GDriveRepo();
5+
class FilesService {
6+
final GDriveRepo _gDriveRepo;
7+
8+
FilesService(this._gDriveRepo);
79

810
Future<List<LectureFolder>> getPossibleLectures() async {
9-
List<File> filesAndFolders = await _sheetRepo.getFilesAndFolders();
11+
List<File> filesAndFolders = await _gDriveRepo.getFilesAndFolders();
1012

1113
final spreadsheets = filesAndFolders
1214
.where((element) => element.mimeType?.contains("spreadsheet") ?? false)

lib/ui/screen/lesson_selector_screen.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flashcard_project/domain/files_service.dart';
22
import 'package:flashcard_project/domain/model/file_information.dart';
3+
import 'package:flashcard_project/repository/gdrive_repo.dart';
34
import 'package:flashcard_project/ui/screen/home_page.dart';
45
import 'package:flutter/material.dart';
56

@@ -11,7 +12,7 @@ class LessonSelectorScreen extends StatefulWidget {
1112
}
1213

1314
class _LessonSelectorScreenState extends State<LessonSelectorScreen> {
14-
FileService fileService = FileService();
15+
FilesService fileService = FilesService(GDriveRepo());
1516
late Future<List<LectureFolder>> getPossibleLectures;
1617

1718
@override
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:flashcard_project/domain/files_service.dart';
2+
import 'package:flashcard_project/repository/gdrive_repo.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:googleapis/drive/v2.dart';
5+
import 'package:mockito/annotations.dart';
6+
import 'package:mockito/mockito.dart';
7+
8+
import 'files_service_test.mocks.dart';
9+
10+
@GenerateMocks([GDriveRepo])
11+
void main() {
12+
group("FilesService", () {
13+
final mockGDriveRepo = MockGDriveRepo();
14+
final subject = FilesService(mockGDriveRepo);
15+
16+
test(
17+
"WHEN the GDrive returns an empty list THEN the service return also an empty",
18+
() async {
19+
when(mockGDriveRepo.getFilesAndFolders()).thenAnswer(
20+
(realInvocation) async => [],
21+
);
22+
23+
expect(await subject.getPossibleLectures(), []);
24+
});
25+
26+
test(
27+
" WHEN the GDrive returns an folder with one spreadsheet THEN service returns it",
28+
() async {
29+
when(mockGDriveRepo.getFilesAndFolders()).thenAnswer(
30+
(realInvocation) async => [
31+
File(mimeType: "folder", title: "Learning English"),
32+
File(mimeType: "spreadsheet", title: "Lesson 1")
33+
],
34+
);
35+
36+
var result = await subject.getPossibleLectures();
37+
expect(result[0].name, "Learning English");
38+
expect(result[0].spreadsheets.length, 1);
39+
expect(result[0].spreadsheets[0].name, "Lesson 1");
40+
});
41+
});
42+
}

0 commit comments

Comments
 (0)