using LehrerApp.Core.Models; using LehrerApp.Desktop.ViewModels.Students; using Xunit; namespace LehrerApp.Desktop.Tests; public class StudentListViewModelTests { private readonly Student _anna = new() { FirstName = "Anna", LastName = "Beispiel", Gender = Gender.W }; private readonly Student _ben = new() { FirstName = "Ben", LastName = "Muster", Gender = Gender.M }; private readonly LearningGroup _group = new() { Name = "Mathematik 7a" }; [Fact] public void SucheFindetSchuelerWeiterhinUeberNamen() { var vm = BuildViewModel(); vm.SearchText = "Anna"; Assert.Single(vm.Students); Assert.Equal(_anna.Id, vm.Students[0].Id); } [Fact] public void SucheFindetSchuelerUeberLerngruppe() { var vm = BuildViewModel(); vm.SearchText = "7a"; Assert.Single(vm.Students); Assert.Equal(_ben.Id, vm.Students[0].Id); } [Fact] public void LeereSucheZeigtAlleSchueler() { var vm = BuildViewModel(); vm.SearchText = " "; Assert.Equal(2, vm.Students.Count); } [Fact] public void ListeneintraegeZeigenAvatarAusGespeichertemGeschlecht() { var vm = BuildViewModel(); Assert.Equal("W", vm.Students.Single(s => s.Id == _anna.Id).AvatarLabel); Assert.Equal("M", vm.Students.Single(s => s.Id == _ben.Id).AvatarLabel); } [Fact] public void SucheOhneTreffer_LiefertHilfreichenLeerzustand() { var vm = BuildViewModel(); vm.SearchText = "nicht vorhanden"; Assert.True(vm.HasNoStudents); Assert.False(vm.HasStudents); Assert.Contains("Suche", vm.EmptyListMessage); } private StudentListViewModel BuildViewModel() => new( new FakeStudents([_anna, _ben]), new FakeGroups([_group]), new FakeMemberships([ new GroupMembership { StudentId = _ben.Id, GroupId = _group.Id }, ])); }