Files
mission-control/test/MissionControl.Server.Tests/Endpoints/Missions/CreateMissionTests.cs
T
2026-07-27 19:21:52 +01:00

43 lines
1.3 KiB
C#

using FastEndpoints;
using Microsoft.EntityFrameworkCore;
using MissionControl.Domain.Entities;
using MissionControl.Server.Endpoints.Missions;
using Shouldly;
namespace MissionControl.Server.Tests.Endpoints.Missions;
public class CreateMissionTests
{
[Fact]
public async Task Creates_a_planned_mission_and_saves_it()
{
using var database = new TestDatabase();
var endpoint = Factory.Create<CreateMission>(database.Context);
var request = new CreateMissionRequest
{
Name = "Orbital Bloom",
Description = "Grow the first orchard in orbit.",
};
await endpoint.HandleAsync(request, CancellationToken.None);
var saved = await database.Context.Missions.SingleAsync();
saved.Name.ShouldBe("Orbital Bloom");
saved.Status.ShouldBe(MissionStatus.Planned);
endpoint.Response.Id.ShouldBe(saved.Id);
}
[Theory]
[InlineData("")]
[InlineData(" ")]
public void Rejects_a_blank_mission_name(string name)
{
var validator = new CreateMissionRequestValidator();
var result = validator.Validate(new CreateMissionRequest { Name = name });
result.IsValid.ShouldBeFalse();
result.Errors.ShouldContain(e => e.PropertyName == nameof(CreateMissionRequest.Name));
}
}