Example #1
0
        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);
        }
Example #2
0
        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
        }