Exemple #1
0
class TwinCitiesGradeCalculationTests(SisTestMixin, TestCase):
    def setUp(self):
        self.data = SampleTCData()
        self.data.create_sample_tc_data()
        self.data.create_sample_tc_benchmark_data()
        self.fetch_useful_data_and_bind_to_self()
        build_grade_cache()

    def fetch_useful_data_and_bind_to_self(self):
        self.student = self.data.tc_student3
        self.marking_period = MarkingPeriod.objects.get( name = "S1-TC" )
        self.course_section = CourseSection.objects.get( name = "bus2-section-TC-2014-2015")

    def get_benchmark_grade(self):
        """ get the benchmark grade for this particular student, 
        course_section and marking_period """
        grade, aggregate_id = gradebook_get_average_and_pk(
            student = self.student, 
            course_section = self.course_section, 
            marking_period = self.marking_period
            )
        return grade

    def force_benchmark_to_recalculate_grades(self):
        """ this wraps a function known to force a recalculation of 
        benchmark grades """
        benchmark_calculate_course_aggregate(
            student = self.student, 
            course_section = self.course_section, 
            marking_period = self.marking_period
            )

    def test_baseline_grade_calculation(self):
        """ assert benchmark is calculating correctly from the sample_data"""
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.70'))

    def test_grade_after_adding_new_category(self):
        """ create new Finals category and assert grades are as expected """
        self.data.create_new_category_and_adjust_all_category_weights()
        Mark.objects.create(
            item = Item.objects.get( name = "Final Exam 1" ),
            student = self.student,
            mark = 4.0
        )
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.75'))

    def test_adding_new_category_for_student_with_no_grade_in_the_new_category(self):
        # check the grade before adding a new category
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.70'))

        # add the new category and force a recalculation
        self.data.create_new_category_and_adjust_all_category_weights()
        self.force_benchmark_to_recalculate_grades()

        # check the new grade
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.74'))
Exemple #2
0
class TwinCitiesGradeCalculationTests(SisTestMixin, TestCase):
    def setUp(self):
        self.data = SampleTCData()
        self.data.create_sample_tc_data()
        self.data.create_sample_tc_benchmark_data()
        self.fetch_useful_data_and_bind_to_self()
        build_grade_cache()

    def fetch_useful_data_and_bind_to_self(self):
        self.student = self.data.tc_student3
        self.marking_period = MarkingPeriod.objects.get(name="S1-TC")
        self.course_section = CourseSection.objects.get(
            name="bus2-section-TC-2014-2015")

    def get_benchmark_grade(self):
        """ get the benchmark grade for this particular student, 
        course_section and marking_period """
        grade, aggregate_id = gradebook_get_average_and_pk(
            student=self.student,
            course_section=self.course_section,
            marking_period=self.marking_period)
        return grade

    def force_benchmark_to_recalculate_grades(self):
        """ this wraps a function known to force a recalculation of 
        benchmark grades """
        benchmark_calculate_course_aggregate(
            student=self.student,
            course_section=self.course_section,
            marking_period=self.marking_period)

    def test_baseline_grade_calculation(self):
        """ assert benchmark is calculating correctly from the sample_data"""
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.70'))

    def test_grade_after_adding_new_category(self):
        """ create new Finals category and assert grades are as expected """
        self.data.create_new_category_and_adjust_all_category_weights()
        Mark.objects.create(item=Item.objects.get(name="Final Exam 1"),
                            student=self.student,
                            mark=4.0)
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.75'))

    def test_adding_new_category_for_student_with_no_grade_in_the_new_category(
            self):
        # check the grade before adding a new category
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.70'))

        # add the new category and force a recalculation
        self.data.create_new_category_and_adjust_all_category_weights()
        self.force_benchmark_to_recalculate_grades()

        # check the new grade
        grade = self.get_benchmark_grade()
        self.assertEqual(grade, Decimal('3.74'))