public static async Task CreateBuyerAsync_CreateBuyerService_CreateAsync_CalledOnce() { var context = UsersControllerTestContext.Setup(); var controller = context.Controller; var organisationId = Guid.NewGuid(); var createUserRequestViewModel = new CreateBuyerRequestModel { FirstName = "Bob", LastName = "Smith", PhoneNumber = "98654321", EmailAddress = "*****@*****.**", }; await controller.CreateBuyerAsync(organisationId, createUserRequestViewModel); var expected = CreateBuyerRequestBuilder .Create() .WithFirstName(createUserRequestViewModel.FirstName) .WithLastName(createUserRequestViewModel.LastName) .WithPhoneNumber(createUserRequestViewModel.PhoneNumber) .WithEmailAddress(createUserRequestViewModel.EmailAddress) .WithPrimaryOrganisationId(organisationId) .Build(); context.CreateBuyerServiceMock.Verify(s => s.CreateAsync(expected)); }
public static async Task CreateBuyerAsync_CreateBuyerFailureResult_ReturnsBadRequest() { var errors = new List <ErrorDetails> { new("TestErrorId", "TestField") }; var context = UsersControllerTestContext.Setup(); context.CreateBuyerResult = Result.Failure <string>(errors); var organisationId = Guid.NewGuid(); var createUserRequestViewModel = new CreateBuyerRequestModel(); var response = await context.Controller.CreateBuyerAsync(organisationId, createUserRequestViewModel); response.Should().BeOfType <ActionResult <CreateBuyerResponseModel> >(); var actual = response.Result; var expectedErrors = new List <ErrorMessageViewModel> { new("TestErrorId", "TestField") }; var expected = new BadRequestObjectResult(new CreateBuyerResponseModel { Errors = expectedErrors }); actual.Should().BeEquivalentTo(expected); }
public async Task <ActionResult <CreateBuyerResponseModel> > CreateBuyerAsync(Guid organisationId, CreateBuyerRequestModel createBuyerRequest) { if (createBuyerRequest is null) { throw new ArgumentNullException(nameof(createBuyerRequest)); } var response = new CreateBuyerResponseModel(); var result = await createBuyerService.CreateAsync(new CreateBuyerRequest( organisationId, createBuyerRequest.FirstName, createBuyerRequest.LastName, createBuyerRequest.PhoneNumber, createBuyerRequest.EmailAddress)); if (result.IsSuccess) { response.UserId = result.Value; return(CreatedAtAction(nameof(GetUserByIdAsync).TrimAsync(), null, new { userId = result.Value }, response)); } response.Errors = result.Errors.Select(d => new ErrorMessageViewModel(d.Id, d.Field)); return(BadRequest(response)); }