You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
1 year ago
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using NSubstitute;
|
||
|
using NSubstitute.Extensions;
|
||
|
using Semver;
|
||
|
using StabilityMatrix.Avalonia;
|
||
|
using StabilityMatrix.Avalonia.ViewModels.Dialogs;
|
||
|
using StabilityMatrix.Core.Helper;
|
||
|
using StabilityMatrix.Core.Models.Update;
|
||
|
using StabilityMatrix.Core.Services;
|
||
|
using StabilityMatrix.Core.Updater;
|
||
|
using StabilityMatrix.UITests;
|
||
|
|
||
|
[assembly: AvaloniaTestApplication(typeof(TestAppBuilder))]
|
||
|
|
||
|
namespace StabilityMatrix.UITests;
|
||
|
|
||
|
public static class TestAppBuilder
|
||
|
{
|
||
|
public static AppBuilder BuildAvaloniaApp()
|
||
|
{
|
||
|
ConfigureGlobals();
|
||
|
|
||
|
Program.SetupAvaloniaApp();
|
||
|
|
||
|
App.BeforeBuildServiceProvider += (_, x) => ConfigureAppServices(x);
|
||
|
|
||
|
return AppBuilder
|
||
|
.Configure<App>()
|
||
|
.UseSkia()
|
||
|
.UseHeadless(new AvaloniaHeadlessPlatformOptions { UseHeadlessDrawing = false });
|
||
|
}
|
||
|
|
||
|
private static void ConfigureGlobals()
|
||
|
{
|
||
|
var tempDir = TempDirFixture.ModuleTempDir;
|
||
|
var globalSettings = Path.Combine(tempDir, "AppDataHome");
|
||
|
|
||
|
Compat.SetAppDataHome(globalSettings);
|
||
|
}
|
||
|
|
||
|
private static void ConfigureAppServices(IServiceCollection serviceCollection)
|
||
|
{
|
||
|
// ISettingsManager
|
||
|
var settingsManager = Substitute.ForPartsOf<SettingsManager>();
|
||
|
serviceCollection.AddSingleton<ISettingsManager>(settingsManager);
|
||
|
|
||
|
// IUpdateHelper
|
||
|
var mockUpdateInfo = new UpdateInfo(
|
||
|
SemVersion.Parse("2.999.0"),
|
||
|
DateTimeOffset.UnixEpoch,
|
||
|
UpdateChannel.Stable,
|
||
|
UpdateType.Normal,
|
||
|
"https://example.org",
|
||
|
"https://example.org",
|
||
|
"46e11a5216c55d4c9d3c54385f62f3e1022537ae191615237f05e06d6f8690d0",
|
||
|
"IX5/CCXWJQG0oGkYWVnuF34gTqF/dJSrDrUd6fuNMYnncL39G3HSvkXrjvJvR18MA2rQNB5z13h3/qBSf9c7DA=="
|
||
|
);
|
||
|
|
||
|
var updateHelper = Substitute.For<IUpdateHelper>();
|
||
|
updateHelper
|
||
|
.Configure()
|
||
|
.StartCheckingForUpdates()
|
||
|
.Returns(Task.CompletedTask)
|
||
|
.AndDoes(_ => EventManager.Instance.OnUpdateAvailable(mockUpdateInfo));
|
||
|
|
||
|
serviceCollection.AddSingleton(updateHelper);
|
||
|
|
||
|
// UpdateViewModel
|
||
|
var updateViewModel = Substitute.ForPartsOf<UpdateViewModel>(
|
||
|
settingsManager,
|
||
|
null,
|
||
|
updateHelper
|
||
|
);
|
||
|
updateViewModel.Configure().GetReleaseNotes("").Returns("Test");
|
||
|
|
||
|
serviceCollection.AddSingleton(updateViewModel);
|
||
|
}
|
||
|
}
|