Skip to content

Commit 2c9e4ce

Browse files
test: add unit tests for BookMarkModel
1 parent ef96f8f commit 2c9e4ce

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

test/book_mark_model_test.dart

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:shared_preferences/shared_preferences.dart';
3+
import 'package:opso/modals/book_mark_model.dart';
4+
5+
void main() {
6+
TestWidgetsFlutterBinding.ensureInitialized();
7+
8+
group('HandleBookmark Tests', () {
9+
setUp(() {
10+
SharedPreferences.setMockInitialValues({});
11+
});
12+
13+
test('should return empty list when no bookmarks are saved', () async {
14+
final bookmarks = await HandleBookmark.loadBookmarks();
15+
expect(bookmarks, isEmpty);
16+
});
17+
18+
test('should save and load bookmarks correctly', () async {
19+
final bookmarksToSave = [
20+
{'title': 'GSSoC', 'screen': 'gssoc_screen'},
21+
{'title': 'LFX', 'screen': 'lfx_screen'},
22+
];
23+
24+
await HandleBookmark.saveBookmarks(bookmarksToSave);
25+
final loadedBookmarks = await HandleBookmark.loadBookmarks();
26+
27+
expect(loadedBookmarks.length, 2);
28+
expect(loadedBookmarks[0]['title'], 'GSSoC');
29+
expect(loadedBookmarks[1]['title'], 'LFX');
30+
});
31+
32+
test('should add bookmark and prevent duplicates', () async {
33+
await HandleBookmark.addBookmark('GSSoC', 'gssoc_screen');
34+
35+
var bookmarks = await HandleBookmark.loadBookmarks();
36+
expect(bookmarks.length, 1);
37+
expect(bookmarks[0]['title'], 'GSSoC');
38+
39+
// Attempt to add duplicate
40+
await HandleBookmark.addBookmark('GSSoC', 'gssoc_screen');
41+
bookmarks = await HandleBookmark.loadBookmarks();
42+
expect(bookmarks.length, 1); // Should still be 1
43+
});
44+
45+
test('should check if screen is bookmarked correctly', () async {
46+
expect(await HandleBookmark.isBookmarked('GSSoC'), isFalse);
47+
48+
await HandleBookmark.addBookmark('GSSoC', 'gssoc_screen');
49+
expect(await HandleBookmark.isBookmarked('GSSoC'), isTrue);
50+
});
51+
52+
test('should delete bookmark correctly', () async {
53+
await HandleBookmark.addBookmark('GSSoC', 'gssoc_screen');
54+
await HandleBookmark.addBookmark('LFX', 'lfx_screen');
55+
56+
expect(await HandleBookmark.isBookmarked('GSSoC'), isTrue);
57+
expect(await HandleBookmark.isBookmarked('LFX'), isTrue);
58+
59+
await HandleBookmark.deleteBookmark('GSSoC');
60+
61+
expect(await HandleBookmark.isBookmarked('GSSoC'), isFalse);
62+
expect(await HandleBookmark.isBookmarked('LFX'), isTrue);
63+
});
64+
});
65+
}

0 commit comments

Comments
 (0)