예제 #1
0
    def check_payload_into_student_group(self, cls, settings_name):
        """Checks payload_into_settings, from_payload, set_into_settings."""
        payload, expected_triggers = self.create_payload_triggers(
            cls=cls, availabilities=cls.AVAILABILITY_VALUES)
        expected_group = student_groups.StudentGroupDTO(
            self.COURSE_NAME, {settings_name: expected_triggers})
        the_dict = {}
        sg = student_groups.StudentGroupDTO(self.COURSE_NAME, the_dict)
        cls.payload_into_settings(payload, self.course, sg)

        # Order should not matter, but the way the expected_triggers values
        # are generated, for some trigger test classes, they are in fact in
        # a particular order (e.g. in KNOWN_MILESTONE order).
        self.assertItemsEqual(expected_triggers,
                              sg.get_triggers(settings_name))
        self.assertItemsEqual(expected_triggers, the_dict[settings_name])

        # So, place the potentially non-ordered results in that order before
        # comparing nested structures that contain them.
        not_in_order = sg.get_triggers(settings_name)
        in_order = self.place_triggers_in_expected_order(not_in_order, cls)
        sg.set_triggers(settings_name, in_order)

        self.assertEquals(expected_group.dict, sg.dict)

        # Absent from payload should remove from settings. Use student_group
        # created above, since it will have contents to be removed.
        cls.payload_into_settings({}, self.course, sg)
        # Property is always present in StudentGroupDTO, but as empty list.
        self.assertEquals({settings_name: []}, sg.dict)
        self.assertEquals([], sg.get_triggers(settings_name))
        self.assertEquals([], the_dict[settings_name])
 def _all_sg(self):
     return student_groups.StudentGroupDTO(
         self.COURSE_NAME, {
             'course_triggers': [],
             'start_date': self.past_hour_text,
             'end_date': self.next_hour_text,
         })
 def create_payload_triggers(self, cls, availabilities=None, payload=None):
     payload, expected_triggers, env = self.BASE.create_payload_triggers(
         self, cls, availabilities=availabilities, payload=payload)
     properties = {cls.SETTINGS_NAME: expected_triggers}
     # Course start/end date/time settings in the 'course' dict of the
     # Course settings map to StudentGroupDTO properties of the same name.
     for setting, when in env.get('course', {}).iteritems():
         properties[setting] = when
     expected_group = student_groups.StudentGroupDTO(
         self.COURSE_NAME, properties)
     return payload, expected_triggers, expected_group
예제 #4
0
    def check_in_student_group(self, cls, settings_name):
        # in_settings() has side-effects on the supplied settings if empty.
        the_dict = {}
        sg = student_groups.StudentGroupDTO(self.COURSE_NAME, the_dict)
        self.assertEquals([], cls.in_settings(sg))
        self.assertTrue(settings_name in the_dict)

        expected_triggers = self.create_triggers()

        # Copy each encoded trigger in the expected_triggers into the
        # StudentGroupDTO property, so that they are distinct dict objects.
        sg.set_triggers(settings_name, [et.copy() for et in expected_triggers])
        self.assertTrue(settings_name in the_dict)
        self.assertItemsEqual(expected_triggers, cls.in_settings(sg))
예제 #5
0
    def check_payload_into_student_group(self, cls, settings_name):
        """Checks payload_into_settings, from_payload, set_into_settings."""
        payload, triggers, settings = self.create_payload_triggers(cls=cls,
            availabilities=cls.AVAILABILITY_VALUES)
        properties = {settings_name: triggers}
        # Course start/end date/time settings in the 'course' dict of the
        # Course settings map to StudentGroupDTO properties of the same name.
        for setting, when in settings.get('course', {}).iteritems():
            properties[setting] = when
        expected_group = student_groups.StudentGroupDTO(
            self.COURSE_NAME, properties)
        the_dict = {}
        sg = student_groups.StudentGroupDTO(self.COURSE_NAME, the_dict)
        cls.payload_into_settings(payload, self.course, sg)

        # Order should not matter, but the way the triggers values are
        # generated, for some trigger test classes, they are in fact in
        # a particular order (e.g. in KNOWN_MILESTONE order).
        self.assertItemsEqual(triggers, sg.get_triggers(settings_name))
        self.assertItemsEqual(triggers, the_dict[settings_name])

        # So, place the potentially non-ordered results in that order before
        # comparing nested structures that contain them.
        not_in_order = sg.get_triggers(settings_name)
        in_order = self.place_triggers_in_expected_order(not_in_order, cls)
        sg.set_triggers(settings_name, in_order)

        self.assertEquals(expected_group.dict, sg.dict)

        # Absent from payload should remove from settings. Use student_group
        # created above, since it will have properties needing removal
        # (start_date and end_date).
        cls.payload_into_settings(self.empty_form, self.course, sg)
        # Property is always present in StudentGroupDTO, but as empty list.
        self.assertEquals({settings_name: []}, sg.dict)
        self.assertEquals([], sg.get_triggers(settings_name))
        self.assertEquals([], the_dict[settings_name])
 def _dates_sg(self):
     return student_groups.StudentGroupDTO(self.COURSE_NAME, {
         'start_date': self.past_hour_text,
         'end_date': self.next_hour_text,
     })
 def _empty_sg(self):
     return student_groups.StudentGroupDTO(self.COURSE_NAME, {
         'course_triggers': [],
     })
 def test_for_form(self):
     empty_sg = student_groups.StudentGroupDTO(self.COURSE_NAME, {})
     all_sg = student_groups.StudentGroupDTO(self.COURSE_NAME, {})
     self.check_for_form(self.sg_content_ot, empty_sg, all_sg)