feat: add seating plans for learning groups
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using LehrerApp.Core.Models;
|
||||
using LehrerApp.Desktop.ViewModels.Groups;
|
||||
using Xunit;
|
||||
|
||||
namespace LehrerApp.Desktop.Tests;
|
||||
|
||||
public sealed class SeatingPlanViewModelTests
|
||||
{
|
||||
[Fact]
|
||||
public void AuswahlEinesBereitsZugeordnetenSchuelers_VerschiebtIhnAufDenNeuenPlatz()
|
||||
{
|
||||
var groupId = Guid.NewGuid();
|
||||
var student = new Student { FirstName = "Anna", LastName = "Beispiel" };
|
||||
var students = new FakeStudents([student]);
|
||||
var memberships = new FakeMemberships([
|
||||
new GroupMembership { GroupId = groupId, StudentId = student.Id },
|
||||
]);
|
||||
var plan = new SeatingPlan
|
||||
{
|
||||
GroupId = groupId,
|
||||
Name = "Standard",
|
||||
Rows = 1,
|
||||
Columns = 2,
|
||||
Assignments = [new SeatAssignment { Row = 0, Column = 0, StudentId = student.Id }],
|
||||
};
|
||||
var plans = new FakeSeatingPlans([plan]);
|
||||
var vm = new SeatingPlanTabViewModel(plans, students, memberships);
|
||||
vm.Initialize(groupId, isReadOnly: false);
|
||||
|
||||
vm.Seats[1].SelectedOption = vm.StudentOptions.Single(o => o.StudentId == student.Id);
|
||||
|
||||
Assert.Null(vm.Seats[0].SelectedOption.StudentId);
|
||||
var assignment = Assert.Single(plans.GetById(plan.Id)!.Assignments);
|
||||
Assert.Equal((0, 1, student.Id), (assignment.Row, assignment.Column, assignment.StudentId));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ArchivierteGruppe_DeaktiviertSitzplatzbearbeitung()
|
||||
{
|
||||
var groupId = Guid.NewGuid();
|
||||
var plan = new SeatingPlan { GroupId = groupId, Name = "Standard", Rows = 1, Columns = 1 };
|
||||
var vm = new SeatingPlanTabViewModel(
|
||||
new FakeSeatingPlans([plan]), new FakeStudents([]), new FakeMemberships([]));
|
||||
|
||||
vm.Initialize(groupId, isReadOnly: true);
|
||||
|
||||
Assert.False(vm.IsEditable);
|
||||
Assert.False(vm.Seats.Single().CanEdit);
|
||||
Assert.False(vm.AddPlanCommand.CanExecute(null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user