|
|
|
@ -1,3 +1,4 @@ |
|
|
|
using System.Reactive.Disposables; |
|
|
|
using Avalonia.UnitTests; |
|
|
|
using ReactiveUI; |
|
|
|
using Splat; |
|
|
|
@ -7,7 +8,20 @@ namespace Avalonia.ReactiveUI.UnitTests |
|
|
|
{ |
|
|
|
public class ReactiveUserControlTest |
|
|
|
{ |
|
|
|
public class ExampleViewModel : ReactiveObject { } |
|
|
|
public class ExampleViewModel : ReactiveObject, IActivatableViewModel |
|
|
|
{ |
|
|
|
public bool IsActive { get; private set; } |
|
|
|
|
|
|
|
public ViewModelActivator Activator { get; } = new ViewModelActivator(); |
|
|
|
|
|
|
|
public ExampleViewModel() => this.WhenActivated(disposables => |
|
|
|
{ |
|
|
|
IsActive = true; |
|
|
|
Disposable |
|
|
|
.Create(() => IsActive = false) |
|
|
|
.DisposeWith(disposables); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public class ExampleView : ReactiveUserControl<ExampleViewModel> { } |
|
|
|
|
|
|
|
@ -44,5 +58,47 @@ namespace Avalonia.ReactiveUI.UnitTests |
|
|
|
Assert.Null(view.ViewModel); |
|
|
|
Assert.Null(view.DataContext); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Start_With_NotNull_Activated_ViewModel() |
|
|
|
{ |
|
|
|
var root = new TestRoot(); |
|
|
|
var view = new ExampleView {ViewModel = new ExampleViewModel()}; |
|
|
|
|
|
|
|
Assert.False(view.ViewModel.IsActive); |
|
|
|
|
|
|
|
root.Child = view; |
|
|
|
|
|
|
|
Assert.NotNull(view.ViewModel); |
|
|
|
Assert.NotNull(view.DataContext); |
|
|
|
Assert.True(view.ViewModel.IsActive); |
|
|
|
|
|
|
|
root.Child = null; |
|
|
|
|
|
|
|
Assert.NotNull(view.ViewModel); |
|
|
|
Assert.NotNull(view.DataContext); |
|
|
|
Assert.False(view.ViewModel.IsActive); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Start_With_NotNull_Activated_DataContext() |
|
|
|
{ |
|
|
|
var root = new TestRoot(); |
|
|
|
var view = new ExampleView {DataContext = new ExampleViewModel()}; |
|
|
|
|
|
|
|
Assert.False(view.ViewModel.IsActive); |
|
|
|
|
|
|
|
root.Child = view; |
|
|
|
|
|
|
|
Assert.NotNull(view.ViewModel); |
|
|
|
Assert.NotNull(view.DataContext); |
|
|
|
Assert.True(view.ViewModel.IsActive); |
|
|
|
|
|
|
|
root.Child = null; |
|
|
|
|
|
|
|
Assert.NotNull(view.ViewModel); |
|
|
|
Assert.NotNull(view.DataContext); |
|
|
|
Assert.False(view.ViewModel.IsActive); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|