Пример #1
0
        public static QuestionEF ToEF(this QuestionTO question)
        {
            if (question is null)
            {
                throw new ArgumentNullException(nameof(question));
            }

            var q = new QuestionEF();

            q.Id          = question.Id;
            q.NameEnglish = question.Libelle.English;
            q.NameFrench  = question.Libelle.French;
            q.NameDutch   = question.Libelle.Dutch;
            q.Position    = question.Position;
            q.Type        = question.Type;
            //q.Form.Id = question.FormId;

            if (question.Propositions != null)
            {
                q.Propositions = question.Propositions.Select(x => x.ToEF()).ToList();
                q.Propositions.Select(x => x.Question = q);
            }

            return(q);
        }
        public void Question_ArchiveSuccesfull()
        {
            var options = new DbContextOptionsBuilder <QAndAContext>().UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name).Options;
            var context = new QAndAContext(options);
            IQuestionRepository QRepo = new QuestionRepository(context);

            var question = new QuestionTO
            {
                Questioning  = "Gif or Gif ?",
                CreationDate = DateTime.Now,
                State        = State.Pending,
                IsArchived   = false,
                LostSoul     = new UserTO {
                    FirstName = "William", LastName = "Shake"
                }
            };

            var added = QRepo.Insert(question);

            QRepo.Save();

            var result = QRepo.Archive(added);

            QRepo.Save();

            Assert.IsTrue(QRepo.Get(added.Id).IsArchived);
        }
Пример #3
0
        public QuestionTO AskAQuestion(QuestionTO Question)
        {
            var date = DateTime.Now;

            Question.Date = date;
            return(questionRepository.Create(Question));
        }
Пример #4
0
        public void CreateQuestion_Successful()
        {
            // ARRANGE
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            //ACT
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var result = questionRepository.Create(question);

            //ASSERT
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Id);
            Assert.AreEqual("Je n'arrive pas à faire un test", result.Message);
            Assert.AreEqual("Problème avec Tests", result.Title);
            Assert.AreEqual(date, result.Date);
            Assert.AreEqual(false, result.IsResolved);
            Assert.AreEqual(1, result.AuthorId);
        }
Пример #5
0
        public void CreateAnswer_AddExistingAnswer_DoNotInsertTwiceInDb()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            IAnswerRepository   answerRepository   = new AnswerRepository(context);


            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var addedQuestion = questionRepository.Create(question);

            context.SaveChanges();
            var answer = new AnswerTO {
                Message = "En fait, c'est facile il faut toujorus faire des tests", AuthorId = 2, AssociatedQuestion = addedQuestion,
            };
            var result = answerRepository.Create(answer);

            context.SaveChanges();
            //ACT
            answerRepository.Create(result);
            context.SaveChanges();

            //ASSERT
            Assert.AreEqual(1, context.Answers.Count());
        }
Пример #6
0
        public void GetQuestionById_Successful()
        {
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            //ARRANGE
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test!", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var question2 = new QuestionTO {
                IsResolved = false, Message = "Comment créer un projet MVC 6?", Title = "MVC6", Date = date, AuthorId = 2
            };
            var question3 = new QuestionTO {
                IsResolved = false, Message = "Comment faire boucle foreach?", Title = "foreach", Date = date, AuthorId = 2
            };
            var addedQuestion  = questionRepository.Create(question);
            var addedQuestion2 = questionRepository.Create(question2);
            var addedQuestion3 = questionRepository.Create(question3);

            context.SaveChanges();

            //ACT
            var test = questionRepository.GetById(2);

            //ASSERT
            Assert.AreEqual("Comment créer un projet MVC 6?", test.Message);
        }
Пример #7
0
        public void AnsweringQuestion_Successful()
        {
            var mockAnswerRepository = new Mock <IAnswerRepository>();

            mockAnswerRepository.Setup(u => u.Create(It.IsAny <AnswerTO>()))
            .Returns(MockAnswer);
            var mockQuestionRepository = new Mock <IQuestionRepository>();

            mockQuestionRepository.Setup(u => u.GetById(It.IsAny <int>()))
            .Returns(MockQuestion);

            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var answer2 = new AnswerTO {
                Message = "En fait, c'est facile il faut toujorus faire des tests", AuthorId = 2, AssociatedQuestion = question,
            };

            var askUC       = new AskUC(mockAnswerRepository.Object, mockQuestionRepository.Object);
            var addedAnswer = askUC.AnsweringQuestion(1, answer2);

            Assert.IsNotNull(addedAnswer);
            mockAnswerRepository.Verify((m => m.Create(It.IsAny <AnswerTO>())), Times.Once());
        }
Пример #8
0
        public void Question_UpdateCorrect()
        {
            var options = new DbContextOptionsBuilder <QAndAContext>().UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name).Options;
            var context = new QAndAContext(options);
            IQuestionRepository QRepo = new QuestionRepository(context);

            var question = new QuestionTO
            {
                Questioning  = "Am I a construction vehicule ?",
                CreationDate = DateTime.Now,
                State        = State.Pending,
                IsArchived   = false,
                LostSoul     = new UserTO {
                    FirstName = "Stan", LastName = "The Cat"
                }
            };

            var insertedQuestion = QRepo.Insert(question);

            QRepo.Save();

            insertedQuestion.Questioning = "Stupid Question";
            var result = QRepo.Update(insertedQuestion);

            QRepo.Save();

            Assert.AreEqual("Stupid Question", QRepo.Get(result.Id).Questioning);
        }
Пример #9
0
        public void ModifyQuestion_Successful()
        {
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            //ACT
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var result = questionRepository.Create(question);

            context.SaveChanges();
            //ACT
            result.IsResolved = true;
            var test = questionRepository.Modify(result);

            context.SaveChanges();

            //ASSERT
            Assert.AreEqual(true, test.IsResolved);
        }
Пример #10
0
        public QuestionTO Modify(QuestionTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException(nameof(entity));
            }
            if (entity.Id <= 0)
            {
                throw new ArgumentException("Question To Update Invalid Id");
            }
            if (!askContext.Questions.Any(x => x.Id == entity.Id))
            {
                throw new KeyNotFoundException($"Update(QuestionTO) Can't find Question to update.");
            }

            var editedEntity = askContext.Questions.FirstOrDefault(e => e.Id == entity.Id);

            if (editedEntity != default)
            {
                entity.ToTrackedEF(editedEntity);
            }
            askContext.SaveChanges();

            return(editedEntity.ToTransferObject());
        }
Пример #11
0
        public void ToTEF_ProvidingNull_ThrowException()
        {
            //ARRANGE
            QuestionTO question = null;

            //ACT
            Assert.ThrowsException <ArgumentNullException>(() => question.ToEF());
        }
Пример #12
0
        public void ToTrackedEF_ProvidingNullEF_ThrowException()
        {
            //ARRANGE
            QuestionTO question         = null;
            QuestionEF questionToModify = null;

            //ACT
            Assert.ThrowsException <ArgumentNullException>(() => question.ToTrackedEF(questionToModify));
        }
        public QuestionTO MockQuestion()
        {
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test!", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };

            return(question);
        }
Пример #14
0
        public bool Remove(QuestionTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            return(Remove(entity.Id));
        }
Пример #15
0
        public AnswerTO MockAnswer()
        {
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                Id = 1, IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };

            return(new AnswerTO {
                Message = "En fait, c'est facile il faut toujorus faire des tests", AuthorId = 2, AssociatedQuestion = question,
            });
        }
Пример #16
0
        public void ToTrackedEF_ProvidingNullTO_ThrowException()
        {
            //ARRANGE
            QuestionTO question         = null;
            DateTime   date             = DateTime.Now;
            var        questionToModify = new QuestionEF {
                Id = 1, IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };

            //ACT
            Assert.ThrowsException <ArgumentNullException>(() => question.ToTrackedEF(questionToModify));
        }
Пример #17
0
        private static QuestionTO MapElement(DataRow item)
        {
            QuestionTO question = new QuestionTO()
            {
                ID   = Convert.ToInt32(item["ID"]),
                Text = item["Text"].ToString(),
                Type = item["Type"].ToString()
            };

            question.Answers = GetAnswers(question.ID);

            return(question);
        }
Пример #18
0
 public QuestionTO DeletingQuestion(int UserId, QuestionTO Question)
 {
     if (UserId == Question.AuthorId)
     {
         Question.IsDeleted = true;
         var modifiedEntity = questionRepository.Modify(Question);
         return(modifiedEntity);
     }
     else
     {
         throw new Exception("You can't delete this question because your are not the author of this question");
     }
 }
Пример #19
0
        public void GetALlAnswers_Successful()
        {
            //ARRANGE
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            IAnswerRepository   answerRepository   = new AnswerRepository(context);

            //ACT
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var question2 = new QuestionTO {
                IsResolved = false, Message = "Comment créer un projet MVC 6", Title = "MVC6", Date = date, AuthorId = 2
            };
            var question3 = new QuestionTO {
                IsResolved = false, Message = "Comment faire boucle foreach", Title = "foreach", Date = date, AuthorId = 2
            };
            var addedQuestion  = questionRepository.Create(question);
            var addedQuestion2 = questionRepository.Create(question2);
            var addedQuestion3 = questionRepository.Create(question3);

            context.SaveChanges();
            var answer = new AnswerTO {
                Message = "En fait, c'est facile il faut toujorus faire des tests", AuthorId = 2, AssociatedQuestion = addedQuestion,
            };
            var answer2 = new AnswerTO {
                Message = "Oui c'est trop facile les tests avec InMemory", AuthorId = 3, AssociatedQuestion = addedQuestion,
            };
            var answer3 = new AnswerTO {
                Message = "Tu dois d'abord créer un projet web app avec .Net Core", AuthorId = 1, AssociatedQuestion = addedQuestion2,
            };
            var addedAnswer  = answerRepository.Create(answer);
            var addedAnswer2 = answerRepository.Create(answer2);
            var addedAnswer3 = answerRepository.Create(answer3);

            context.SaveChanges();
            //Archiving the question related to the answer 3
            addedQuestion2.IsResolved = true;
            questionRepository.Modify(addedQuestion2);
            context.SaveChanges();
            //ACT
            var test = answerRepository.GetAll();

            //ASSERT
            Assert.AreEqual(3, test.Count());
        }
Пример #20
0
        public QuestionTO Add(QuestionTO Entity)
        {
            if (Entity is null)
            {
                throw new ArgumentNullException(nameof(Entity));
            }

            var question = Entity.ToEF();

            question.Form = evaluationContext
                            .Forms
                            .FirstOrDefault(f => f.Id == Entity.FormId);
            return(evaluationContext.Questions.Add(question).Entity.ToTransfertObject());
        }
Пример #21
0
 public ActionResult CreateQuestion(QuestionTO question)
 {
     try
     {
         var currentUser = _userManager.GetUserAsync(User).Result;
         question.AuthorId = currentUser.Id;
         _askUC.AskAQuestion(question);
         return(RedirectToAction(nameof(Index)));
     }
     catch
     {
         return(View());
     }
 }
Пример #22
0
        private void SaveResponse()
        {
            QuestionTO question = GetCurrentQuestion();

            AssesmentResponseTO response = new AssesmentResponseTO();

            response.AnswerIsRight = responseWasRight;
            response.AssesmentID   = id;
            response.QuestionId    = question.QuestionId;
            response.AnswerId      = question.Answers.ElementAt(currentQuestionAnswerIndex - 1).AnswerId;
            db.AssesmentResponses.Add(response);

            db.SaveChanges();
        }
Пример #23
0
        public IActionResult AddQuestion(int id)
        {
            int position = 1;

            if (assistantRole.GetFormById(id).Questions.Count > 0)
            {
                position += assistantRole.GetFormById(id).Questions.Max(q => q.Position);
            }
            var question = new QuestionTO {
                FormId = id, Position = position
            };

            return(View(question));
        }
Пример #24
0
        public QuestionTO Insert(QuestionTO entity)
        {
            if (entity is null)
            {
                throw new ArgumentNullException();
            }
            if (entity.Id != 0)
            {
                return(entity);
            }
            entity.Answers = new List <AnswerTO>();
            var result = context.Questions.Add(entity.ToEF());

            return(result.Entity.ToTO());
        }
Пример #25
0
        public void ModifyQuestion_ProvidingNonExistingId_ThrowException()
        {
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);

            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                Id = 16783, IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };

            Assert.ThrowsException <KeyNotFoundException>(() => questionRepository.Modify(question));
        }
Пример #26
0
        public void ArchiveAnswer_Correct()
        {
            var options = new DbContextOptionsBuilder <QAndAContext>().UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name).Options;
            var context = new QAndAContext(options);
            IAnswerRepository   ARepo = new AnswerRepository(context);
            IQuestionRepository QRepo = new QuestionRepository(context);

            var question = new QuestionTO
            {
                Questioning  = "Not hungry",
                CreationDate = DateTime.Now,
                State        = State.Pending,
                IsArchived   = false,
                LostSoul     = new UserTO {
                    FirstName = "Don't wanna", LastName = "Eat"
                }
            };

            var addedQuestion = QRepo.Insert(question);

            QRepo.Save();

            var answer = new AnswerTO
            {
                Answering  = "must be the donuts",
                AnswerTime = DateTime.Now.AddHours(1),
                QuestionId = addedQuestion.Id,
                Savior     = new UserTO {
                    FirstName = "Any", LastName = "Officer"
                }
            };

            var addedAnswer = ARepo.Insert(answer);

            ARepo.Save();

            Assert.AreEqual(1, ARepo.GetAll().Count());

            var deletedAnswer = ARepo.Delete(addedAnswer);

            ARepo.Save();
            var all = ARepo.GetAll();

            Assert.AreEqual(0, all.Count());
            Assert.IsTrue(deletedAnswer);
            Assert.IsTrue(ARepo.Get(addedAnswer.Id).IsDeleted);
        }
Пример #27
0
        public void ToEF_Successful()
        {
            //ARRANGE
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                Id = 1, IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var answer = new AnswerTO {
                Message = "En fait, c'est facile il faut toujorus faire des tests", AuthorId = 2, AssociatedQuestion = question,
            };
            //ACT
            var result = answer.ToEF();

            //Assert
            Assert.AreEqual(answer.AuthorId, result.AuthorId);
            Assert.AreEqual(answer.Message, result.Message);
        }
Пример #28
0
        public void GetQuestionById_ProvidingNoId_ThrowException()
        {
            var options = new DbContextOptionsBuilder <AskContext>()
                          .UseInMemoryDatabase(databaseName: MethodBase.GetCurrentMethod().Name)
                          .Options;

            using var context = new AskContext(options);
            IQuestionRepository questionRepository = new QuestionRepository(context);
            //ARRANGE
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };

            //ASSERT
            Assert.ThrowsException <ArgumentException>(() => questionRepository.GetById(question.Id));
        }
        public void Question_GetAll()
        {
            var options = new DbContextOptionsBuilder <QAndAContext>().UseInMemoryDatabase(MethodBase.GetCurrentMethod().Name).Options;
            var context = new QAndAContext(options);
            IQuestionRepository QRepo = new QuestionRepository(context);

            var question1 = new QuestionTO
            {
                Questioning  = "Great Power Blah blah blah",
                CreationDate = DateTime.Now,
                State        = State.Resolved,
                IsArchived   = false,
                LostSoul     = new UserTO {
                    FirstName = "Peter", LastName = "Pan"
                }
            };
            var question2 = new QuestionTO
            {
                Questioning  = "How to cure RDR2",
                CreationDate = DateTime.Now,
                State        = State.Pending,
                IsArchived   = false,
                LostSoul     = new UserTO {
                    FirstName = "Arthur", LastName = "Morgan"
                }
            };
            var question3 = new QuestionTO
            {
                Questioning  = "Why no tracking ?",
                CreationDate = DateTime.Now,
                State        = State.Pending,
                IsArchived   = true,
                LostSoul     = new UserTO {
                    FirstName = "Pro", LastName = "Stalker"
                }
            };

            QRepo.Insert(question1);
            QRepo.Insert(question2);
            QRepo.Insert(question3);
            QRepo.Save();

            var result = QRepo.GetAll();

            Assert.AreEqual(2, result.Count());
        }
Пример #30
0
        public List <QuestionTO> MockListOfQuestions()
        {
            DateTime date     = DateTime.Now;
            var      question = new QuestionTO {
                IsResolved = false, Message = "Je n'arrive pas à faire un test!", Title = "Problème avec Tests", Date = date, AuthorId = 1
            };
            var question2 = new QuestionTO {
                IsResolved = false, Message = "Comment créer un projet MVC 6?", Title = "MVC6", Date = date, AuthorId = 2
            };
            var question3 = new QuestionTO {
                IsResolved = false, Message = "Comment faire boucle foreach?", Title = "foreach", Date = date, AuthorId = 2
            };

            return(new List <QuestionTO> {
                question, question2, question3
            });
        }