public async Task SubmitSurvey_ValidId_ReturnsOk() { var survey = RandomEntitiesGenerator.PredefinedSurveys.First(); var form = new Form { SurveyId = survey.Id, UserName = "******", ChoicesMade = new Dictionary <string, bool> { ["1"] = false, ["2"] = false } }; var mockRepository = Substitute.For <ISurveyRepository>(); mockRepository.SubmitSurveyAsync(form).Returns(form); var controller = new SurveyController(mockRepository); var response = await controller.SubmitSurvey(form); response.Should().NotBeNull(); response.Should().BeOfType <OkObjectResult>() .Which.StatusCode.Should().Be((int)HttpStatusCode.OK); var ok = response as OkObjectResult; ok.Value.Should().BeAssignableTo <Form>(); ok.Value.Should().BeEquivalentTo(form, opt => opt.IgnoringCyclicReferences()); await mockRepository.Received().SubmitSurveyAsync(form); }
public async Task SubmitSurvey_InvalidId_ReturnsError() { var form = new Form { SurveyId = "123", UserName = "******", ChoicesMade = new Dictionary <string, bool> { ["1"] = false, ["2"] = false } }; var error = Error.New($"Survey was not found by {form.SurveyId}"); var mockRepository = Substitute.For <ISurveyRepository>(); mockRepository.SubmitSurveyAsync(form).Returns(error); var controller = new SurveyController(mockRepository); var response = await controller.SubmitSurvey(form); response.Should().NotBeNull(); response.Should().BeOfType <ObjectResult>() .Which.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError); var ok = response as ObjectResult; ok.Value.Should().BeAssignableTo <Error>(); ok.Value.Should().BeEquivalentTo(error, opt => opt.IgnoringCyclicReferences()); await mockRepository.Received().SubmitSurveyAsync(form); }
public void SurveyController_SubmitSurvey_SavesRecordAndReturnsRedirect() { //Arrange Mock <ISurveyDAO> mockISurveyDAO = new Mock <ISurveyDAO>(); Mock <IParkDAO> mockIParkDAO = new Mock <IParkDAO>(); SurveyController controller = new SurveyController(mockISurveyDAO.Object, mockIParkDAO.Object); SurveyEntry parameter = new SurveyEntry { ParkCode = ".NET", EmailAddress = "*****@*****.**", State = "Paris", ActivityLevel = "Potatoe" }; //Act RedirectToRouteResult result = controller.SubmitSurvey(parameter) as RedirectToRouteResult; //Assert Assert.IsNotNull(result); Assert.AreEqual("Rankings", result.RouteValues["action"]); mockISurveyDAO.Verify(m => m.InsertSurvey(parameter)); //verify that our test called InsertSurvey on the Mock ISurveyDAO }