예제 #1
0
        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);
		}
예제 #3
0
        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);
		}
예제 #5
0
        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);
        }
예제 #6
0
        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_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_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);
		}