@ -54,12 +54,7 @@ void main() {
when ( ( ) = > mockNativeSyncApi . shouldFullSync ( ) ) . thenAnswer ( ( _ ) async = > false ) ;
when ( ( ) = > mockNativeSyncApi . getMediaChanges ( ) ) . thenAnswer (
( _ ) async = > SyncDelta (
hasChanges: false ,
updates: const [ ] ,
deletes: const [ ] ,
assetAlbums: const { } ,
) ,
( _ ) async = > SyncDelta ( hasChanges: false , updates: const [ ] , deletes: const [ ] , assetAlbums: const { } ) ,
) ;
when ( ( ) = > mockNativeSyncApi . getTrashedAssets ( ) ) . thenAnswer ( ( _ ) async = > { } ) ;
when ( ( ) = > mockTrashedLocalAssetRepository . processTrashSnapshot ( any ( ) ) ) . thenAnswer ( ( _ ) async { } ) ;
@ -144,13 +139,19 @@ void main() {
} ) ;
final localAssetToTrash = LocalAssetStub . image2 . copyWith ( id: ' local-trash ' , checksum: ' checksum-trash ' ) ;
when ( ( ) = > mockTrashedLocalAssetRepository . getToTrash ( ) ) . thenAnswer ( ( _ ) async = > { ' album-a ' : [ localAssetToTrash ] } ) ;
when ( ( ) = > mockTrashedLocalAssetRepository . getToTrash ( ) ) . thenAnswer (
( _ ) async = > {
' album-a ' : [ localAssetToTrash ] ,
} ,
) ;
final assetEntity = MockAssetEntity ( ) ;
when ( ( ) = > assetEntity . getMediaUrl ( ) ) . thenAnswer ( ( _ ) async = > ' content://local-trash ' ) ;
when ( ( ) = > mockStorageRepository . getAssetEntityForAsset ( localAssetToTrash ) ) . thenAnswer ( ( _ ) async = > assetEntity ) ;
await sut . processTrashedAssets ( { ' album-a ' : [ platformAsset ] } ) ;
await sut . processTrashedAssets ( {
' album-a ' : [ platformAsset ] ,
} ) ;
verify ( ( ) = > mockTrashedLocalAssetRepository . processTrashSnapshot ( any ( ) ) ) . called ( 1 ) ;
verify ( ( ) = > mockTrashedLocalAssetRepository . getToTrash ( ) ) . called ( 1 ) ;
@ -159,8 +160,7 @@ void main() {
verify ( ( ) = > mockTrashedLocalAssetRepository . applyRestoredAssets ( restoredIds ) ) . called ( 1 ) ;
verify ( ( ) = > mockStorageRepository . getAssetEntityForAsset ( localAssetToTrash ) ) . called ( 1 ) ;
final moveArgs =
verify ( ( ) = > mockLocalFilesManager . moveToTrash ( captureAny ( ) ) ) . captured . single as List < String > ;
final moveArgs = verify ( ( ) = > mockLocalFilesManager . moveToTrash ( captureAny ( ) ) ) . captured . single as List < String > ;
expect ( moveArgs , [ ' content://local-trash ' ] ) ;
final trashArgs =
verify ( ( ) = > mockTrashedLocalAssetRepository . trashLocalAsset ( captureAny ( ) ) ) . captured . single
@ -187,4 +187,25 @@ void main() {
verifyNever ( ( ) = > mockTrashedLocalAssetRepository . trashLocalAsset ( any ( ) ) ) ;
} ) ;
} ) ;
group ( ' LocalSyncService - PlatformAsset conversion ' , ( ) {
test ( ' toLocalAsset uses correct updatedAt timestamp ' , ( ) {
final platformAsset = PlatformAsset (
id: ' test-id ' ,
name: ' test.jpg ' ,
type: AssetType . image . index ,
durationInSeconds: 0 ,
orientation: 0 ,
isFavorite: false ,
createdAt: 1700000000 ,
updatedAt: 1732000000 ,
) ;
final localAsset = platformAsset . toLocalAsset ( ) ;
expect ( localAsset . createdAt . millisecondsSinceEpoch ~ / 1000 , 1700000000 ) ;
expect ( localAsset . updatedAt . millisecondsSinceEpoch ~ / 1000 , 1732000000 ) ;
expect ( localAsset . updatedAt , isNot ( localAsset . createdAt ) ) ;
} ) ;
} ) ;
}