74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
using LehrerApp.Core.Models;
|
|
using LehrerApp.Core.Services;
|
|
using LehrerApp.Desktop.ViewModels.Groups;
|
|
using Xunit;
|
|
|
|
namespace LehrerApp.Desktop.Tests;
|
|
|
|
/// <summary>Tests für die direkte, einlagige Lerngruppen-Navigation.</summary>
|
|
public sealed class GroupListViewModelTests
|
|
{
|
|
private static GroupListViewModel BuildVm(params LearningGroup[] groups) =>
|
|
new(new FakeGroups([.. groups]), new FakeSubjects([]), new SchoolYearService());
|
|
|
|
[Fact]
|
|
public void Gruppenkarte_OeffnetDirektDieUebersicht()
|
|
{
|
|
var group = CurrentGroup("9c");
|
|
var vm = BuildVm(group);
|
|
Guid? openedId = null;
|
|
int? openedTab = null;
|
|
vm.OnNavigateToDetail = (id, tab) => { openedId = id; openedTab = tab; };
|
|
|
|
Assert.Single(vm.Groups).OpenCommand.Execute(null);
|
|
|
|
Assert.Equal(group.Id, openedId);
|
|
Assert.Equal(0, openedTab);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Verwaltungsmenue_BearbeitetDieGewaehlteKarteOhneZwischenauswahl()
|
|
{
|
|
var first = CurrentGroup("9a");
|
|
var second = CurrentGroup("9b");
|
|
var vm = BuildVm(first, second);
|
|
Guid? editedId = null;
|
|
vm.OnEditGroup = id => { editedId = id; return Task.CompletedTask; };
|
|
var secondItem = vm.Groups.Single(x => x.Id == second.Id);
|
|
|
|
await secondItem.EditCommand.ExecuteAsync(null);
|
|
|
|
Assert.Equal(second.Id, editedId);
|
|
}
|
|
|
|
[Fact]
|
|
public void Suche_FiltertWeiterhinNachGruppenname()
|
|
{
|
|
var vm = BuildVm(CurrentGroup("9 Chemie"), CurrentGroup("10 Mathematik"));
|
|
|
|
vm.SearchText = "Chemie";
|
|
|
|
Assert.Equal("9 Chemie", Assert.Single(vm.Groups).Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void Archivieren_WirktAufDieKarteUndEntferntSieAusDerAktivenListe()
|
|
{
|
|
var group = CurrentGroup("9c");
|
|
var vm = BuildVm(group);
|
|
var item = Assert.Single(vm.Groups);
|
|
|
|
item.ToggleArchiveCommand.Execute(null);
|
|
|
|
Assert.False(group.IsActive);
|
|
Assert.Empty(vm.Groups);
|
|
}
|
|
|
|
private static LearningGroup CurrentGroup(string name) => new()
|
|
{
|
|
Name = name,
|
|
SchoolYear = new SchoolYearService().CurrentSchoolYear(),
|
|
IsActive = true,
|
|
};
|
|
}
|