public void CreateAnswerRedirectsAsync()
        {
            DbContextOptions <FunemploymentDbContext> options = new DbContextOptionsBuilder <FunemploymentDbContext>()
                                                                .UseInMemoryDatabase("CreateAnswerRedirect")
                                                                .Options;

            using (FunemploymentDbContext context = new FunemploymentDbContext(options))
            {
                TechnicalController tc = new TechnicalController(context);

                Player player = new Player();
                player.Username = "******";
                player.Location = "testLocation";
                player.About    = "testAbout";

                Answer answer = new Answer();



                CreateAnswerViewModel cavm = new CreateAnswerViewModel();

                try
                {
                    var x = tc.CreateAnswer(cavm);
                }
                catch (Exception ex)
                {
                    Assert.True(ex is NullReferenceException);
                }
            }
        }
        public void CreateAnswerWorks()
        {
            DbContextOptions <FunemploymentDbContext> options = new DbContextOptionsBuilder <FunemploymentDbContext>()
                                                                .UseInMemoryDatabase("TechnicalndexRedirects")
                                                                .Options;

            using (FunemploymentDbContext context = new FunemploymentDbContext(options))
            {
                TechnicalController tc = new TechnicalController(context);

                Player player = new Player();
                player.Username = "******";
                player.Location = "testLocation";
                player.About    = "testAbout";

                Answer answer = new Answer();
                answer.Content = "testContent";
                answer.BQID    = 100;


                var x = tc.CreateAnswer(100);



                Assert.Equal("testContent", answer.Content);
            }
        }
        public void IndexGetTest(bool isContentAuthoringSite, bool hasValidSession, ContactOption?contactOption, bool expectToBeRedirected)
        {
            //Set up
            A.CallTo(() => fakeWebAppContext.IsContentAuthoringSite).Returns(isContentAuthoringSite);

            if (hasValidSession)
            {
                if (contactOption is null)
                {
                    A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs()
                    {
                        ContactUsOption = new ContactUsOption()
                    });
                }
                else
                {
                    A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs()
                    {
                        ContactUsOption = new ContactUsOption()
                        {
                            ContactOptionType = (ContactOption)contactOption
                        }
                    });
                }
            }
            else
            {
                A.CallTo(() => fakeSessionStorage.Get()).Returns(null);
            }

            var technicalController = new TechnicalController(fakeApplicationLogger, fakeMapper, fakeWebAppContext, fakeSessionStorage);

            //Act
            var indexMethodCallResult = technicalController.WithCallTo(c => c.Index());

            //Assert
            if (expectToBeRedirected)
            {
                indexMethodCallResult.ShouldRedirectTo(technicalController.ContactOptionPage);
            }
            else
            {
                indexMethodCallResult.ShouldRenderDefaultView()
                .WithModel <TechnicalFeedbackViewModel>(vm =>
                {
                    vm.CharacterLimit.Should().Be(technicalController.CharacterLimit);
                    vm.MessageLabel.Should().Be(technicalController.MessageLabel);
                    vm.PageIntroduction.Should().Be(technicalController.PageIntroduction);
                    vm.PersonalInformation.Should().Be(technicalController.PersonalInformation);
                    vm.Title.Should().Be(technicalController.Title);
                    vm.NextPage.Should().Be(technicalController.NextPage);
                });
            }
        }
        public void SubmitTests(bool validSubmission)
        {
            //Set up
            var technicalController        = new TechnicalController(fakeApplicationLogger, fakeMapper, fakeWebAppContext, fakeSessionStorage);
            var technicalFeedbackViewModel = new TechnicalFeedbackViewModel()
            {
                Message = "Dummy message"
            };
            var dummyErrorKey = "dummyErrorKey";

            //if its not valid fake an error
            if (!validSubmission)
            {
                technicalController.ModelState.AddModelError(dummyErrorKey, "dummyErrorMessage");
            }

            A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs());
            A.CallTo(() => fakeMapper.Map(A <TechnicalFeedbackViewModel> ._, A <ContactUs> ._)).Returns(new ContactUs());
            A.CallTo(() => fakeSessionStorage.Save(A <ContactUs> ._)).DoesNothing();

            //Act
            var indexMethodCallResult = technicalController.WithCallTo(c => c.Index(technicalFeedbackViewModel));

            //Assert
            if (!validSubmission)
            {
                indexMethodCallResult.ShouldRenderDefaultView()
                .WithModel <TechnicalFeedbackViewModel>(vm =>
                {
                    vm.CharacterLimit.Should().Be(technicalController.CharacterLimit);
                    vm.MessageLabel.Should().Be(technicalController.MessageLabel);
                    vm.PageIntroduction.Should().Be(technicalController.PageIntroduction);
                    vm.PersonalInformation.Should().Be(technicalController.PersonalInformation);
                    vm.Title.Should().Be(technicalController.Title);
                    vm.NextPage.Should().Be(technicalController.NextPage);
                }).AndModelError(dummyErrorKey);
            }
            else
            {
                indexMethodCallResult.ShouldRedirectTo(technicalController.NextPage);
            }
        }
        public void TechnicalGetONeWorks()
        {
            DbContextOptions <FunemploymentDbContext> options = new DbContextOptionsBuilder <FunemploymentDbContext>()
                                                                .UseInMemoryDatabase("TechnicalGetOne")
                                                                .Options;

            using (FunemploymentDbContext context = new FunemploymentDbContext(options))
            {
                TechnicalController tc = new TechnicalController(context);

                Player player = new Player();
                player.Username = "******";
                player.Location = "testLocation";
                player.About    = "testAbout";

                var x = tc.GetOneTQ(null);


                Assert.IsType <NoContentResult>(x.Result);
            }
        }
        public async System.Threading.Tasks.Task TechnicalIndexWorksAsync()
        {
            DbContextOptions <FunemploymentDbContext> options = new DbContextOptionsBuilder <FunemploymentDbContext>()
                                                                .UseInMemoryDatabase("TechnicalIndexRedirects")
                                                                .Options;

            using (FunemploymentDbContext context = new FunemploymentDbContext(options))
            {
                TechnicalController tc = new TechnicalController(context);

                Player player = new Player();
                player.Username = "******";
                player.Location = "testLocation";
                player.About    = "testAbout";

                var x = tc.Index();

                var y = await OneBQViewModel.FromIDAsync(1, context);

                Assert.NotEmpty(y.behaviorQuestion.Content);

                Assert.IsType <ViewResult>(x.Result);
            }
        }