Ejemplo n.º 1
0
        public async Task UpdateQuestionCategoryAsync_CategoryUpdated()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .AddQuestionCategory("Class1", "Category1")
                           .Build();

            var questionCategory = database.Context.QuestionCategories
                                   .Include(qc => qc.Classroom)
                                   .First();

            // Update the category
            database.Context.Entry(questionCategory).State = EntityState.Detached;
            questionCategory.Name = "Category1Updated";

            // Apply the update
            var questionCategoryService = new QuestionCategoryService(database.Context);
            await questionCategoryService.UpdateQuestionCategoryAsync
            (
                "Class1",
                questionCategory
            );

            database.Reload();

            questionCategory = database.Context.QuestionCategories
                               .Include(qc => qc.Classroom)
                               .Single();

            Assert.Equal("Class1", questionCategory.Classroom.Name);
            Assert.Equal("Category1Updated", questionCategory.Name);
        }
Ejemplo n.º 2
0
        public async Task CreateQuestionCategoryAsync_CategoryCreated()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .Build();

            var questionCategoryService = new QuestionCategoryService(database.Context);
            await questionCategoryService.CreateQuestionCategoryAsync
            (
                "Class1",
                new QuestionCategory()
            {
                Name = "Category1"
            }
            );

            database.Reload();

            var questionCategory = database.Context.QuestionCategories
                                   .Include(qc => qc.Classroom)
                                   .Single();

            Assert.Equal("Class1", questionCategory.Classroom.Name);
            Assert.Equal("Category1", questionCategory.Name);
        }
Ejemplo n.º 3
0
        public async Task GetQuestionCategoryAsync_DoesntExist_ReturnNull()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .Build();

            var questionCategoryService = new QuestionCategoryService(database.Context);
            var category = await questionCategoryService.GetQuestionCategoryAsync
                           (
                "Class1",
                id : 1
                           );

            Assert.Null(category);
        }
Ejemplo n.º 4
0
        public async Task GetQuestionCategoriesAsync_OnlyForClassroom()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .AddClassroom("Class2")
                           .AddQuestionCategory("Class1", "Category1")
                           .AddQuestionCategory("Class1", "Category2")
                           .AddQuestionCategory("Class2", "Category1")
                           .Build();

            var questionCategoryService = new QuestionCategoryService(database.Context);
            var categories = await questionCategoryService.GetQuestionCategoriesAsync("Class1");

            Assert.Equal(2, categories.Count);
            Assert.Equal("Class1", categories[0].Classroom.Name);
            Assert.Equal("Category1", categories[0].Name);
            Assert.Equal("Class1", categories[0].Classroom.Name);
            Assert.Equal("Category2", categories[1].Name);
        }
Ejemplo n.º 5
0
        public async Task UpdateQuestionCategoryAsync_IsChoicesCategory_Throws()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .AddQuestionCategory("Class1", "Category1")
                           .AddQuestion
                           (
                "Class1",
                "Category1",
                new RandomlySelectedQuestion()
            {
                ChoicesCategory = new QuestionCategory()
                {
                    Name = "Randomly Selected Question Category"
                }
            }
                           ).Build();

            var questionCategory = database.Context.QuestionCategories
                                   .Include(qc => qc.Classroom)
                                   .Single(qc => qc.RandomlySelectedQuestionId.HasValue);

            questionCategory.Classroom = database.Context.Classrooms.First();
            database.Context.SaveChanges();

            // Update the category
            database.Context.Entry(questionCategory).State = EntityState.Detached;
            questionCategory.Name = "New Category Name";

            // Apply the update
            var questionCategoryService = new QuestionCategoryService(database.Context);

            await Assert.ThrowsAsync <InvalidOperationException>
            (
                async() => await questionCategoryService.UpdateQuestionCategoryAsync
                (
                    "Class1",
                    questionCategory
                )
            );
        }
Ejemplo n.º 6
0
        public async Task GetQuestionCategoryAsync_Exists_ReturnCategory()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .AddQuestionCategory("Class1", "Category1")
                           .Build();

            var questionCategoryId = database.Context.QuestionCategories.First().Id;

            database.Reload();

            var questionCategoryService = new QuestionCategoryService(database.Context);
            var category = await questionCategoryService.GetQuestionCategoryAsync
                           (
                "Class1",
                questionCategoryId
                           );

            Assert.Equal("Class1", category.Classroom.Name);
            Assert.Equal("Category1", category.Name);
        }
Ejemplo n.º 7
0
        public async Task DeleteQuestionCategoryAsync_CategoryDeleted()
        {
            var database = new TestDatabaseBuilder()
                           .AddClassroom("Class1")
                           .AddQuestionCategory("Class1", "Category1")
                           .Build();

            var questionCategoryId = database.Context.QuestionCategories.First().Id;

            database.Reload();

            var questionCategoryService = new QuestionCategoryService(database.Context);
            await questionCategoryService.DeleteQuestionCategoryAsync
            (
                "Class1",
                questionCategoryId
            );

            database.Reload();

            Assert.Equal(0, database.Context.QuestionCategories.Count());
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Populates dropdown lists required by the Create/Edit actions.
        /// </summary>
        private async Task PopulateDropDownsAsync(Assignment assignment = null)
        {
            ViewBag.AvailableQuestions = await QuestionService.GetQuestionsAsync(ClassroomName);

            var availableCategories = await QuestionCategoryService
                                      .GetQuestionCategoriesAsync(ClassroomName);

            var defaultCategory = assignment?.Questions
                                  ?.LastOrDefault()
                                  ?.Question
                                  ?.QuestionCategory;

            ViewBag.AvailableCategories = availableCategories
                                          .OrderBy(qc => qc.Name, new NaturalComparer())
                                          .Select
                                          (
                category => new SelectListItem()
            {
                Text     = category.Name,
                Value    = category.Id.ToString(),
                Selected = (category == defaultCategory)
            }
                                          ).ToList();
        }