11import 'package:flutter_test/flutter_test.dart' ;
22import 'package:on_time_front/core/services/alarm_scheduler_service.dart' ;
3+ import 'package:on_time_front/core/services/app_metadata_service.dart' ;
34import 'package:on_time_front/data/data_sources/alarm_remote_data_source.dart' ;
45import 'package:on_time_front/data/repositories/alarm_repository_impl.dart' ;
56import 'package:on_time_front/domain/entities/alarm_entities.dart' ;
@@ -9,15 +10,20 @@ import 'package:shared_preferences/shared_preferences.dart';
910void main () {
1011 late _FakeAlarmRemoteDataSource remoteDataSource;
1112 late _FakeAlarmSchedulerService schedulerService;
13+ late _FakeAppMetadataProvider appMetadataProvider;
1214 late AlarmRepositoryImpl repository;
1315
1416 setUp (() {
1517 SharedPreferences .setMockInitialValues ({});
1618 remoteDataSource = _FakeAlarmRemoteDataSource ();
1719 schedulerService = _FakeAlarmSchedulerService ();
20+ appMetadataProvider = _FakeAppMetadataProvider (
21+ const AppMetadata (version: '9.8.7' , buildNumber: '654' ),
22+ );
1823 repository = AlarmRepositoryImpl (
1924 remoteDataSource: remoteDataSource,
2025 schedulerService: schedulerService,
26+ appMetadataProvider: appMetadataProvider,
2127 );
2228 });
2329
@@ -47,7 +53,7 @@ void main() {
4753 );
4854
4955 test (
50- 'buildCurrentDeviceInfo combines persisted id and scheduler capabilities' ,
56+ 'buildCurrentDeviceInfo combines persisted id, scheduler capabilities, and runtime app version ' ,
5157 () async {
5258 SharedPreferences .setMockInitialValues ({
5359 'alarm_device_id' : '123e4567-e89b-12d3-a456-426614174000' ,
@@ -61,7 +67,7 @@ void main() {
6167 final info = await repository.buildCurrentDeviceInfo ();
6268
6369 expect (info.deviceId, '123e4567-e89b-12d3-a456-426614174000' );
64- expect (info.appVersion, '1.0.0 ' );
70+ expect (info.appVersion, '9.8.7 ' );
6571 expect (info.supportsNativeAlarm, isTrue);
6672 expect (info.nativeAlarmProvider, AlarmProvider .androidAlarmManager);
6773 expect (info.fallbackProvider, AlarmProvider .localNotification);
@@ -88,7 +94,7 @@ void main() {
8894 const deviceInfo = AlarmDeviceInfo (
8995 deviceId: 'device-1' ,
9096 platform: 'android' ,
91- appVersion: '1.0.0 ' ,
97+ appVersion: '9.8.7 ' ,
9298 osVersion: 'android' ,
9399 supportsNativeAlarm: true ,
94100 nativeAlarmProvider: AlarmProvider .androidAlarmManager,
@@ -137,6 +143,15 @@ class _FakeAlarmSchedulerService extends AlarmSchedulerService {
137143 Future <AlarmSchedulerCapabilities > getCapabilities () async => capabilities;
138144}
139145
146+ class _FakeAppMetadataProvider implements AppMetadataProvider {
147+ const _FakeAppMetadataProvider (this .metadata);
148+
149+ final AppMetadata metadata;
150+
151+ @override
152+ Future <AppMetadata > getMetadata () async => metadata;
153+ }
154+
140155class _FakeAlarmRemoteDataSource implements AlarmRemoteDataSource {
141156 AlarmSettings settings = const AlarmSettings (alarmsEnabled: true );
142157 final updatedValues = < bool > [];
0 commit comments