75 lines
2.8 KiB
C#
75 lines
2.8 KiB
C#
using System.IO.Compression;
|
|
using Jellyfin.Plugin.Multilang.Configuration;
|
|
using Jellyfin.Plugin.Multilang.Data;
|
|
using Jellyfin.Plugin.Multilang.Services.Backup;
|
|
|
|
namespace Jellyfin.Plugin.Multilang.Tests;
|
|
|
|
public sealed class MultilangBackupServiceTests
|
|
{
|
|
[Fact]
|
|
public void FullExportIncludesTheSelectedSections()
|
|
{
|
|
var root = TestPaths.CreateRoot();
|
|
try
|
|
{
|
|
var store = new TranslationStore(new TestApplicationPaths(root));
|
|
store.SaveUserRules(UserId, new UserRulesDocument { Enabled = true, SortLocale = "fi-FI" });
|
|
var service = new MultilangBackupService(store, null!, null!);
|
|
|
|
var bytes = service.Export(
|
|
new BackupExportOptions(PluginSettings: true, UserSettings: true, TranslationsDatabase: true, DownloadedAssets: false),
|
|
new PluginConfiguration { Languages = ["en", "fi"] });
|
|
|
|
using var zip = new ZipArchive(new MemoryStream(bytes), ZipArchiveMode.Read);
|
|
Assert.NotNull(zip.GetEntry("manifest.json"));
|
|
Assert.NotNull(zip.GetEntry("plugin-config.json"));
|
|
Assert.NotNull(zip.GetEntry("translations.sqlite"));
|
|
Assert.NotNull(zip.GetEntry("user-rules/" + UserId + ".json"));
|
|
Assert.Null(zip.GetEntry("assets/"));
|
|
}
|
|
finally
|
|
{
|
|
TestPaths.DeleteRoot(root);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void UserExportCanBeInspectedAndImportedForAnotherUser()
|
|
{
|
|
var root = TestPaths.CreateRoot();
|
|
try
|
|
{
|
|
var store = new TranslationStore(new TestApplicationPaths(root));
|
|
var service = new MultilangBackupService(store, null!, null!);
|
|
var sourceRules = new UserRulesDocument
|
|
{
|
|
Enabled = true,
|
|
SortLocale = "sv-SE",
|
|
TrustTmdbCollections = false
|
|
};
|
|
|
|
var bytes = service.ExportUserRules(UserId, sourceRules);
|
|
var inspection = service.InspectUserImport(new MemoryStream(bytes), OtherUserId);
|
|
var result = service.ImportUser(new MemoryStream(bytes), OtherUserId, UserId);
|
|
|
|
Assert.Equal(1, inspection.UserSettingsCount);
|
|
Assert.False(inspection.ContainsCurrentUser);
|
|
Assert.Equal([UserId], inspection.UserIds);
|
|
Assert.Equal(1, result.UserSettingsImported);
|
|
var imported = store.GetUserRules(OtherUserId);
|
|
Assert.NotNull(imported);
|
|
Assert.True(imported.Enabled);
|
|
Assert.Equal("sv-SE", imported.SortLocale);
|
|
Assert.False(imported.TrustTmdbCollections);
|
|
}
|
|
finally
|
|
{
|
|
TestPaths.DeleteRoot(root);
|
|
}
|
|
}
|
|
|
|
private const string UserId = "11111111111111111111111111111111";
|
|
private const string OtherUserId = "22222222222222222222222222222222";
|
|
}
|