ChineseChess/ChineseChess.GUI.Tests.xUnit/SettingsViewModelTests.cs
2021-05-30 22:57:53 +08:00

67 lines
2.6 KiB
C#

using System;
using ChineseChess.GUI.Contracts.Services;
using ChineseChess.GUI.Models;
using ChineseChess.GUI.ViewModels;
using Microsoft.Extensions.Options;
using Moq;
using Xunit;
namespace ChineseChess.GUI.Tests.XUnit
{
public class SettingsViewModelTests
{
public SettingsViewModelTests()
{
}
[Fact]
public void TestSettingsViewModel_SetCurrentTheme()
{
var mockThemeSelectorService = new Mock<IThemeSelectorService>();
mockThemeSelectorService.Setup(mock => mock.GetCurrentTheme()).Returns(AppTheme.Light);
var mockAppConfig = new Mock<IOptions<AppConfig>>();
var mockSystemService = new Mock<ISystemService>();
var mockApplicationInfoService = new Mock<IApplicationInfoService>();
var settingsVm = new SettingsViewModel(mockAppConfig.Object, mockThemeSelectorService.Object, mockSystemService.Object, mockApplicationInfoService.Object);
settingsVm.OnNavigatedTo(null);
Assert.Equal(AppTheme.Light, settingsVm.Theme);
}
[Fact]
public void TestSettingsViewModel_SetCurrentVersion()
{
var mockThemeSelectorService = new Mock<IThemeSelectorService>();
var mockAppConfig = new Mock<IOptions<AppConfig>>();
var mockSystemService = new Mock<ISystemService>();
var mockApplicationInfoService = new Mock<IApplicationInfoService>();
var testVersion = new Version(1, 2, 3, 4);
mockApplicationInfoService.Setup(mock => mock.GetVersion()).Returns(testVersion);
var settingsVm = new SettingsViewModel(mockAppConfig.Object, mockThemeSelectorService.Object, mockSystemService.Object, mockApplicationInfoService.Object);
settingsVm.OnNavigatedTo(null);
Assert.Equal($"ChineseChess.GUI - {testVersion}", settingsVm.VersionDescription);
}
[Fact]
public void TestSettingsViewModel_SetThemeCommand()
{
var mockThemeSelectorService = new Mock<IThemeSelectorService>();
var mockAppConfig = new Mock<IOptions<AppConfig>>();
var mockSystemService = new Mock<ISystemService>();
var mockApplicationInfoService = new Mock<IApplicationInfoService>();
var settingsVm = new SettingsViewModel(mockAppConfig.Object, mockThemeSelectorService.Object, mockSystemService.Object, mockApplicationInfoService.Object);
settingsVm.SetThemeCommand.Execute(AppTheme.Light.ToString());
mockThemeSelectorService.Verify(mock => mock.SetTheme(AppTheme.Light));
}
}
}