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(); mockThemeSelectorService.Setup(mock => mock.GetCurrentTheme()).Returns(AppTheme.Light); var mockAppConfig = new Mock>(); var mockSystemService = new Mock(); var mockApplicationInfoService = new Mock(); 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(); var mockAppConfig = new Mock>(); var mockSystemService = new Mock(); var mockApplicationInfoService = new Mock(); 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(); var mockAppConfig = new Mock>(); var mockSystemService = new Mock(); var mockApplicationInfoService = new Mock(); 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)); } } }