예제 #1
0
        public void Add_FinishedPressedWhenOnPage1NoQuestionAdded_GoTo()
        {
            //Arrange
            var mockHttpContext = new Mock <IHttpContextAccessor>();

            mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession()
            {
                Id = "abba1", IsAvailable = true
            });
            IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository();
            var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase();
            CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object);

            List <NewQuestionVM> list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "",
                Answer2    = "",
                Answer3    = "A3",
                Answer4    = "",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            //Act
            NewQuestionVM newQuestion = new NewQuestionVM();
            var           result      = createQuestionsController.ButtonFinished(question, newQuestion) as ViewResult;

            //Assert
            Assert.Equal("Add", result.ViewName);
        }
예제 #2
0
        public void Add_NextPressedValidQuestionAddedToList()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            List <NewQuestionVM>      list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 3,
                QuestionString = "Test"
            };

            //Act
            createQuestionsController.Add(question, "", "buttonNext", "");
            var result = createQuestionsController.MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList").ElementAt(0);

            //Assert
            Assert.Equal(question.QuestionNr, result.QuestionNr);
            Assert.Equal(question.Answer1, result.Answer1);
            Assert.Equal(question.Answer2, result.Answer2);
            Assert.Equal(question.Answer3, result.Answer3);
            Assert.Equal(question.Answer4, result.Answer4);
            Assert.Equal(question.RadioButtonAlternativeAnswer, result.RadioButtonAlternativeAnswer);
            Assert.Equal(question.QuestionString, result.QuestionString);
        }
예제 #3
0
        public void Add_NextPressedValidQuestionAdded_OpenAddView()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            List <NewQuestionVM>      list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            //Act
            NewQuestionVM newQuestionVM = new NewQuestionVM();
            var           result        = createQuestionsController.ButtonNext(question, newQuestionVM) as ViewResult;

            //Assert
            Assert.Equal("Add", result.ViewName);
        }
예제 #4
0
        public void Add_NextPressedQuestionAdded_ReturnedNewEmptyQuestionObjectWithQuestionNrEqualtTo2()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            List <NewQuestionVM>      list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            //Act
            NewQuestionVM newQuestionVM = new NewQuestionVM();
            var           model         = (NewQuestionVM)(createQuestionsController.ButtonNext(question, newQuestionVM) as ViewResult)?.ViewData.Model;

            //Assert
            Assert.Equal(model.QuestionNr, 2);
        }
예제 #5
0
        public void Add_FinishedPressedWhenOnPage1NoQuestionAdded_ReturnInvalidModelstate()
        {
            //Arrange
            var mockHttpContext = new Mock <IHttpContextAccessor>();

            mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession()
            {
                Id = "abba1", IsAvailable = true
            });
            IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository();
            var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase();
            CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object);

            List <NewQuestionVM> list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM();

            //Act
            NewQuestionVM newQuestion = new NewQuestionVM();

            createQuestionsController.ButtonFinished(question, newQuestion);

            //Assert
            Assert.False(createQuestionsController.ModelState.IsValid);
        }
예제 #6
0
        public bool ValidateIfFormIsEmpty(NewQuestionVM newQuestionVM)
        {
            var result = String.IsNullOrEmpty(newQuestionVM.QuestionString +
                                              newQuestionVM.Answer1 +
                                              newQuestionVM.Answer2 +
                                              newQuestionVM.Answer3 +
                                              newQuestionVM.Answer4);

            return(result);
        }
예제 #7
0
        public void Add_FinishedPressedWhenOnPage1AndOnlyQuestion1IsEnteredCorrectly_StoreToInMemoryDb()
        {
            //Arrange
            var mockHttpContext = new Mock <IHttpContextAccessor>();

            mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession()
            {
                Id = "abba1", IsAvailable = true
            });
            IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository();
            var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase();
            CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object);

            AddNewQuizVM addNewQuizVM = new AddNewQuizVM {
                QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID"
            };

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM);
            inMemoryDatabase.Quizzes.Add(new Quiz {
                QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId
            });
            inMemoryDatabase.SaveChanges();


            List <NewQuestionVM> list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM()                                                             // filling the list
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 3,
                QuestionString = "Test"
            };

            list.Add(question);

            //Act
            NewQuestionVM newQuestion = new NewQuestionVM();

            createQuestionsController.ButtonFinished(question, newQuestion);
            var result = inMemoryDatabase.Questions.FirstOrDefault();

            //Assert
            Assert.Equal(question.QuestionNr, result.QuestionNr);
            Assert.Equal(question.Answer1, result.Answers.ElementAt(0).AnswerText);
            Assert.Equal(question.Answer2, result.Answers.ElementAt(1).AnswerText);
            Assert.Equal(question.Answer3, result.Answers.ElementAt(2).AnswerText);
            Assert.Equal(question.Answer4, result.Answers.ElementAt(3).AnswerText);
            Assert.Equal(question.RadioButtonAlternativeAnswer, result.RadioButtonAlternativeAnswer);
            Assert.Equal(question.QuestionString, result.QuestionString);
        }
예제 #8
0
        public HttpResponseMessage NewQuestion([FromBody] NewQuestionVM model)
        {
            var hubContext = GlobalHost.ConnectionManager.GetHubContext <MainHub>();

            foreach (var con in model.Connection)
            {
                hubContext.Clients.Client(con).newQuestion(model.Id);
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
예제 #9
0
        public async Task <IActionResult> PostQuestion(NewQuestionVM vm, string tags)
        {
            if (ModelState.IsValid)
            {
                var user = await OnGetSesstion();

                UserQuestion userQuestion = new UserQuestion();
                userQuestion.Title       = vm.Title;
                userQuestion.PostTime    = DateTime.Now;
                userQuestion.Description = HttpUtility.HtmlEncode(vm.Description);
                userQuestion.UserId      = user;
                _context.UserQuestion.Add(userQuestion);
                _context.SaveChanges();
                string[] tagArray = tags.Split(',');
                foreach (string tag in tagArray)
                {
                    var tagFromDB = _context.SkillTag.Where(x => x.SkillName == tag.ToLower()).SingleOrDefault();
                    if (tagFromDB == null)
                    {
                        SkillTag sktag = new SkillTag
                        {
                            ApprovedStatus = false,
                            SkillName      = tag.ToLower(),
                            TimeApproved   = DateTime.Now,
                            UserId         = user
                        };
                        _context.SkillTag.Add(sktag);
                        _context.SaveChanges();
                        QuestionSkill qs = new QuestionSkill
                        {
                            SkillTagId     = sktag.SkillTagId,
                            UserQuestionId = userQuestion.UserQuestionId
                        };
                        _context.QuestionSkill.Add(qs);
                        _context.SaveChanges();
                    }
                    else
                    {
                        QuestionSkill qs = new QuestionSkill
                        {
                            SkillTagId     = tagFromDB.SkillTagId,
                            UserQuestionId = userQuestion.UserQuestionId
                        };
                        _context.QuestionSkill.Add(qs);
                        _context.SaveChanges();
                    }
                }

                return(RedirectToAction($"QuestionDetail", new { id = _context.UserQuestion.OrderByDescending(c => c.UserQuestionId).FirstOrDefault().UserQuestionId }));
            }

            return(View("New", vm));
        }
예제 #10
0
        public void ValidateInput(NewQuestionVM question)
        {
            if (string.IsNullOrEmpty(question.QuestionString) || string.IsNullOrWhiteSpace(question.QuestionString))
            {
                ModelState.AddModelError(nameof(question.QuestionString), "Please check the correct answer!");
            }
            if (question.RadioButtonAlternativeAnswer == null || question.RadioButtonAlternativeAnswer < 0 || question.RadioButtonAlternativeAnswer > 4)
            {
                ModelState.AddModelError(nameof(question.RadioButtonAlternativeAnswer), "Please check the correct answer!");
            }
            else
            {
                switch (question.RadioButtonAlternativeAnswer)
                {
                case 0:
                {
                    if (string.IsNullOrEmpty(question.Answer1))
                    {
                        ModelState.AddModelError("", "You need to check a valid question!");
                    }
                    break;
                }

                case 1:
                {
                    if (string.IsNullOrEmpty(question.Answer2))
                    {
                        ModelState.AddModelError("", "You need to check a valid question!");
                    }
                    break;
                }

                case 2:
                {
                    if (string.IsNullOrEmpty(question.Answer3))
                    {
                        ModelState.AddModelError("", "You need to check a valid question!");
                    }
                    break;
                }

                case 3:
                {
                    if (string.IsNullOrEmpty(question.Answer4))
                    {
                        ModelState.AddModelError("", "You need to check a valid question!");
                    }
                    break;
                }
                }
            }
        }
예제 #11
0
 public IActionResult ButtonNext(NewQuestionVM question, NewQuestionVM newQuestion)
 {
     ValidateInput(question);
     if (ModelState.IsValid)
     {
         ModelState.Clear();
         var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");
         if (sessionResult.Count == 0) //executes when we input the first question
         {
             question.QuestionNr = 1;
         }
         else if (question.QuestionNr > 100 || question.QuestionNr < 1)
         {
             deleteQuestionsAndAnswersStoredInSession();
             return(RedirectToAction("Index", "Main")); //////////////////////////////
         }
         bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr);
         if (!QuestionExists)
         {
             if ((sessionResult.Count + 1) == question.QuestionNr)
             {
                 sessionResult.Add(question);
                 MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object
                 newQuestion.QuestionNr = (question.QuestionNr) + 1;
                 return(View(nameof(Add), newQuestion));                                                 //////////////////////////////
             }
             else //if questionNr is messed with by user
             {
                 deleteQuestionsAndAnswersStoredInSession();
                 return(RedirectToAction("Index", "Main")); //////////////////////////////
             }
         }
         else if (QuestionExists)
         {
             var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr);
             sessionResult[sessionResult.IndexOf(oldQuestion)] = question;
             MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object
             if (question.QuestionNr < sessionResult.Count())
             {
                 return(View(sessionResult.ElementAt(question.QuestionNr))); //////////////////////////////
             }
             else
             {
                 newQuestion.QuestionNr = ++(question.QuestionNr);
                 return(View(newQuestion)); //////////////////////////////
             }
         }
     }
     return(View(question));
 }
예제 #12
0
        public IActionResult Add(NewQuestionVM question, string buttonBack, string buttonNext, string buttonFinished)
        {
            NewQuestionVM newQuestion = new NewQuestionVM();
            IActionResult result      = View(newQuestion);

            if (!string.IsNullOrEmpty(buttonNext))
            {
                result = ButtonNext(question, newQuestion);
            }
            else if (!string.IsNullOrEmpty(buttonBack))
            {
                result = ButtonBack(question, newQuestion);
            }
            else if (!string.IsNullOrEmpty(buttonFinished))
            {
                result = ButtonFinished(question, newQuestion);
            }
            return(result);
        }
예제 #13
0
        public void ValidateInput_InputMissingValueForAllAnswersRadioButtonChecked_ModelstateIsNotValid()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            NewQuestionVM             question = new NewQuestionVM()
            {
                Answer1 = "",
                Answer2 = "",
                Answer3 = "",
                Answer4 = "",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            //Act
            createQuestionsController.ValidateInput(question);

            //Assert
            Assert.False(createQuestionsController.ModelState.IsValid);
        }
예제 #14
0
        public void Add_BackPressedWhenQuestionNrEqualtTo3AndOnlyQuestion1IsStored_RedirectToIndexOnMainPageAndDeleteCreateNewQuestionsList()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            List <NewQuestionVM>      list     = new List <NewQuestionVM>();
            NewQuestionVM             question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 3,
                QuestionString = "Test"
            };

            list.Add(question);
            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list);
            NewQuestionVM questionSendIn = new NewQuestionVM()
            {
                QuestionNr = 3,
                Answer1    = "B1",
                Answer2    = "B2",
                Answer3    = "B3",
                Answer4    = "B4",
                RadioButtonAlternativeAnswer = 2,
                QuestionString = "Test2"
            };

            //Act
            NewQuestionVM          newQuestionVM = new NewQuestionVM();
            RedirectToActionResult result        = (RedirectToActionResult)createQuestionsController.ButtonBack(questionSendIn, newQuestionVM);

            var sessionResult = createQuestionsController.MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");

            //Assert
            Assert.Equal(null, sessionResult);
            Assert.Equal("Index", result.ActionName);
            Assert.Equal("Main", result.ControllerName);
        }
예제 #15
0
        public IActionResult AddNewQuiz(AddNewQuizVM addNewQuizVM)
        {
            var UserId = userManagerRepository.GetUserIdFromIdentity(HttpContext?.User);

            if (UserId == null)
            {
                deleteQuestionsAndAnswersStoredInSession();
                return(RedirectToAction("Index", "Main"));
            }
            addNewQuizVM.UserId = UserId;
            int QuizId = repository.SaveNewQuiz(addNewQuizVM);

            addNewQuizVM.QuizId = QuizId;
            MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM);
            List <NewQuestionVM> list = new List <NewQuestionVM>();

            MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM {
                QuestionNr = 1
            };

            return(View(nameof(Add), question));
        }
예제 #16
0
        public void Add_BackPressedWhenOnPage2WithInvalidInputAndOnlyQuestion1IsStoredInSession_ReturnViewModelWithQuestionNr2AndModelStateInvalid()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTests();
            List <NewQuestionVM>      list     = new List <NewQuestionVM>();
            NewQuestionVM             question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            list.Add(question);
            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list);
            NewQuestionVM questionSendIn = new NewQuestionVM()
            {
                QuestionNr = 2,
                Answer1    = "B1",
                Answer2    = "B2",
                Answer3    = "B3",
                Answer4    = "B4",
                RadioButtonAlternativeAnswer = 2,
                QuestionString = ""
            };

            //Act
            NewQuestionVM newQuestionVM = new NewQuestionVM();
            var           model         = (NewQuestionVM)(createQuestionsController.ButtonBack(questionSendIn, newQuestionVM) as ViewResult)?.ViewData.Model;

            //Assert
            Assert.Equal(model.QuestionNr, 2);
            Assert.False(createQuestionsController.ModelState.IsValid);
        }
예제 #17
0
        public void Add_FinishedPressedQuestionAdded_RedirectedToShowNewQuizStored()
        {
            //Arrange
            CreateQuestionsController createQuestionsController = setupBeforeTestWithFakeDb();
            AddNewQuizVM addNewQuizVM = new AddNewQuizVM {
                QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID"
            };

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM);
            inMemoryDatabase.Quizzes.Add(new Quiz {
                QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId
            });
            inMemoryDatabase.SaveChanges();

            List <NewQuestionVM> list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object
            NewQuestionVM question = new NewQuestionVM()
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 1,
                QuestionString = "Test"
            };

            //Act
            NewQuestionVM          newQuestion = new NewQuestionVM();
            RedirectToActionResult result      = (RedirectToActionResult)createQuestionsController.ButtonFinished(question, newQuestion);

            //Assert
            Assert.Equal("ShowNewQuizStored", result.ActionName);
            Assert.Equal("Main", result.ControllerName);
        }
예제 #18
0
        public void Add_XXXXXXFinishedPressedWhenOnPage1TwoQuestionsAddedInSessionAndFormFilledWithValidData_StoreToInMemoryDb()
        {
            //Arrange
            var mockHttpContext = new Mock <IHttpContextAccessor>();

            mockHttpContext.Setup(x => x.HttpContext.Session).Returns(new MyTestSession()
            {
                Id = "abba1", IsAvailable = true
            });
            IUserManagerWrapper fakeUserManagerRepository = new FakeUserManagerRepository();
            var inMemoryDatabase = InMemoryDatabase.GetContextFromInMemoryDatabase();
            CreateQuestionsController createQuestionsController = new CreateQuestionsController(fakeUserManagerRepository, new EFQuestionRepository(inMemoryDatabase), mockHttpContext.Object);

            AddNewQuizVM addNewQuizVM = new AddNewQuizVM {
                QuizId = 1, QuizName = "TestQuiz", UserId = "UserId-GUID"
            };

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuizId", addNewQuizVM);
            inMemoryDatabase.Quizzes.Add(new Quiz {
                QuizId = addNewQuizVM.QuizId, QuizName = addNewQuizVM.QuizName, UserId = addNewQuizVM.UserId
            });
            inMemoryDatabase.SaveChanges();

            List <NewQuestionVM> list = new List <NewQuestionVM>();

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object


            NewQuestionVM question = new NewQuestionVM() // filling the list
            {
                QuestionNr = 1,
                Answer1    = "A1",
                Answer2    = "A2",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 3,
                QuestionString = "Test"
            };

            list.Add(question);

            question = new NewQuestionVM() // filling the list
            {
                QuestionNr = 2,
                Answer1    = "A1-2",
                Answer2    = "A2-2",
                Answer3    = "A3-2",
                Answer4    = "A4-2",
                RadioButtonAlternativeAnswer = 2,
                QuestionString = "Test2"
            };
            list.Add(question);

            createQuestionsController.MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", list); //storing a list of empty NewQuestionVM objects in teh session object

            NewQuestionVM question2 = new NewQuestionVM()                                                            // filling the list
            {
                QuestionNr = 1,
                Answer1    = "A1-1",
                Answer2    = "A2-1",
                Answer3    = "A3",
                Answer4    = "A4",
                RadioButtonAlternativeAnswer = 3,
                QuestionString = "Test"
            };

            //Act
            NewQuestionVM newQuestion = new NewQuestionVM();

            createQuestionsController.ButtonFinished(question2, newQuestion);
            var result = inMemoryDatabase.Questions.Count();

            //Assert
            Assert.Equal(2, result);
        }
예제 #19
0
        public IActionResult ButtonFinished(NewQuestionVM question, NewQuestionVM newQuestion)
        {
            ValidateInput(question);
            if (ModelState.IsValid)
            {
                ModelState.Clear();
                var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");
                if (sessionResult.Count == 0) //executes when we input the first question
                {
                    question.QuestionNr = 1;
                }
                else if (question.QuestionNr > 100 || question.QuestionNr < 1)
                {
                    deleteQuestionsAndAnswersStoredInSession();
                    return(RedirectToAction("Index", "Main")); //////////////////////////////
                }
                bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr);
                if (!QuestionExists) //--
                {
                    if ((sessionResult.Count + 1) == question.QuestionNr)
                    {
                        sessionResult.Add(question);
                        var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId");
                        var AddNewQuizVMFromDb        = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId);
                        if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName &&
                            sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId)
                        {
                            repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId);
                            return(RedirectToAction("ShowNewQuizStored", "Main")); //////////////////////////////
                        }
                        else
                        {
                            deleteQuestionsAndAnswersStoredInSession();
                            return(RedirectToAction("Index", "Main")); //////////////////////////////
                        }
                    }
                    else //if questionNr is messed with by user
                    {
                        deleteQuestionsAndAnswersStoredInSession();
                        return(RedirectToAction("Index", "Main")); //////////////////////////////
                    }
                }
                else if (QuestionExists)
                {
                    var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr);
                    sessionResult[sessionResult.IndexOf(oldQuestion)] = question;
                    MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object

                    var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId");

                    var AddNewQuizVMFromDb = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId);

                    if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName &&
                        sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId)
                    {
                        repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId);
                        return(RedirectToAction("ShowNewQuizStored", "Main")); //////////////////////////////
                    }
                    else
                    {
                        deleteQuestionsAndAnswersStoredInSession();
                        return(RedirectToAction("Index", "Main")); //////////////////////////////
                    }
                }
            }
            else
            {
                //if (ValidateIfFormIsEmpty(question))
                //{
                //    return View(question);
                //}
                if (ValidateIfFormIsEmpty(question)) //we have not input any question save questions for quiz
                {
                    var sessionResult             = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");
                    var sessionResultAddNewQuizVM = MyContextAccessor.HttpContext.Session.GetJson <AddNewQuizVM>("CreateNewQuizId");
                    if (sessionResultAddNewQuizVM != null)
                    {
                        var AddNewQuizVMFromDb = repository.GetNewQuiz(sessionResultAddNewQuizVM.QuizId);
                        if (sessionResultAddNewQuizVM.QuizName == AddNewQuizVMFromDb.QuizName &&
                            sessionResultAddNewQuizVM.UserId == AddNewQuizVMFromDb.UserId)
                        {
                            repository.SaveQuestions(sessionResult, sessionResultAddNewQuizVM.QuizId);
                            return(RedirectToAction("ShowNewQuizStored", "Main")); //////////////////////////////
                        }
                        else
                        {
                            deleteQuestionsAndAnswersStoredInSession();
                            return(RedirectToAction("Index", "Main")); //////////////////////////////
                        }
                    }
                    else
                    {
                        deleteQuestionsAndAnswersStoredInSession();
                        return(RedirectToAction("Index", "Main")); //////////////////////////////
                    }
                }
                else
                {
                    return(View("Add", question)); //////////////////////////////
                }
            }
            return(View(nameof(Add), question)); //////////////////////////////
        }
예제 #20
0
 public IActionResult ButtonBack(NewQuestionVM question, NewQuestionVM newQuestion)
 {
     ValidateInput(question);
     if (ModelState.IsValid) //no validation error
     {
         ModelState.Clear();
         var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");
         if (sessionResult.Count == 0) //executes when we input the first question
         {
             question.QuestionNr = 1;
         }
         else if (question.QuestionNr > 100 || question.QuestionNr < 1)
         {
             deleteQuestionsAndAnswersStoredInSession();
             return(RedirectToAction("Index", "Main")); //////////////////////////////
         }
         bool QuestionExists = sessionResult.Any(x => x.QuestionNr == question.QuestionNr);
         if (!QuestionExists)
         {
             if ((sessionResult.Count + 1) == question.QuestionNr)
             {
                 sessionResult.Add(question);
                 MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object
                 newQuestion = sessionResult[(question.QuestionNr) - 2];
                 return(View(newQuestion));                                                              //////////////////////////////
             }
             else //if questionNr is messed with by user
             {
                 deleteQuestionsAndAnswersStoredInSession();
                 return(RedirectToAction("Index", "Main")); //////////////////////////////
             }
         }
         else if (QuestionExists)
         {
             var oldQuestion = sessionResult.Single(x => x.QuestionNr == question.QuestionNr);
             sessionResult[sessionResult.IndexOf(oldQuestion)] = question;
             MyContextAccessor.HttpContext.Session.SetJson("CreateNewQuestionsList", sessionResult); //add a new question to the session object
             if (question.QuestionNr == 1)
             {
                 return(View(sessionResult.ElementAt(question.QuestionNr - 1))); //////////////////////////////
             }
             else
             {
                 return(View(sessionResult.ElementAt(question.QuestionNr - 2))); //////////////////////////////
             }
         }
     }
     else
     {
         if (string.IsNullOrEmpty(question.QuestionString) && string.IsNullOrEmpty(question.Answer1)) //we have not input any question save questions for quiz
         {
             if (question.QuestionNr > 1 && question.QuestionNr < 100)
             {
                 var sessionResult = MyContextAccessor.HttpContext.Session.GetJson <List <NewQuestionVM> >("CreateNewQuestionsList");
                 ModelState.Clear();
                 return(View(sessionResult.ElementAt(question.QuestionNr - 2))); //////////////////////////////
             }
         }
         else
         {
             return(View(question)); //////////////////////////////
         }
     }
     return(View(question)); //////////////////////////////
 }