Skip to content

Commit

Permalink
[MainViewModel] Add mod enabled/disabled checkbox.
Browse files Browse the repository at this point in the history
  • Loading branch information
Aleksbgbg committed Apr 12, 2019
1 parent 19f5be3 commit 51f12b5
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 3 deletions.
23 changes: 22 additions & 1 deletion Instant Training UI.Tests/ViewModels/MainViewModelTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace Instant.Training.UI.Tests.ViewModels
{
using Instant.Training.UI.Services.Interfaces;
using Instant.Training.UI.ViewModels;
using Instant.Training.UI.ViewModels.Interfaces;

Expand All @@ -9,21 +10,41 @@

public class MainViewModelTests
{
private readonly Mock<IRconService> _rconServiceMock;

private readonly Mock<IArenaDisplayViewModel> _arenaDisplayViewModelMock;

private readonly MainViewModel _mainViewModel;

public MainViewModelTests()
{
_rconServiceMock = new Mock<IRconService>();

_arenaDisplayViewModelMock = new Mock<IArenaDisplayViewModel>();

_mainViewModel = new MainViewModel(_arenaDisplayViewModelMock.Object);
_mainViewModel = new MainViewModel(_arenaDisplayViewModelMock.Object, _rconServiceMock.Object);
}

[Fact]
public void TestArenaDisplayViewModelAssigned()
{
Assert.Equal(_arenaDisplayViewModelMock.Object, _mainViewModel.ArenaDisplayViewModel);
}

[Fact]
public void TestInstantTrainingEnabledByDefault()
{
Assert.True(_mainViewModel.EnableInstantTraining);
}

[Fact]
public void TestInstantTrainingToggleCallsRconService()
{
const bool modEnabled = false;

_mainViewModel.EnableInstantTraining = modEnabled;

_rconServiceMock.Verify(rconService => rconService.ToggleModEnabled(modEnabled));
}
}
}
22 changes: 21 additions & 1 deletion Instant Training UI/ViewModels/MainViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,34 @@
namespace Instant.Training.UI.ViewModels
{
using Instant.Training.UI.Services.Interfaces;
using Instant.Training.UI.ViewModels.Interfaces;

public class MainViewModel : ViewModelBase, IMainViewModel
{
public MainViewModel(IArenaDisplayViewModel arenaDisplayViewModel)
private readonly IRconService _rconService;

public MainViewModel(IArenaDisplayViewModel arenaDisplayViewModel, IRconService rconService)
{
ArenaDisplayViewModel = arenaDisplayViewModel;
_rconService = rconService;
}

public IArenaDisplayViewModel ArenaDisplayViewModel { get; }

private bool _enableInstantTraining = true;
public bool EnableInstantTraining
{
get => _enableInstantTraining;

set
{
if (_enableInstantTraining == value) return;

_enableInstantTraining = value;
NotifyOfPropertyChange(nameof(EnableInstantTraining));

_rconService.ToggleModEnabled(_enableInstantTraining);
}
}
}
}
7 changes: 6 additions & 1 deletion Instant Training UI/Views/MainView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DataContext="{d:DesignInstance ViewModels:MainViewModel}"
mc:Ignorable="d">
<ContentControl Caliburn:View.Model="{Binding ArenaDisplayViewModel, Mode=OneTime}"/>
<DockPanel>
<CheckBox Content="Enable Instant Training"
DockPanel.Dock="Top"
IsChecked="{Binding EnableInstantTraining}"/>
<ContentControl Caliburn:View.Model="{Binding ArenaDisplayViewModel, Mode=OneTime}"/>
</DockPanel>
</UserControl>

0 comments on commit 51f12b5

Please sign in to comment.