Skip to content

Commit 3304e10

Browse files
committed
test: add tests for daily challenge card
1 parent 685e0f1 commit 3304e10

File tree

5 files changed

+1310
-86
lines changed

5 files changed

+1310
-86
lines changed

mobile-app/lib/ui/views/learn/widgets/daily_challenge_card.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class _DailyChallengeCardState extends State<DailyChallengeCard> {
3030
bool _isCompleted = false;
3131
final AuthenticationService _auth = locator<AuthenticationService>();
3232
final NavigationService _navigationService = locator<NavigationService>();
33+
final DailyChallengeService _dailyChallengeService =
34+
locator<DailyChallengeService>();
3335

3436
void _navigateToDailyChallenge(BuildContext context) {
3537
if (_challenge == null) return;
@@ -76,8 +78,7 @@ class _DailyChallengeCardState extends State<DailyChallengeCard> {
7678
_error = null;
7779
});
7880
try {
79-
final todayChallenge =
80-
await DailyChallengeService().fetchTodayChallenge();
81+
final todayChallenge = await _dailyChallengeService.fetchTodayChallenge();
8182

8283
final isCompleted = await _checkIfChallengeCompleted(todayChallenge.id);
8384

@@ -301,7 +302,7 @@ class _DailyChallengeCardState extends State<DailyChallengeCard> {
301302
borderRadius: BorderRadius.all(Radius.circular(16)),
302303
boxShadow: [
303304
BoxShadow(
304-
color: Colors.black.withValues(alpha: 0.10),
305+
color: Colors.black.withOpacity(0.10),
305306
blurRadius: 16,
306307
offset: Offset(0, 8),
307308
),

mobile-app/test/helpers/test_helpers.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import 'package:freecodecamp/app/app.locator.dart';
2+
import 'package:freecodecamp/service/authentication/authentication_service.dart';
3+
import 'package:freecodecamp/service/learn/daily_challenge_service.dart';
24
import 'package:freecodecamp/service/news/bookmark_service.dart';
35
import 'package:mockito/annotations.dart';
46
import 'package:stacked_services/stacked_services.dart';
@@ -9,12 +11,16 @@ import 'test_helpers.mocks.dart';
911
@GenerateMocks([], customMocks: [
1012
MockSpec<NavigationService>(onMissingStub: OnMissingStub.returnDefault),
1113
MockSpec<DialogService>(onMissingStub: OnMissingStub.returnDefault),
14+
MockSpec<DailyChallengeService>(onMissingStub: OnMissingStub.returnDefault),
15+
MockSpec<AuthenticationService>(onMissingStub: OnMissingStub.returnDefault),
1216
// @stacked-mock-spec
1317
])
1418
void registerServices() {
1519
getAndRegisterNavigationService();
1620
getAndRegisterDialogService();
1721
getAndRegisterNewsBookmarkService();
22+
getAndRegisterDailyChallengeService();
23+
getAndRegisterAuthenticationService();
1824
// @stacked-mock-register
1925
}
2026

@@ -38,6 +44,20 @@ BookmarksDatabaseService getAndRegisterNewsBookmarkService() {
3844
locator.registerSingleton<BookmarksDatabaseService>(service);
3945
return service;
4046
}
47+
48+
MockDailyChallengeService getAndRegisterDailyChallengeService() {
49+
_removeRegistrationIfExists<DailyChallengeService>();
50+
final service = MockDailyChallengeService();
51+
locator.registerSingleton<DailyChallengeService>(service);
52+
return service;
53+
}
54+
55+
MockAuthenticationService getAndRegisterAuthenticationService() {
56+
_removeRegistrationIfExists<AuthenticationService>();
57+
final service = MockAuthenticationService();
58+
locator.registerSingleton<AuthenticationService>(service);
59+
return service;
60+
}
4161
// @stacked-mock-create
4262

4363
void _removeRegistrationIfExists<T extends Object>() {

0 commit comments

Comments
 (0)