public async Task UpdateQuestionAsync_RemovesAllTests_Error() { var database = GetDatabase().Build(); var question = database.Context.ClassQuestions .Include(q => q.Tests) .First(); database.Reload(); question.Tests.Clear(); var errors = new MockErrorCollection(); var loader = new ClassQuestionUpdater(database.Context, question, errors); await loader.UpdateQuestionAsync(); Assert.True(errors.HasErrors); Assert.True(errors.VerifyErrors("Tests")); database.Reload(); question = database.Context.ClassQuestions .Include(q => q.Tests) .First(); Assert.Equal(1, question.Tests.Count); Assert.Equal("Test", question.Tests[0].Name); }
public async Task UpdateQuestionAsync_UpdatesTests_NoError() { var database = GetDatabase().Build(); var question = database.Context.ClassQuestions .Include(q => q.Tests) .First(); database.Reload(); question.Tests.Clear(); question.Tests.Add(new ClassQuestionTest() { Name = "NewTest1", ExpectedOutput = "Line1\r\nLine2" }); question.Tests.Add(new ClassQuestionTest() { Name = "NewTest2", ExpectedOutput = "Line1\r\nLine2" }); var errors = new MockErrorCollection(); var loader = new ClassQuestionUpdater(database.Context, question, errors); await loader.UpdateQuestionAsync(); Assert.False(errors.HasErrors); Assert.Equal(2, question.Tests.Count); Assert.Equal("NewTest1", question.Tests[0].Name); Assert.Equal(0, question.Tests[0].Order); Assert.Equal("Line1\nLine2", question.Tests[0].ExpectedOutput); Assert.Equal("NewTest2", question.Tests[1].Name); Assert.Equal(1, question.Tests[1].Order); Assert.Equal("Line1\nLine2", question.Tests[1].ExpectedOutput); }
public async Task UpdateQuestionAsync_UpdatesRequiredMethods() { var database = GetDatabase().Build(); var question = database.Context.ClassQuestions .Include(q => q.RequiredMethods) .Include(q => q.Tests) .First(); database.Reload(); question.RequiredMethods.Clear(); question.RequiredMethods.Add(new RequiredMethod() { Name = "NewRequired" }); var errors = new MockErrorCollection(); var updater = new ClassQuestionUpdater(database.Context, question, errors); await updater.UpdateQuestionAsync(); Assert.False(errors.HasErrors); Assert.Equal(1, question.RequiredMethods.Count); Assert.Equal("NewRequired", question.RequiredMethods[0].Name); }
public async Task UpdateQuestionAsync_IncorrectTemplate_Error() { var database = GetDatabase().Build(); var question = database.Context.ClassQuestions .Include(q => q.Tests) .First(); database.Reload(); question.FileTemplate = "Missing Submission Expression"; var errors = new MockErrorCollection(); var loader = new ClassQuestionUpdater(database.Context, question, errors); await loader.UpdateQuestionAsync(); Assert.True(errors.HasErrors); Assert.True(errors.VerifyErrors("FileTemplate")); database.Reload(); question = database.Context.ClassQuestions.First(); Assert.Equal("%SUBMISSION%", question.FileTemplate); }