chore(mobile): add orientation tests for exif (#16806)

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2025-03-11 19:55:46 +05:30 committed by GitHub
parent 2be8b6c16d
commit 653fa3f0b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 75 additions and 7 deletions

18
mobile/test/fixtures/exif.stub.dart vendored Normal file
View File

@ -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");
}

View File

@ -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,
);
}

View File

@ -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<void> _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);
});
});
}