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
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))
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)