public MultipleSelectionQuestion CreateQuestion(int examId) { var question = new MultipleSelectionQuestion { Description = "Pregunta nueva", ExamId = examId }; var list = new List <QuestionOption> { new QuestionOption { Description = "Opción 1", Feedback = "Feedback de opción 1", IsCorrect = true }, new QuestionOption { Description = "Opción 2", Feedback = "Feedback de opción 2", IsCorrect = false }, new QuestionOption { Description = "Opción 3", Feedback = "Feedback de opción 3", IsCorrect = false }, new QuestionOption { Description = "Opción 4", Feedback = "Feedback de opción 4", IsCorrect = false }, new QuestionOption { Description = "Opción 5", Feedback = "Feedback de opción 5", IsCorrect = false } }; question.Options = list; _db.MultipleSelectionQuestions.Add(question); _db.SaveChanges(); return(question); }
public void WhenUpdatingTheElementsInTheSelectionsListInTheViewModel_ThenResponseIsSetInTheModelAndValidationIsUpdated() { var question = new MultipleSelectionQuestion { Range = new[] { "a", "b", "c" }, MaxSelections = 2 }; var questionAsINDEI = question as INotifyDataErrorInfo; var viewModel = new MultipleSelectionQuestionViewModel(question); viewModel.Selections.Add("a"); CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray()); Assert.IsFalse(questionAsINDEI.HasErrors); viewModel.Selections.Add("b"); CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray()); Assert.IsFalse(questionAsINDEI.HasErrors); viewModel.Selections.Add("c"); CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray()); Assert.IsTrue(questionAsINDEI.HasErrors); viewModel.Selections.Remove("a"); CollectionAssert.AreEqual((ICollection)viewModel.Selections, question.Response.ToArray()); Assert.IsFalse(questionAsINDEI.HasErrors); }
public void WhenUpdatingTheCollectionInitializedByTheViewModel_ThenTheViewModelNotifiesChangesToTheResponse() { var question = new MultipleSelectionQuestion { Range = new[] { "a", "b", "c" }, MaxSelections = 2 }; var viewModel = new MultipleSelectionQuestionViewModel(question); int responseChanges = 0; viewModel.ResponseChanged += (s, e) => responseChanges++; viewModel.Selections.Add("a"); Assert.AreEqual(1, responseChanges); viewModel.Selections.Add("b"); Assert.AreEqual(2, responseChanges); viewModel.Selections.Add("c"); Assert.AreEqual(3, responseChanges); viewModel.Selections.Remove("b"); Assert.AreEqual(4, responseChanges); }
public void WhenCreatingAViewModelForAQuestionWithNullResponse_ThenInitializesTheResponseToAnEmptyCollection() { var question = new MultipleSelectionQuestion { Range = new[] { "a", "b", "c" } }; var viewModel = new MultipleSelectionQuestionViewModel(question); CollectionAssert.AreEqual(new string[0], question.Response.ToArray()); }
public void WhenQuestionIsNew_ThenItIsNotComplete() { var question = new MultipleSelectionQuestion() { Range = new[] { "one", "two", "three" }, MaxSelections = 2 }; Assert.IsFalse(question.IsComplete); }
public void WhenCreatingTheViewModel_ThenHasChangesIsFalse() { var question = new MultipleSelectionQuestion { Range = new[] { "a", "b", "c" }, MaxSelections = 2 }; var viewModel = new MultipleSelectionQuestionViewModel(question); bool hasChanges = false; viewModel.ResponseChanged += (o, e) => { hasChanges = true; }; Assert.IsFalse(hasChanges); }
public void WhenQuestionHasValidValue_ThenItIsComplete() { var question = new MultipleSelectionQuestion() { Range = new[] { "one", "two", "three" }, MaxSelections = 2 }; question.Response = new[] { "one" }; Assert.IsTrue(question.IsComplete); }
public void WhenSettingASelectionOnTheViewModel_ThenHasChangesIsTrue() { var question = new MultipleSelectionQuestion { Range = new[] { "a", "b", "c" }, MaxSelections = 2 }; var viewModel = new MultipleSelectionQuestionViewModel(question); int responseChanges = 0; viewModel.ResponseChanged += (s, e) => responseChanges++; viewModel.Selections.Add("a"); Assert.IsTrue(responseChanges > 0); }
public void WhenResponseHasLessElementsThanMax_ThenIndicatesNoErrorOnResponse() { var question = new MultipleSelectionQuestion() { Range = new[] { "one", "two", "three" }, MaxSelections = 2 }; var notifyErrorInfo = (INotifyDataErrorInfo)question; question.Response = new[] { "one" }; Assert.IsFalse(notifyErrorInfo.GetErrors("Response").Cast <string>().Any()); }
/// <summary> /// Initializes a new instance of the <see cref="MultipleSelectionAnswer"/> class. /// Initiates values according to a specific question that will be answered. /// </summary> /// <param name="question">Question that it will be answering.</param> public MultipleSelectionAnswer(MultipleSelectionQuestion question) { QuestionId = question.Id; Selections = new List <BinaryOptionSelection>(); foreach (var option in question.Options) { Selections.Add(new BinaryOptionSelection { MultipleSelectionQuestionId = question.Id, QuestionOptionId = option.Id, Selected = false }); } }
/// <summary> /// Evaluates a question, removing all notation and leaving the variables' names. /// </summary> /// <param name="question">Question to be evaluated.</param> /// <returns>Evaluated question.</returns> public Question Evaluate(Question question) { var selectionQuestion = question as SelectionQuestion; if (selectionQuestion != null) { SelectionQuestion aux; if (question is MultipleSelectionQuestion) { aux = new MultipleSelectionQuestion { Description = selectionQuestion.Description, ExamId = selectionQuestion.ExamId, Options = selectionQuestion.Options, Answers = selectionQuestion.Answers, Exam = selectionQuestion.Exam, Id = selectionQuestion.Id, Variables = selectionQuestion.Variables }; } else { aux = new SingleSelectionQuestion { Description = selectionQuestion.Description, ExamId = selectionQuestion.ExamId, Options = selectionQuestion.Options, Answers = selectionQuestion.Answers, Exam = selectionQuestion.Exam, Id = selectionQuestion.Id, Variables = selectionQuestion.Variables }; } aux.Description = aux.Description.Replace("%", string.Empty).Replace("|", string.Empty); foreach (var option in aux.Options) { option.Description = option.Description.Replace("%", string.Empty).Replace("|", string.Empty); } return(aux); } return(null); }
public void WhenSettingResponseToNull_ThenIndicatesErrorOnResponse() { var question = new MultipleSelectionQuestion() { Range = new[] { "one", "two", "three" }, MaxSelections = 2 }; var notifyErrorInfo = (INotifyDataErrorInfo)question; question.Response = new[] { "one" }; Assert.IsFalse(notifyErrorInfo.GetErrors("Response").Cast <string>().Any()); question.Response = null; Assert.IsTrue(notifyErrorInfo.GetErrors("Response").Cast <string>().Any()); }
public void SaveQuestion(QuestionWithOptionsViewModel model) { MultipleSelectionQuestion question = new MultipleSelectionQuestion { Id = model.Id, ExamId = model.ExamId, Description = model.Description, Options = model.Options }; _db.Entry(question).State = EntityState.Modified; foreach (var option in question.Options) { _db.Entry(option).State = EntityState.Modified; } _db.SaveChanges(); }
public MultipleSelectionQuestion EvaluateNotationless(MultipleSelectionQuestion question) { var evaluator = new NotationlessEvaluator(); return(evaluator.Evaluate(question) as MultipleSelectionQuestion); }
public override Question CreateNewQuestion() { var question = new MultipleSelectionQuestion(this); return(question); }
public override Question CreateNewQuestion() { var question = new MultipleSelectionQuestion(this); return question; }