public async Task SubmitDraw_Succeeds_ReturnsSuccess() { // Arrange var serialNumber = SerialNumber.CreateNewSerialNumber(Guid.NewGuid().ToString()); var emailStr = $"{Guid.NewGuid().ToString()}@{Guid.NewGuid().ToString()}.com"; var dto = new SubmitDrawRequest { FirstName = Guid.NewGuid().ToString(), LastName = Guid.NewGuid().ToString(), EmailAddress = emailStr, SerialNumber = serialNumber.Serial, }; var email = new EmailAddress(emailStr); serialNumberRepositoryMock.Setup(x => x.GetSerialNumber(serialNumber.Serial)) .ReturnsAsync(() => serialNumber); drawSubmissionsServiceMock.Setup(x => x.Submit(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <EmailAddress>(), It.IsAny <SerialNumber>())) .ReturnsAsync(() => new DrawSubmission(dto.FirstName, dto.LastName, email, serialNumber)); // Act var response = await sut.SubmitDraw(dto); // Assert Assert.IsInstanceOf <OkObjectResult>(response); var payload = (response as OkObjectResult).Value; var typedPayLoad = payload as DrawSubmissionListingDto; Assert.That(typedPayLoad.FirstName, Is.EqualTo(dto.FirstName)); Assert.That(typedPayLoad.LastName, Is.EqualTo(dto.LastName)); Assert.That(typedPayLoad.SerialNumber, Is.EqualTo(dto.SerialNumber)); Assert.That(typedPayLoad.EmailAddress, Is.EqualTo(dto.EmailAddress)); }
public async Task <IActionResult> SubmitDraw([FromBody] SubmitDrawRequest request) { var serialNumber = await _serialNumberRepository.GetSerialNumber(request.SerialNumber); if (serialNumber == null) { return(BadRequest()); } var submission = await _submissionService.Submit(request.FirstName, request.LastName, new EmailAddress(request.EmailAddress), serialNumber); var dto = submission.ToDto(includeSerial: true); return(new OkObjectResult(dto)); }