qmlnet/samples/PhotoFrame/PhotoFrame.Logic.Tests/UI/ViewModels/ViewModelBaseTest.cs
2018-07-24 20:29:04 -04:00

100 lines
2.8 KiB
C#

using Moq;
using PhotoFrame.Logic.BL;
using PhotoFrame.Logic.Config;
using PhotoFrame.Logic.UI.ViewModels;
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
namespace PhotoFrame.Logic.Tests.UI.ViewModels
{
public class ViewModelBaseTest : ViewModelTestBase
{
public class ViewModelBaseTestClass : ViewModelBase
{
public IFrameController ExposedFrameController
{
get
{
return FrameController;
}
}
public IFrameConfig ExposedFrameConfig
{
get
{
return FrameConfig;
}
}
public ViewModelBaseTestClass(IFrameController frameController, IFrameConfig frameConfig)
: base(frameController, frameConfig)
{
}
};
protected ViewModelBase CreateUUT()
{
ViewModelBase result = new ViewModelBaseTestClass(_FrameControllerMock, _FrameConfigMock);
return result;
}
[Fact]
public void ImageUriGetsSetCorrectly()
{
ExpectImageUri("This is a URI");
var uut = CreateUUT();
Assert.Equal("This is a URI", uut.ImageUri);
}
[Fact]
public void ImageUriChangesGetPropagatedCorrectly()
{
var frameControllerMock = Mock.Get(_FrameControllerMock);
ExpectImageUri("ImageUri");
var uut = CreateUUT();
string catchedImageUri = "";
uut.PropertyChanged += (s, e) =>
{
if(e.PropertyName == "ImageUri")
{
catchedImageUri = ((ViewModelBase)s).ImageUri;
}
};
ExpectImageUri("ImageUri 2");
frameControllerMock.Raise(fc => fc.CurrentPhotoChanged += null, new CurrentPhotoChangedEventArgs());
Assert.Equal("ImageUri 2", catchedImageUri);
}
[Fact]
public void ImageUriChangesDontGetPropagatedAfterStopCorrectly()
{
var frameControllerMock = Mock.Get(_FrameControllerMock);
ExpectImageUri("ImageUri");
var uut = CreateUUT();
string catchedImageUri = null;
uut.PropertyChanged += (s, e) =>
{
if(e.PropertyName == "ImageUri")
{
catchedImageUri = ((ViewModelBase)s).ImageUri;
}
};
ExpectImageUri("ImageUri 2");
uut.Stop();
frameControllerMock.Raise(fc => fc.CurrentPhotoChanged += null, new CurrentPhotoChangedEventArgs());
Assert.Null(catchedImageUri);
}
}
}