Browse Source

Fix failing unit tests

pull/2672/head
artyom 7 years ago
parent
commit
da467dd647
  1. 49
      tests/Avalonia.ReactiveUI.UnitTests/AutoSuspendHelperTest.cs

49
tests/Avalonia.ReactiveUI.UnitTests/AutoSuspendHelperTest.cs

@ -4,40 +4,53 @@
using System; using System;
using System.Reactive.Concurrency; using System.Reactive.Concurrency;
using System.Reactive.Disposables; using System.Reactive.Disposables;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Reactive;
using System.Reactive.Subjects;
using System.Reactive.Linq;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Threading;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Rendering; using Avalonia.Rendering;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.UnitTests; using Avalonia.UnitTests;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
using Avalonia; using Avalonia;
using ReactiveUI; using ReactiveUI;
using DynamicData; using DynamicData;
using Xunit; using Xunit;
using Splat; using Splat;
using Avalonia.Markup.Xaml;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Reactive;
using Avalonia.ReactiveUI;
using System.Reactive.Subjects;
using System.Reactive.Linq;
using System.Collections.Generic;
using System.Threading;
namespace Avalonia.ReactiveUI.UnitTests namespace Avalonia.ReactiveUI.UnitTests
{ {
public class AutoSuspendHelperTest public class AutoSuspendHelperTest
{ {
[DataContract]
public class AppState
{
[DataMember]
public string Example { get; set; }
}
[Fact] [Fact]
public void AutoSuspendHelper_Should_Immediately_Fire_IsLaunchingNew() public void AutoSuspendHelper_Should_Immediately_Fire_IsLaunchingNew()
{ {
using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) using (UnitTestApplication.Start(TestServices.MockWindowingPlatform))
using (var lifetime = new ClassicDesktopStyleApplicationLifetime(Application.Current))
{ {
var isLaunchingReceived = false; var isLaunchingReceived = false;
var application = AvaloniaLocator.Current.GetService<Application>(); var application = AvaloniaLocator.Current.GetService<Application>();
var suspension = new AutoSuspendHelper(application.ApplicationLifetime); application.ApplicationLifetime = lifetime;
// Initialize ReactiveUI Suspension as in real-world scenario.
var suspension = new AutoSuspendHelper(application.ApplicationLifetime);
RxApp.SuspensionHost.IsLaunchingNew.Subscribe(_ => isLaunchingReceived = true); RxApp.SuspensionHost.IsLaunchingNew.Subscribe(_ => isLaunchingReceived = true);
suspension.OnFrameworkInitializationCompleted(); suspension.OnFrameworkInitializationCompleted();
Assert.True(isLaunchingReceived); Assert.True(isLaunchingReceived);
} }
} }
@ -45,21 +58,23 @@ namespace Avalonia.ReactiveUI.UnitTests
[Fact] [Fact]
public void ShouldPersistState_Should_Fire_On_App_Exit_When_SuspensionDriver_Is_Initialized() public void ShouldPersistState_Should_Fire_On_App_Exit_When_SuspensionDriver_Is_Initialized()
{ {
using (UnitTestApplication.Start(TestServices.MockWindowingPlatform)) using (UnitTestApplication.Start(TestServices.MockWindowingPlatform))
using (var lifetime = new ClassicDesktopStyleApplicationLifetime(Application.Current))
{ {
var shouldPersistReceived = false; var shouldPersistReceived = false;
var application = AvaloniaLocator.Current.GetService<Application>(); var application = AvaloniaLocator.Current.GetService<Application>();
var suspension = new AutoSuspendHelper(application.ApplicationLifetime); application.ApplicationLifetime = lifetime;
RxApp.SuspensionHost.SetupDefaultSuspendResume(new DummySuspensionDriver()); // Initialize ReactiveUI Suspension as in real-world scenario.
var suspension = new AutoSuspendHelper(application.ApplicationLifetime);
RxApp.SuspensionHost.CreateNewAppState = () => new AppState { Example = "Foo" };
RxApp.SuspensionHost.ShouldPersistState.Subscribe(_ => shouldPersistReceived = true); RxApp.SuspensionHost.ShouldPersistState.Subscribe(_ => shouldPersistReceived = true);
RxApp.SuspensionHost.SetupDefaultSuspendResume(new DummySuspensionDriver());
suspension.OnFrameworkInitializationCompleted(); suspension.OnFrameworkInitializationCompleted();
var source = new CancellationTokenSource(); lifetime.Shutdown();
source.CancelAfter(TimeSpan.FromMilliseconds(100));
application.Run(source.Token);
Assert.True(shouldPersistReceived); Assert.True(shouldPersistReceived);
Assert.Equal("Foo", RxApp.SuspensionHost.GetAppState<AppState>().Example);
} }
} }
} }

Loading…
Cancel
Save