Esempio n. 1
0
def test_sort_schools_by_grade():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    elem_school_1 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    elem_school_2 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    elem_school_3 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    midl_school_1 = hier_gen.generate_school('Middle School', district, ID_GEN)
    midl_school_2 = hier_gen.generate_school('Middle School', district, ID_GEN)
    high_school = hier_gen.generate_school('High School', district, ID_GEN)
    schools_by_grade = hier_gen.sort_schools_by_grade([
        elem_school_1, elem_school_2, elem_school_3, midl_school_1,
        midl_school_2, high_school
    ])

    # Tests
    assert len(schools_by_grade.keys()) == 13
    assert len(schools_by_grade[0]) == 3
    assert len(schools_by_grade[1]) == 3
    assert len(schools_by_grade[2]) == 3
    assert len(schools_by_grade[3]) == 3
    assert len(schools_by_grade[4]) == 3
    assert len(schools_by_grade[5]) == 3
    assert len(schools_by_grade[6]) == 2
    assert len(schools_by_grade[7]) == 2
    assert len(schools_by_grade[8]) == 2
    assert len(schools_by_grade[9]) == 1
    assert len(schools_by_grade[10]) == 1
    assert len(schools_by_grade[11]) == 1
    assert len(schools_by_grade[12]) == 1
Esempio n. 2
0
def test_set_lang_items_lep_entry_date_exited():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    student = pop_gen.generate_student(school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    student.prg_lep = True
    student.lang_code = None
    student.lang_prof_level = None
    student.lang_title_3_prg = None
    student.prg_lep_entry_date = None
    student.prg_lep_exit_date = None
    pop_gen._set_lang_items(student,
                            lep_has_entry_date_rate=1,
                            lep_proficiency_levels=['good'],
                            lep_proficiency_levels_exit=['good'])

    # Tests
    assert student.lang_title_3_prg is None
    assert student.prg_lep_entry_date is not None
    assert student.prg_lep_exit_date is not None
Esempio n. 3
0
def test_set_up_schools_with_grades():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    elem_school_1 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    elem_school_2 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    elem_school_3 = hier_gen.generate_school('Elementary School', district,
                                             ID_GEN)
    midl_school_1 = hier_gen.generate_school('Middle School', district, ID_GEN)
    midl_school_2 = hier_gen.generate_school('Middle School', district, ID_GEN)
    high_school = hier_gen.generate_school('High School', district, ID_GEN)
    schools_with_grades = hier_gen.set_up_schools_with_grades([
        elem_school_1, elem_school_2, elem_school_3, midl_school_1,
        midl_school_2, high_school
    ], {3, 4, 5, 6, 7, 8, 11})

    # Tests
    assert len(schools_with_grades) == 6
    assert len(schools_with_grades[elem_school_1]) == 3
    assert len(schools_with_grades[elem_school_2]) == 3
    assert len(schools_with_grades[elem_school_3]) == 3
    assert len(schools_with_grades[midl_school_1]) == 3
    assert len(schools_with_grades[midl_school_2]) == 3
    assert len(schools_with_grades[high_school]) == 1
Esempio n. 4
0
def generate_hierarchy(type, name, code, id_gen: IDGen):
    state = hier_gen.generate_state(type, name, code, id_gen)
    districts = []
    schools = []
    for district_type, dist_type_count in state.config[
            'district_types_and_counts']:
        for _ in range(dist_type_count):
            district = hier_gen.generate_district(district_type, state, id_gen)
            districts.append(district)

            # Create the schools for the district
            if district.config['school_counts']['min'] < district.config[
                    'school_counts']['avg']:
                school_count = random.triangular(
                    district.config['school_counts']['min'],
                    district.config['school_counts']['max'],
                    district.config['school_counts']['avg'])
            else:
                school_count = district.config['school_counts']['min']

            convert_config_school_count_to_ratios(district.config)
            for school_type, school_type_ratio in district.config[
                    'school_types_and_ratios'].items():
                school_type_count = max(int(school_count * school_type_ratio),
                                        1)  # Make sure at least 1
                for _ in range(school_type_count):
                    school = hier_gen.generate_school(school_type, district,
                                                      id_gen)
                    schools.append(school)

    return state, districts, schools
Esempio n. 5
0
def test_generate_state():
    # Create object
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)

    # Tests
    assert isinstance(state, State)
    assert state.id == '00'
    assert state.name == 'Example State'
    assert state.code == 'ES'
Esempio n. 6
0
def test_generate_district():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)

    # Tests
    assert isinstance(district, District)
    assert district.state == state
    assert re.match(state.id + '[0-9]{5}0*', district.id)
    assert district.id[:2] == state.id
Esempio n. 7
0
def test_generate_school():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School', district, ID_GEN)

    # Tests
    assert isinstance(school, School)
    assert school.district == district
    assert re.match(district.id + '[0-9]{5}', school.id)
Esempio n. 8
0
def test_generate_staff():
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    staff = pop_gen.generate_teaching_staff_member(school, ID_GEN)

    # Tests
    assert isinstance(staff, TeachingStaff)
Esempio n. 9
0
def test_generate_school_interims():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)

    # Test
    assert school.takes_interim_asmts
Esempio n. 10
0
def test_generate_derived_demographic_no_ethnicities():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    student = pop_gen.generate_student(school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    student.reset_ethnicity()

    # Test
    assert pop_gen._generate_derived_demographic(student) == -1
Esempio n. 11
0
def test_advance_student_advanced():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    midl_school = hier_gen.generate_school('Middle School',
                                           district,
                                           ID_GEN,
                                           interim_asmt_rate=1)
    student = pop_gen.generate_student(midl_school, 6, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    schools_by_grade = {grade: [midl_school] for grade in midl_school.grades}

    # Test
    assert pop_gen.advance_student(student, schools_by_grade, hold_back_rate=0)
Esempio n. 12
0
def test_advance_student_drop_out():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    high_school = hier_gen.generate_school('High School',
                                           district,
                                           ID_GEN,
                                           interim_asmt_rate=1)
    student = pop_gen.generate_student(high_school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    schools_by_grade = {grade: [high_school] for grade in high_school.grades}

    # Test
    assert not pop_gen.advance_student(
        student, schools_by_grade, hold_back_rate=1, drop_out_rate=1)
Esempio n. 13
0
def test_generate_institution_hierarchy():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School', district, ID_GEN)
    ih = hier_gen.generate_institution_hierarchy(state, district, school,
                                                 ID_GEN)

    # Tests
    assert isinstance(ih.rec_id, int)
    assert re.match(GUID_REGEX, ih.guid)
    assert ih.state == state
    assert ih.district == district
    assert ih.school == school
    assert ih.from_date == datetime.date(2014, 9, 1)
    assert ih.to_date == datetime.date(9999, 12, 31)
Esempio n. 14
0
def test_generate_student():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    student = pop_gen.generate_student(school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])

    # Tests
    assert isinstance(student, Student)
    assert re.match('[0-9]+', student.id)
    assert re.match('[a-f0-9]+', student.external_ssid)
    assert student.school_entry_date.year == 2003
    assert student.school_entry_date.month in [8, 9]
Esempio n. 15
0
def test_repopulate_school_grade_empty_with_additional():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    elem_school = hier_gen.generate_school('Elementary School', district,
                                           ID_GEN)
    elem_school.config['students']['min'], elem_school.config['students'][
        'max'] = 100, 100
    elem_school.config['students']['avg'] = 100
    students = []
    pop_gen.repopulate_school_grade(elem_school,
                                    3,
                                    students,
                                    ID_GEN,
                                    None,
                                    2015, ['Math', 'ELA'],
                                    additional_student_choice=[3])

    # Test
    assert len(students) == 103
Esempio n. 16
0
def test_set_lang_items_lep():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    student = pop_gen.generate_student(school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    student.prg_lep = True
    student.lang_code = None
    student.lang_prof_level = None
    student.lang_title_3_prg = None
    student.prg_lep_entry_date = None
    student.prg_lep_exit_date = None
    pop_gen._set_lang_items(student, lep_proficiency_levels_exit=[])

    # Tests
    assert student.lang_code in cfg.LEP_LANGUAGE_CODES
    assert student.lang_prof_level in cfg.LEP_PROFICIENCY_LEVELS
    assert student.lang_title_3_prg in cfg.LEP_TITLE_3_PROGRAMS
Esempio n. 17
0
def test_repopulate_school_grade_almost_full_additional():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    elem_school = hier_gen.generate_school('Elementary School', district,
                                           ID_GEN)
    elem_school.config['students']['min'], elem_school.config['students'][
        'max'] = 100, 100
    elem_school.config['students']['avg'] = 100
    students = []
    for _ in range(99):
        students.append(
            pop_gen.generate_student(elem_school, 4, ID_GEN, 2015,
                                     ['ELA', 'Math']))
    pop_gen.repopulate_school_grade(elem_school,
                                    4,
                                    students,
                                    ID_GEN,
                                    None,
                                    2015, ['Math', 'ELA'],
                                    additional_student_choice=[2])

    # Test
    assert len(students) == 102
Esempio n. 18
0
def test_set_lang_items_not_lep():
    # Create objects
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    school = hier_gen.generate_school('High School',
                                      district,
                                      ID_GEN,
                                      interim_asmt_rate=1)
    student = pop_gen.generate_student(school, 11, ID_GEN, 2015,
                                       ['ELA', 'Math'])
    student.prg_lep = False
    student.lang_code = None
    student.lang_prof_level = None
    student.lang_title_3_prg = None
    student.prg_lep_entry_date = None
    student.prg_lep_exit_date = None
    pop_gen._set_lang_items(student, ifep_rate=0)

    # Tests
    assert student.lang_code is None
    assert student.lang_prof_level is None
    assert student.lang_title_3_prg is None
    assert student.prg_lep_entry_date is None
    assert student.prg_lep_exit_date is None
Esempio n. 19
0
def test_generate_school_invalid_type():
    state = hier_gen.generate_state('devel', 'Example State', 'ES', ID_GEN)
    district = hier_gen.generate_district('Big Average', state, ID_GEN)
    with pytest.raises(LookupError):
        hier_gen.generate_school('unknown', district, ID_GEN)
Esempio n. 20
0
def test_generate_state_invalid_type():
    with pytest.raises(LookupError):
        hier_gen.generate_state('unknown', 'Example State', 'ES', ID_GEN)