diff --git a/test/MissionControl.Server.Tests/Endpoints/Missions/MissionLaunches/CreateMissionLaunchTests.cs b/test/MissionControl.Server.Tests/Endpoints/Missions/MissionLaunches/CreateMissionLaunchTests.cs index 7be69c9..51be3f5 100644 --- a/test/MissionControl.Server.Tests/Endpoints/Missions/MissionLaunches/CreateMissionLaunchTests.cs +++ b/test/MissionControl.Server.Tests/Endpoints/Missions/MissionLaunches/CreateMissionLaunchTests.cs @@ -44,4 +44,44 @@ public class CreateMissionLaunchTests e.PropertyName == nameof(CreateMissionLaunchRequest.MissionId) ); } + + [Fact] + public async Task Creates_mission_launch_when_request_is_valid_and_mission_exists() + { + var utcNow = DateTimeOffset.UtcNow; + + using var database = new TestDatabase(); + var mission = await createMission(database); + + var endpoint = Factory.Create(database.Context); + var request = new CreateMissionLaunchRequest + { + MissionId = mission.Id, + ScheduledFor = utcNow, + Status = MissionLaunchStatus.Cancelled, + }; + + await endpoint.HandleAsync(request, CancellationToken.None); + + var response = endpoint.Response; + + endpoint.HttpContext.Response.StatusCode.ShouldBe(StatusCodes.Status200OK); + response.Id.ShouldNotBe(Guid.Empty); + response.ScheduledFor.ShouldBe(utcNow); + response.Status.ShouldBe(MissionLaunchStatus.Cancelled); + } + + private static async Task createMission(TestDatabase database) + { + var mission = new Mission + { + Name = "new mission", + Description = "mission description", + }; + + database.Context.Missions.Add(mission); + await database.Context.SaveChangesAsync(); + + return mission; + } }