/// <summary>
        /// Adds a question submission to the database.
        /// </summary>
        public TestDatabaseBuilder AddQuestionSubmission(
            string classroomName,
            string questionCategoryName,
            string questionName,
            string userName,
            string submissionContents,
            double score = 0.0,
            DateTime? dateSubmitted = null,
            int? seed = null,
            string cachedQuestionData = null)
        {
            var question = _buildContext.Questions
                .Where(q => q.QuestionCategory.Classroom.Name == classroomName)
                .Where(q => q.QuestionCategory.Name == questionCategoryName)
                .Single(q => q.Name == questionName);

            var user = _buildContext.Users
                .Single(u => u.UserName == userName);

            var userQuestionData = _buildContext.UserQuestionData
                .Where(uqd => uqd.User == user)
                .SingleOrDefault(uqd => uqd.Question == question);

            if (userQuestionData == null)
            {
                userQuestionData = new UserQuestionData()
                {
                    UserId = user.Id,
                    QuestionId = question.Id,
                    LastQuestionSubmission = submissionContents,
                    CachedQuestionData = cachedQuestionData,
                    CachedQuestionDataTime = dateSubmitted,
                    Seed = seed
                };

                _buildContext.UserQuestionData.Add(userQuestionData);
            }
            else
            {
                userQuestionData.LastQuestionSubmission = submissionContents;
                userQuestionData.CachedQuestionData = cachedQuestionData;
                userQuestionData.CachedQuestionDataTime = dateSubmitted;
                userQuestionData.Seed = seed;

                _buildContext.UserQuestionData.Update(userQuestionData);
            }

            var userQuestionSubmission = new UserQuestionSubmission()
            {
                DateSubmitted = dateSubmitted ?? DateTime.MinValue,
                UserQuestionData = userQuestionData,
                Score = score
            };

            _buildContext.UserQuestionSubmissions.Add(userQuestionSubmission);
            _buildContext.SaveChanges();

            return this;
        }
		/// <summary>
		/// Validates that a complete submission was retrieved from the database.
		/// </summary>
		private bool ValidateSubmission(
			UserQuestionSubmission submission, 
			string questionName, 
			string userName,
			double score, 
			DateTime dateSubmitted)
		{
			return submission.UserQuestionData != null
				&& submission.UserQuestionData.Question != null
				&& submission.UserQuestionData.User != null
				&& submission.UserQuestionData.Question.Name == questionName
				&& submission.UserQuestionData.User.UserName == userName
				&& submission.Score == score
				&& submission.DateSubmitted == dateSubmitted;
		}