def test_create_bad_params(self): """ Confirms create will fail if params are missing. """ del self.params["earned_graded"] with self.assertRaises(IntegrityError): PersistentSubsectionGrade.create_grade(**self.params)
def test_create(self): """ Tests model creation, and confirms error when trying to recreate model. """ created_grade = PersistentSubsectionGrade.create_grade(**self.params) with self.assertNumQueries(1): read_grade = PersistentSubsectionGrade.read_grade( user_id=self.params["user_id"], usage_key=self.params["usage_key"], ) self.assertEqual(created_grade, read_grade) self.assertEqual(read_grade.visible_blocks.blocks, self.block_records) with self.assertRaises(IntegrityError): PersistentSubsectionGrade.create_grade(**self.params)
def test_grade_override(self): grade = PersistentSubsectionGrade.create_grade(**self.params) override = PersistentSubsectionGradeOverride(grade=grade, earned_all_override=0.0, earned_graded_override=0.0) override.save() grade = PersistentSubsectionGrade.update_or_create_grade(**self.params) self.assertEqual(grade.earned_all, 0.0) self.assertEqual(grade.earned_graded, 0.0)
def create_model(self, student): """ Saves the subsection grade in a persisted model. """ if self._should_persist_per_attempted: self._log_event(log.debug, u"create_model", student) return PersistentSubsectionGrade.create_grade(**self._persisted_model_params(student))
def create_model(self, student): """ Saves the subsection grade in a persisted model. """ self._log_event(log.debug, u"create_model", student) return PersistentSubsectionGrade.create_grade( **self._persisted_model_params(student))
def test_unattempted(self): self.params['first_attempted'] = None self.params['earned_all'] = 0.0 self.params['earned_graded'] = 0.0 grade = PersistentSubsectionGrade.create_grade(**self.params) self.assertIsNone(grade.first_attempted) self.assertEqual(grade.earned_all, 0.0) self.assertEqual(grade.earned_graded, 0.0)
def test_grade_override(self): grade = PersistentSubsectionGrade.create_grade(**self.params) override = PersistentSubsectionGradeOverride( grade=grade, earned_all_override=0.0, earned_graded_override=0.0) override.save() grade = PersistentSubsectionGrade.update_or_create_grade(**self.params) self.assertEqual(grade.earned_all, 0.0) self.assertEqual(grade.earned_graded, 0.0)
def test_update_or_create_grade(self, already_created): created_grade = PersistentSubsectionGrade.create_grade(**self.params) if already_created else None self.params["earned_all"] = 7 updated_grade = PersistentSubsectionGrade.update_or_create_grade(**self.params) self.assertEqual(updated_grade.earned_all, 7) if already_created: self.assertEqual(created_grade.id, updated_grade.id) self.assertEqual(created_grade.earned_all, 6)
def test_non_optional_fields(self, field, error): del self.params[field] with self.assertRaises(error): PersistentSubsectionGrade.create_grade(**self.params)
def test_optional_fields(self, field): del self.params[field] PersistentSubsectionGrade.create_grade(**self.params)
def test_create_inconsistent_unattempted(self): self.params['attempted'] = False with self.assertRaises(ValidationError): PersistentSubsectionGrade.create_grade(**self.params)
def create_model(self, student): """ Saves the subsection grade in a persisted model. """ self._log_event(log.info, u"create_model", student) return PersistentSubsectionGrade.create_grade(**self._persisted_model_params(student))
def test_create_event(self): with patch('lms.djangoapps.grades.models.tracker') as tracker_mock: grade = PersistentSubsectionGrade.create_grade(**self.params) self._assert_tracker_emitted_event(tracker_mock, grade)
def test_unattempted_save_does_not_remove_attempt(self): PersistentSubsectionGrade.create_grade(**self.params) self.params['first_attempted'] = None grade = PersistentSubsectionGrade.update_or_create_grade(**self.params) self.assertIsInstance(grade.first_attempted, datetime) self.assertEqual(grade.earned_all, 6.0)
def test_first_attempted_not_changed_on_update(self): PersistentSubsectionGrade.create_grade(**self.params) moment = now() grade = PersistentSubsectionGrade.update_or_create_grade(**self.params) self.assertLess(grade.first_attempted, moment)
def test_course_version_is_optional(self): del self.params["course_version"] PersistentSubsectionGrade.create_grade(**self.params)