public async Task UpdateQuestionAsync_ExistingQuestion_NoNewCategoryCreated()
        {
            var database = GetDatabase()
                           .AddQuestion("Class1", "Category1", new RandomlySelectedQuestion())
                           .Build();

            var existingQuestion = database.Context
                                   .Questions
                                   .OfType <RandomlySelectedQuestion>()
                                   .First();

            database.Reload();

            var errors  = new MockErrorCollection();
            var updater = new RandomlySelectedQuestionUpdater
                          (
                database.Context,
                existingQuestion,
                errors
                          );

            await updater.UpdateQuestionAsync();

            Assert.False(errors.HasErrors);
            Assert.Null(existingQuestion.ChoicesCategory);
            Assert.Equal(1, database.Context.QuestionCategories.Count());
        }
        public async Task UpdateQuestionAsync_NewQuestion_CreatesChoicesCategory()
        {
            var database           = GetDatabase().Build();
            var classroom          = database.Context.Classrooms.First();
            var questionCategoryId = database.Context
                                     .QuestionCategories
                                     .First()
                                     .Id;

            var errors      = new MockErrorCollection();
            var newQuestion = new RandomlySelectedQuestion()
            {
                Name = "Random Question",
                QuestionCategoryId = questionCategoryId
            };

            var updater = new RandomlySelectedQuestionUpdater
                          (
                database.Context,
                newQuestion,
                errors
                          );

            await updater.UpdateQuestionAsync();

            Assert.False(errors.HasErrors);
            Assert.NotNull(newQuestion.ChoicesCategory);
            Assert.Equal(classroom.Id, newQuestion.ChoicesCategory.ClassroomId);
            Assert.Equal("Category1: Random Question", newQuestion.ChoicesCategory.Name);
        }