mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-03-09 16:58:55 +01:00
Fix compatibility with very old album
This commit is contained in:
parent
9fb8ff6cfc
commit
aa49624517
4 changed files with 649 additions and 543 deletions
app
lib/entity/album
test/entity
|
@ -91,7 +91,7 @@ class AlbumAutoCoverProvider extends AlbumCoverProvider {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
FileDescriptor? getCover(Album album) {
|
FileDescriptor? getCover(Album album) {
|
||||||
if (coverFile == null) {
|
if (coverFile == null && album.provider is AlbumStaticProvider) {
|
||||||
// use the latest file as cover
|
// use the latest file as cover
|
||||||
return getCoverByItems(AlbumStaticProvider.of(album).items);
|
return getCoverByItems(AlbumStaticProvider.of(album).items);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -281,16 +281,20 @@ class AlbumUpgraderV8 implements AlbumUpgrader {
|
||||||
.cast<String, dynamic>();
|
.cast<String, dynamic>();
|
||||||
final fd = _fileJsonToFileDescriptorJson(content);
|
final fd = _fileJsonToFileDescriptorJson(content);
|
||||||
// some very old album file may contain files w/o id
|
// some very old album file may contain files w/o id
|
||||||
if (fd["fdId"] == null) {
|
if (fd["fdId"] != null) {
|
||||||
result["coverProvider"]["content"]["coverFile"] = fd;
|
result["coverProvider"]["content"]["coverFile"] = fd;
|
||||||
|
} else {
|
||||||
|
result["coverProvider"]["content"] = {};
|
||||||
}
|
}
|
||||||
} else if (result["coverProvider"]["type"] == "auto") {
|
} else if (result["coverProvider"]["type"] == "auto") {
|
||||||
final content = (result["coverProvider"]["content"]["coverFile"] as Map?)
|
final content = (result["coverProvider"]["content"]["coverFile"] as Map?)
|
||||||
?.cast<String, dynamic>();
|
?.cast<String, dynamic>();
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
final fd = _fileJsonToFileDescriptorJson(content);
|
final fd = _fileJsonToFileDescriptorJson(content);
|
||||||
if (fd["fdId"] == null) {
|
if (fd["fdId"] != null) {
|
||||||
result["coverProvider"]["content"]["coverFile"] = fd;
|
result["coverProvider"]["content"]["coverFile"] = fd;
|
||||||
|
} else {
|
||||||
|
result["coverProvider"]["content"] = {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,18 +309,26 @@ class AlbumUpgraderV8 implements AlbumUpgrader {
|
||||||
.cast<String, dynamic>();
|
.cast<String, dynamic>();
|
||||||
final converted = _fileJsonToFileDescriptorJson(
|
final converted = _fileJsonToFileDescriptorJson(
|
||||||
(content["coverFile"] as Map).cast<String, dynamic>());
|
(content["coverFile"] as Map).cast<String, dynamic>());
|
||||||
return dbObj.copyWith(
|
if (converted["fdId"] != null) {
|
||||||
coverProviderContent: jsonEncode({"coverFile": converted}),
|
return dbObj.copyWith(
|
||||||
);
|
coverProviderContent: jsonEncode({"coverFile": converted}),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return dbObj.copyWith(coverProviderContent: "{}");
|
||||||
|
}
|
||||||
} else if (dbObj.coverProviderType == "auto") {
|
} else if (dbObj.coverProviderType == "auto") {
|
||||||
final content = (jsonDecode(dbObj.coverProviderContent) as Map)
|
final content = (jsonDecode(dbObj.coverProviderContent) as Map)
|
||||||
.cast<String, dynamic>();
|
.cast<String, dynamic>();
|
||||||
if (content["coverFile"] != null) {
|
if (content["coverFile"] != null) {
|
||||||
final converted = _fileJsonToFileDescriptorJson(
|
final converted = _fileJsonToFileDescriptorJson(
|
||||||
(content["coverFile"] as Map).cast<String, dynamic>());
|
(content["coverFile"] as Map).cast<String, dynamic>());
|
||||||
return dbObj.copyWith(
|
if (converted["fdId"] != null) {
|
||||||
coverProviderContent: jsonEncode({"coverFile": converted}),
|
return dbObj.copyWith(
|
||||||
);
|
coverProviderContent: jsonEncode({"coverFile": converted}),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return dbObj.copyWith(coverProviderContent: "{}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dbObj;
|
return dbObj;
|
||||||
|
|
|
@ -17,6 +17,8 @@ import 'package:test/test.dart';
|
||||||
|
|
||||||
import '../test_util.dart' as util;
|
import '../test_util.dart' as util;
|
||||||
|
|
||||||
|
part 'album_test/album_upgrader_v8.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
group("Album", () {
|
group("Album", () {
|
||||||
group("fromJson", () {
|
group("fromJson", () {
|
||||||
|
@ -1810,6 +1812,7 @@ void main() {
|
||||||
group("auto cover", () {
|
group("auto cover", () {
|
||||||
test("null", _upgradeV8JsonAutoNull);
|
test("null", _upgradeV8JsonAutoNull);
|
||||||
test("last modified", _upgradeV8JsonAutoLastModified);
|
test("last modified", _upgradeV8JsonAutoLastModified);
|
||||||
|
test("no file id", _upgradeV8JsonAutoNoFileId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1824,6 +1827,7 @@ void main() {
|
||||||
group("auto cover", () {
|
group("auto cover", () {
|
||||||
test("null", _upgradeV8DbAutoNull);
|
test("null", _upgradeV8DbAutoNull);
|
||||||
test("last modified", _upgradeV8DbAutoLastModified);
|
test("last modified", _upgradeV8DbAutoLastModified);
|
||||||
|
test("no file id", _upgradeV8DbAutoNoFileId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1952,540 +1956,6 @@ void _toAppDbJsonShares() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void _upgradeV8JsonNonManualCover() {
|
|
||||||
final json = <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "memory",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.678901Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "memory",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.678901Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8JsonManualNow() {
|
|
||||||
withClock(Clock.fixed(DateTime.utc(2020, 1, 2, 3, 4, 5)), () {
|
|
||||||
final json = <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "manual",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "manual",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.000Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8JsonManualExifTime() {
|
|
||||||
final json = <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "manual",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1,
|
|
||||||
"metadata": <String, dynamic>{
|
|
||||||
"exif": <String, dynamic>{
|
|
||||||
"DateTimeOriginal": "2020:01:02 03:04:05",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "manual",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
// dart does not provide a way to mock timezone
|
|
||||||
"fdDateTime": DateTime(2020, 1, 2, 3, 4, 5).toUtc().toIso8601String(),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8JsonAutoNull() {
|
|
||||||
final json = <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "auto",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "auto",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8JsonAutoLastModified() {
|
|
||||||
final json = <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "auto",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1,
|
|
||||||
"lastModified": "2020-01-02T03:04:05.000Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
|
||||||
"version": 8,
|
|
||||||
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
|
||||||
"provider": <String, dynamic>{
|
|
||||||
"type": "static",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"items": [],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"coverProvider": <String, dynamic>{
|
|
||||||
"type": "auto",
|
|
||||||
"content": <String, dynamic>{
|
|
||||||
"coverFile": <String, dynamic>{
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.000Z",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"sortProvider": <String, dynamic>{
|
|
||||||
"type": "null",
|
|
||||||
"content": <String, dynamic>{},
|
|
||||||
},
|
|
||||||
"albumFile": <String, dynamic>{
|
|
||||||
"path": "remote.php/dav/files/admin/test1.json",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8DbNonManualCover() {
|
|
||||||
final dbObj = sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "memory",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.678901Z"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
const AlbumUpgraderV8().doDb(dbObj),
|
|
||||||
sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "memory",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.678901Z"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8DbManualNow() {
|
|
||||||
withClock(Clock.fixed(DateTime.utc(2020, 1, 2, 3, 4, 5)), () {
|
|
||||||
final dbObj = sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "manual",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
const AlbumUpgraderV8().doDb(dbObj),
|
|
||||||
sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "manual",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.000Z"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8DbManualExifTime() {
|
|
||||||
final dbObj = sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "manual",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1,
|
|
||||||
"metadata": {
|
|
||||||
"exif": {
|
|
||||||
"DateTimeOriginal": "2020:01:02 03:04:05"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
);
|
|
||||||
// dart does not provide a way to mock timezone
|
|
||||||
final dateTime = DateTime(2020, 1, 2, 3, 4, 5).toUtc().toIso8601String();
|
|
||||||
expect(
|
|
||||||
const AlbumUpgraderV8().doDb(dbObj),
|
|
||||||
sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "manual",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "$dateTime"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8DbAutoNull() {
|
|
||||||
final dbObj = sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "auto",
|
|
||||||
coverProviderContent: "{}",
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
const AlbumUpgraderV8().doDb(dbObj),
|
|
||||||
sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "auto",
|
|
||||||
coverProviderContent: "{}",
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _upgradeV8DbAutoLastModified() {
|
|
||||||
final dbObj = sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "auto",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"path": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fileId": 1,
|
|
||||||
"lastModified": "2020-01-02T03:04:05.000Z"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
const AlbumUpgraderV8().doDb(dbObj),
|
|
||||||
sql.Album(
|
|
||||||
rowId: 1,
|
|
||||||
file: 1,
|
|
||||||
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
|
||||||
version: 8,
|
|
||||||
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
|
||||||
name: "test1",
|
|
||||||
providerType: "static",
|
|
||||||
providerContent: """{"items": []}""",
|
|
||||||
coverProviderType: "auto",
|
|
||||||
coverProviderContent: _stripJsonString("""{
|
|
||||||
"coverFile": {
|
|
||||||
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
|
||||||
"fdId": 1,
|
|
||||||
"fdMime": null,
|
|
||||||
"fdIsArchived": false,
|
|
||||||
"fdIsFavorite": false,
|
|
||||||
"fdDateTime": "2020-01-02T03:04:05.000Z"
|
|
||||||
}
|
|
||||||
}"""),
|
|
||||||
sortProviderType: "null",
|
|
||||||
sortProviderContent: "{}",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
String _stripJsonString(String str) {
|
String _stripJsonString(String str) {
|
||||||
return jsonEncode(jsonDecode(str));
|
return jsonEncode(jsonDecode(str));
|
||||||
}
|
}
|
||||||
|
|
624
app/test/entity/album_test/album_upgrader_v8.dart
Normal file
624
app/test/entity/album_test/album_upgrader_v8.dart
Normal file
|
@ -0,0 +1,624 @@
|
||||||
|
part of '../album_test.dart';
|
||||||
|
|
||||||
|
void _upgradeV8JsonNonManualCover() {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "memory",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.678901Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "memory",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.678901Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8JsonManualNow() {
|
||||||
|
withClock(Clock.fixed(DateTime.utc(2020, 1, 2, 3, 4, 5)), () {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "manual",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "manual",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.000Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8JsonManualExifTime() {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "manual",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1,
|
||||||
|
"metadata": <String, dynamic>{
|
||||||
|
"exif": <String, dynamic>{
|
||||||
|
"DateTimeOriginal": "2020:01:02 03:04:05",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "manual",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
// dart does not provide a way to mock timezone
|
||||||
|
"fdDateTime": DateTime(2020, 1, 2, 3, 4, 5).toUtc().toIso8601String(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8JsonAutoNull() {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8JsonAutoLastModified() {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1,
|
||||||
|
"lastModified": "2020-01-02T03:04:05.000Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.000Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8JsonAutoNoFileId() {
|
||||||
|
final json = <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"coverFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"lastModified": "2020-01-02T03:04:05.000Z",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
expect(const AlbumUpgraderV8().doJson(json), <String, dynamic>{
|
||||||
|
"version": 8,
|
||||||
|
"lastUpdated": "2020-01-02T03:04:05.678901Z",
|
||||||
|
"provider": <String, dynamic>{
|
||||||
|
"type": "static",
|
||||||
|
"content": <String, dynamic>{
|
||||||
|
"items": [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"coverProvider": <String, dynamic>{
|
||||||
|
"type": "auto",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"sortProvider": <String, dynamic>{
|
||||||
|
"type": "null",
|
||||||
|
"content": <String, dynamic>{},
|
||||||
|
},
|
||||||
|
"albumFile": <String, dynamic>{
|
||||||
|
"path": "remote.php/dav/files/admin/test1.json",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbNonManualCover() {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "memory",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.678901Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "memory",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.678901Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbManualNow() {
|
||||||
|
withClock(Clock.fixed(DateTime.utc(2020, 1, 2, 3, 4, 5)), () {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "manual",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "manual",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.000Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbManualExifTime() {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "manual",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1,
|
||||||
|
"metadata": {
|
||||||
|
"exif": {
|
||||||
|
"DateTimeOriginal": "2020:01:02 03:04:05"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
// dart does not provide a way to mock timezone
|
||||||
|
final dateTime = DateTime(2020, 1, 2, 3, 4, 5).toUtc().toIso8601String();
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "manual",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "$dateTime"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbAutoNull() {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: "{}",
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: "{}",
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbAutoLastModified() {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fileId": 1,
|
||||||
|
"lastModified": "2020-01-02T03:04:05.000Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"fdPath": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"fdId": 1,
|
||||||
|
"fdMime": null,
|
||||||
|
"fdIsArchived": false,
|
||||||
|
"fdIsFavorite": false,
|
||||||
|
"fdDateTime": "2020-01-02T03:04:05.000Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _upgradeV8DbAutoNoFileId() {
|
||||||
|
final dbObj = sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: _stripJsonString("""{
|
||||||
|
"coverFile": {
|
||||||
|
"path": "remote.php/dav/files/admin/test1.jpg",
|
||||||
|
"lastModified": "2020-01-02T03:04:05.000Z"
|
||||||
|
}
|
||||||
|
}"""),
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
const AlbumUpgraderV8().doDb(dbObj),
|
||||||
|
sql.Album(
|
||||||
|
rowId: 1,
|
||||||
|
file: 1,
|
||||||
|
fileEtag: "8a3e0799b6f0711c23cc2d93950eceb5",
|
||||||
|
version: 8,
|
||||||
|
lastUpdated: DateTime.utc(2020, 1, 2, 3, 4, 5),
|
||||||
|
name: "test1",
|
||||||
|
providerType: "static",
|
||||||
|
providerContent: """{"items": []}""",
|
||||||
|
coverProviderType: "auto",
|
||||||
|
coverProviderContent: "{}",
|
||||||
|
sortProviderType: "null",
|
||||||
|
sortProviderContent: "{}",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in a new issue