82 lines
2.4 KiB
C#
82 lines
2.4 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(null)]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
public void Rejects_a_blank_or_null_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));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(101)]
|
|
[InlineData(567)]
|
|
[InlineData(1000)]
|
|
[InlineData(10000)]
|
|
public void Rejects_a_too_long_mission_name(int length)
|
|
{
|
|
var validator = new CreateMissionRequestValidator();
|
|
|
|
var name = new string('a', length);
|
|
|
|
var result = validator.Validate(new CreateMissionRequest { Name = name });
|
|
|
|
result.IsValid.ShouldBeFalse();
|
|
result.Errors.ShouldContain(e => e.PropertyName == nameof(CreateMissionRequest.Name));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(501)]
|
|
[InlineData(567)]
|
|
[InlineData(1000)]
|
|
[InlineData(10000)]
|
|
public void Rejects_a_too_long_mission_description(int length)
|
|
{
|
|
var validator = new CreateMissionRequestValidator();
|
|
|
|
var description = new string('a', length);
|
|
|
|
var result = validator.Validate(
|
|
new CreateMissionRequest { Name = "name", Description = description }
|
|
);
|
|
|
|
result.IsValid.ShouldBeFalse();
|
|
result.Errors.ShouldContain(e =>
|
|
e.PropertyName == nameof(CreateMissionRequest.Description)
|
|
);
|
|
}
|
|
}
|