예제 #1
0
 def test_get_headers(self):
     # pylint: disable=protected-access
     headers = csv._get_team_membership_csv_headers(self.course)
     assert headers == [
         'username', 'external_user_id', 'mode', 'teamset_1', 'teamset_2',
         'teamset_3', 'teamset_4'
     ]
예제 #2
0
 def test_get_headers_no_teamsets(self):
     # pylint: disable=protected-access
     headers = csv._get_team_membership_csv_headers(self.course_no_teamsets)
     self.assertEqual(
         headers,
         ['user', 'mode']
     )
예제 #3
0
    def setUpClass(cls):
        super().setUpClass()
        cls.teamset_id = 'teamset_id'
        teams_config = TeamsConfig({
            'team_sets': [{
                'id': cls.teamset_id,
                'name': 'teamset_name',
                'description': 'teamset_desc',
            }]
        })
        cls.course = CourseFactory(teams_configuration=teams_config)
        # pylint: disable=protected-access
        cls.header_fields = csv._get_team_membership_csv_headers(cls.course)

        cls.team = CourseTeamFactory(course_id=cls.course.id,
                                     name='team_name',
                                     topic_id=cls.teamset_id)

        cls.user_no_program = UserFactory.create()
        cls.user_in_program = UserFactory.create()
        cls.user_in_program_no_external_id = UserFactory.create()
        cls.user_in_program_not_enrolled_through_program = UserFactory.create()

        # user_no_program is only enrolled in the course
        cls.add_user_to_course_program_team(cls.user_no_program,
                                            enroll_in_program=False)

        # user_in_program is enrolled in the course and the program, with an external_id
        cls.external_user_key = 'externalProgramUserId-123'
        cls.add_user_to_course_program_team(
            cls.user_in_program, external_user_key=cls.external_user_key)

        # user_in_program is enrolled in the course and the program, with no external_id
        cls.add_user_to_course_program_team(cls.user_in_program_no_external_id)

        # user_in_program_not_enrolled_through_program is enrolled in a program and the course, but they not connected
        cls.add_user_to_course_program_team(
            cls.user_in_program_not_enrolled_through_program,
            connect_enrollments=False)

        # initialize import manager
        cls.import_manager = csv.TeamMembershipImportManager(cls.course)
        cls.import_manager.teamset_ids = {
            ts.teamset_id
            for ts in cls.course.teamsets
        }
예제 #4
0
def csv_import(course, csv_dict_rows):
    """
    Create a csv file with the given contents and pass it to the csv import manager to test the full
    csv import flow

    Parameters:
        - csv_dict_rows: list of dicts, representing a row of the csv file
    """
    # initialize import manager
    import_manager = csv.TeamMembershipImportManager(course)
    import_manager.teamset_ids = {ts.teamset_id for ts in course.teamsets}

    with BytesIO() as mock_csv_file:
        with TextIOWrapper(mock_csv_file, write_through=True) as text_wrapper:
            # pylint: disable=protected-access
            header_fields = csv._get_team_membership_csv_headers(course)
            csv_writer = DictWriter(text_wrapper, fieldnames=header_fields)
            csv_writer.writeheader()
            csv_writer.writerows(csv_dict_rows)
            mock_csv_file.seek(0)
            import_manager.set_team_membership_from_csv(mock_csv_file)