From 653fa3f0b1cc650951a6a9771072330aa84e07e5 Mon Sep 17 00:00:00 2001 From: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> Date: Tue, 11 Mar 2025 19:55:46 +0530 Subject: [PATCH] chore(mobile): add orientation tests for exif (#16806) Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> --- mobile/test/fixtures/exif.stub.dart | 18 +++++++ mobile/test/fixtures/user.stub.dart | 14 +++--- .../repositories/exif_repository_test.dart | 50 +++++++++++++++++++ 3 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 mobile/test/fixtures/exif.stub.dart create mode 100644 mobile/test/infrastructure/repositories/exif_repository_test.dart diff --git a/mobile/test/fixtures/exif.stub.dart b/mobile/test/fixtures/exif.stub.dart new file mode 100644 index 00000000000..5ad9a41761b --- /dev/null +++ b/mobile/test/fixtures/exif.stub.dart @@ -0,0 +1,18 @@ +import 'package:immich_mobile/domain/models/exif.model.dart'; + +abstract final class ExifStub { + static final size = const ExifInfo(assetId: 1, fileSize: 1000); + + static final gps = const ExifInfo( + assetId: 2, + latitude: 20, + longitude: 20, + city: 'city', + state: 'state', + country: 'country', + ); + + static final rotated90CW = const ExifInfo(assetId: 3, orientation: "90"); + + static final rotated270CW = const ExifInfo(assetId: 4, orientation: "-90"); +} diff --git a/mobile/test/fixtures/user.stub.dart b/mobile/test/fixtures/user.stub.dart index 38524f782cb..92efc936832 100644 --- a/mobile/test/fixtures/user.stub.dart +++ b/mobile/test/fixtures/user.stub.dart @@ -1,6 +1,6 @@ import 'package:immich_mobile/entities/user.entity.dart'; -final class UserStub { +abstract final class UserStub { const UserStub._(); static final admin = User( @@ -8,9 +8,9 @@ final class UserStub { updatedAt: DateTime(2021), email: "admin@test.com", name: "admin", - avatarColor: AvatarColorEnum.green, - profileImagePath: '', isAdmin: true, + profileImagePath: '', + avatarColor: AvatarColorEnum.green, ); static final user1 = User( @@ -18,9 +18,9 @@ final class UserStub { updatedAt: DateTime(2022), email: "user1@test.com", name: "user1", - avatarColor: AvatarColorEnum.red, - profileImagePath: '', isAdmin: false, + profileImagePath: '', + avatarColor: AvatarColorEnum.red, ); static final user2 = User( @@ -28,8 +28,8 @@ final class UserStub { updatedAt: DateTime(2023), email: "user2@test.com", name: "user2", - avatarColor: AvatarColorEnum.primary, - profileImagePath: '', isAdmin: false, + profileImagePath: '', + avatarColor: AvatarColorEnum.primary, ); } diff --git a/mobile/test/infrastructure/repositories/exif_repository_test.dart b/mobile/test/infrastructure/repositories/exif_repository_test.dart new file mode 100644 index 00000000000..e267d2dac43 --- /dev/null +++ b/mobile/test/infrastructure/repositories/exif_repository_test.dart @@ -0,0 +1,50 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:immich_mobile/domain/interfaces/exif.interface.dart'; +import 'package:immich_mobile/infrastructure/entities/exif.entity.dart'; +import 'package:immich_mobile/infrastructure/repositories/exif.repository.dart'; +import 'package:isar/isar.dart'; + +import '../../fixtures/exif.stub.dart'; +import '../../test_utils.dart'; + +Future _populateExifTable(Isar db) async { + await db.writeTxn(() async { + await db.exifInfos.putAll([ + ExifInfo.fromDto(ExifStub.size), + ExifInfo.fromDto(ExifStub.gps), + ExifInfo.fromDto(ExifStub.rotated90CW), + ExifInfo.fromDto(ExifStub.rotated270CW), + ]); + }); +} + +void main() { + late Isar db; + late IExifInfoRepository sut; + + setUp(() async { + db = await TestUtils.initIsar(); + sut = IsarExifRepository(db); + }); + + group("Return with proper orientation", () { + setUp(() async { + await _populateExifTable(db); + }); + + test("isFlipped true for 90CW", () async { + final exif = await sut.get(ExifStub.rotated90CW.assetId!); + expect(exif!.isFlipped, true); + }); + + test("isFlipped true for 270CW", () async { + final exif = await sut.get(ExifStub.rotated270CW.assetId!); + expect(exif!.isFlipped, true); + }); + + test("isFlipped false for the original non-rotated image", () async { + final exif = await sut.get(ExifStub.size.assetId!); + expect(exif!.isFlipped, false); + }); + }); +}