public void delete_returns_204_no_content_on_success(
            Guid ticketId,
            TicketsController sut)
        {
            var actual = sut.Delete(ticketId);

            actual.Should().BeOfType<ResponseMessageResult>()
                .Which.Response.StatusCode.Should().Be(HttpStatusCode.NoContent);
        }
        public void delete_returns_403_unauthorized_if_no_auth_header(
            Guid ticketId,
            [Frozen]Mock<ICommand<TicketReference>> deleteCmd,
            TicketsController sut)
        {
            deleteCmd.Setup(cmd => cmd.Execute(It.IsAny<Envelope<TicketReference>>())).Throws<UnauthorizedAccessException>();

            var actual = sut.Delete(ticketId);

            actual.Should().BeOfType<UnauthorizedResult>("because user name query returned nothing");
        }
        public void delete_returns_412_precondition_failed_on_version_conflict(
            Guid ticketId,
            OptimisticConcurrencyException exception,
            [Frozen]Mock<ICommand<TicketReference>> deleteCmd,
            TicketsController sut)
        {
            deleteCmd.Setup(cmd => cmd.Execute(It.IsAny<Envelope<TicketReference>>())).Throws(exception);

            var actual = sut.Delete(ticketId);

            actual.Should().BeOfType<ResponseMessageResult>()
                .Which.Response.StatusCode.Should().Be(HttpStatusCode.PreconditionFailed);
        }