public async Task Index_WhenCalled_ReturnsAContentResultWithAWelcomeMessage()
        {
            // Arrange
            var controller = new MailController(null);

            // Act
            var result = await controller.Index();

            // Assert
            result.Should().BeOfType <ContentResult>().Which.Content.Should().Be("Welcome to the backend mail API");
        }
        public async Task IndexPost_WhenModelStateIsValid_ReturnsMailResponseModel()
        {
            // Arrange
            var mockMailService = new Mock <IMailService>();

            mockMailService.Setup(m => m.Send(It.IsAny <MailModel>())).ReturnsAsync(() => new MailResponseModel());
            var mailController = new MailController(mockMailService.Object);
            var mailModel      = new MailModel();

            // Act
            var result = await mailController.Index(mailModel);

            // Assert
            result.Should().BeOfType <OkObjectResult>().Which.Value.Should().BeOfType <MailResponseModel>();
        }
        public async Task IndexPost_WhenModelStateIsInvalid_ReturnsBadRequestResult()
        {
            // Arrange
            var mockMailService = new Mock <IMailService>();
            var mailController  = new MailController(mockMailService.Object);

            mailController.ModelState.AddModelError("From", "Required");
            var mailModel = new MailModel();

            // Act
            var result = await mailController.Index(mailModel);

            // Assert
            result.Should().BeOfType <BadRequestObjectResult>().Which.Value.Should().BeOfType <SerializableError>();
        }