def test_has_summer_quarter_section(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2012 term.quarter = "summer" schedule = _get_schedule(regid, term) self.assertTrue(has_summer_quarter_section(schedule)) term = Term() term.year = 2012 term.quarter = "autumn" self.assertRaises(DataFailureException, _get_schedule, regid, term)
def test_has_summer_quarter_section(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2012 term.quarter = "summer" schedule = _get_schedule(regid, term) self.assertTrue(has_summer_quarter_section(schedule)) term = Term() term.year = 2012 term.quarter = "autumn" schedule = _get_schedule(regid, term) self.assertFalse(has_summer_quarter_section(schedule))
def test_get_evaluations_by_section(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "summer" section = Section() section.summer_term = "A-term" section.term = term schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == 'ELCBUS': evals = _get_evaluations_by_section_and_student(section, 1443336) break self.assertIsNotNone(evals) self.assertEqual(evals[0].section_sln, 13833) self.assertEqual(evals[0].eval_open_date, datetime.datetime(2013, 7, 02, 14, 0, tzinfo=pytz.utc)) self.assertEqual(evals[0].eval_close_date,
def test_summer_term_overlaped(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS): term = Term() term.year = 2013 term.quarter = "summer" section = Section() section.summer_term = "A-term" section.term = term now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-07-10" self.assertTrue(summer_term_overlaped(now_request, section)) section.summer_term = "Full-term" self.assertFalse(summer_term_overlaped(now_request, section)) now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-08-10" self.assertTrue(summer_term_overlaped(now_request, section)) section.summer_term = "B-term" self.assertTrue(summer_term_overlaped(now_request, section)) now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-03-10" self.assertTrue(summer_term_overlaped(now_request, 'None')) self.assertTrue(summer_term_overlaped(now_request, '-'))
def test_get_subject_guide_seattle(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # 404, general guide link if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '101': self.assertEquals(get_subject_guide_by_section(section), "http://guides.lib.uw.edu/research") # has subject guide link if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '100': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/friendly.php?s=research/pnw") # has subject guide link if section.curriculum_abbr == 'PHYS' and\ section.course_number == '121': self.assertEquals( get_subject_guide_by_section(section), "%s?%s" % ("http://guides.lib.uw.edu/friendly.php", "s=research/physics_astronomy"))
def test_filter_schedule_sections_by_summer_term(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "summer" schedule = _get_schedule(regid, term) # ensure it has both A and B terms has_a_term = False has_b_term = False for section in schedule.sections: if section.summer_term == "A-term": has_a_term = True if section.summer_term == "B-term": has_b_term = True self.assertTrue(has_a_term) self.assertTrue(has_b_term) filter_schedule_sections_by_summer_term(schedule, "A-term") # the B-term section no longer exists filtered_has_b_term = False filtered_has_a_term = False filtered_has_full_term = False for section in schedule.sections: if section.summer_term == "A-term": filtered_has_a_term = True if section.summer_term == "B-term": filtered_has_b_term = True if section.summer_term == "Full-term": filtered_has_full_term = True self.assertFalse(filtered_has_b_term) self.assertTrue(filtered_has_full_term) self.assertTrue(filtered_has_a_term)
def test_get_subject_guide_tacoma(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "12345678901234567890123456789012" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # 404, general guide link if section.curriculum_abbr == 'ROLING' and\ section.course_number == '310': self.assertEquals(get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma") if section.curriculum_abbr == 'T ARTS' and\ section.course_number == '110': self.assertEquals(get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma") # has subject guide link if section.curriculum_abbr == 'ARCTIC' and\ section.course_number == '200': self.assertEquals(get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma/art")
def test_multiple_instructor(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS, ): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "summer" schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == "TRAIN" and section.course_number == "102" and section.section_id == "A": evals = _get_evaluations_by_section_and_student(section, 1033334) break self.assertIsNotNone(evals) self.assertEqual(len(evals), 1) self.assertEqual(evals[0].section_sln, 13833) self.assertEqual(evals[0].eval_open_date, datetime.datetime(2013, 8, 23, 14, 0, 0, tzinfo=pytz.utc)) self.assertEqual(evals[0].eval_close_date, datetime.datetime(2013, 8, 29, 6, 59, 59, tzinfo=pytz.utc)) self.assertEqual(len(evals[0].instructor_ids), 3) self.assertEqual(evals[0].instructor_ids[0], 123456781) self.assertEqual(evals[0].instructor_ids[1], 123456782) self.assertEqual(evals[0].instructor_ids[2], 123456798)
def test_get_evaluations_by_section(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "summer" section = Section() section.summer_term = "A-term" section.term = term schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == 'ELCBUS': evals = _get_evaluations_by_section_and_student( section, 1443336) break self.assertIsNotNone(evals) self.assertEqual(evals[0].section_sln, 13833) self.assertEqual( evals[0].eval_open_date, datetime.datetime(2013, 7, 02, 14, 0, tzinfo=pytz.utc)) self.assertEqual(
def test_multiple_instructors(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "summer" schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '102' and\ section.section_id == 'A': evals = _get_evaluations_by_section_and_student( section, 1033334) break self.assertIsNotNone(evals) self.assertEqual(len(evals), 1) self.assertEqual(evals[0].section_sln, 13833) self.assertEqual( evals[0].eval_open_date, datetime.datetime(2013, 8, 23, 14, 0, 0, tzinfo=pytz.utc)) self.assertEqual( evals[0].eval_close_date, datetime.datetime(2013, 8, 29, 6, 59, 59, tzinfo=pytz.utc)) self.assertEqual(len(evals[0].instructor_ids), 3) self.assertEqual(evals[0].instructor_ids[0], 123456781) self.assertEqual(evals[0].instructor_ids[1], 123456782) self.assertEqual(evals[0].instructor_ids[2], 123456798)
def test_get_subject_guide_tacoma(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "12345678901234567890123456789012" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # 404, general guide link if section.curriculum_abbr == 'ROLING' and\ section.course_number == '310': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma") if section.curriculum_abbr == 'T ARTS' and\ section.course_number == '110': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma") # has subject guide link if section.curriculum_abbr == 'ARCTIC' and\ section.course_number == '200': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/tacoma/art")
def test_get_subject_guide_seattle(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # 404, general guide link if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '101': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/research") # has subject guide link if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '100': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/friendly.php?s=research/pnw") # has subject guide link if section.curriculum_abbr == 'PHYS' and\ section.course_number == '121': self.assertEquals( get_subject_guide_by_section(section), "%s?%s" % ("http://guides.lib.uw.edu/friendly.php", "s=research/physics_astronomy"))
def test_get_by_schedule(self): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2012 term.quarter = "summer" schedule = _get_schedule(regid, term) buildings = get_buildings_by_schedule(schedule) self.assertEquals(len(buildings), 3)
def test_get_subject_guide_by_section(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: if section.curriculum_abbr == 'TRAIN': self.assertEquals( get_subject_guide_by_section(section), "http://www.lib.washington.edu/subject/") if section.curriculum_abbr == 'PHYS': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.washington.edu/physics_astronomy")
def test_get_offset(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): term = Term() term.year = 2013 term.quarter = "autumn" term.first_day_quarter = datetime.date(2013, 9, 11) date_prev = datetime.date(2013, 9, 10) date_equal = datetime.date(2013, 9, 11) date_post = datetime.date(2013, 9, 12) offset_prev = _get_offset(date_prev, term) self.assertEqual(offset_prev, -1) offset_equal = _get_offset(date_equal, term) self.assertEqual(offset_equal, 0) offset_post = _get_offset(date_post, term) self.assertEqual(offset_post, 1)
def test_get_subject_guide_bothell(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "FE36CCB8F66711D5BE060004AC494FCD" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # has subject guide link if section.curriculum_abbr == 'BISSEB' and\ section.course_number == '259': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/bothell/businternational") # 404, general guide link if section.curriculum_abbr == 'BCWRIT' and\ section.course_number == '500': self.assertEquals(get_subject_guide_by_section(section), "http://guides.lib.uw.edu/bothell/")
def test_get_subject_guide_bothell(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS): regid = "FE36CCB8F66711D5BE060004AC494FCD" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) for section in schedule.sections: # has subject guide link if section.curriculum_abbr == 'BISSEB' and\ section.course_number == '259': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/bothell/businternational") # 404, general guide link if section.curriculum_abbr == 'BCWRIT' and\ section.course_number == '500': self.assertEquals( get_subject_guide_by_section(section), "http://guides.lib.uw.edu/bothell/")
def _json_to_term_model(term_data): """ Returns a term model created from the passed json data. param: term_data loaded json data """ strptime = datetime.strptime day_format = "%Y-%m-%d" datetime_format = "%Y-%m-%dT%H:%M:%S" term = TermModel() term.year = term_data["Year"] term.quarter = term_data["Quarter"] term.last_day_add = parse_sws_date(term_data["LastAddDay"]) term.first_day_quarter = parse_sws_date(term_data["FirstDay"]) term.last_day_instruction = parse_sws_date(term_data["LastDayOfClasses"]) term.last_day_drop = parse_sws_date(term_data["LastDropDay"]) if term_data["ATermLastDay"] is not None: term.aterm_last_date = parse_sws_date(term_data["ATermLastDay"]) if term_data["BTermFirstDay"] is not None: term.bterm_first_date = parse_sws_date(term_data["BTermFirstDay"]) if term_data["LastAddDayATerm"] is not None: term.aterm_last_day_add = parse_sws_date(term_data["LastAddDayATerm"]) if term_data["LastAddDayBTerm"] is not None: term.bterm_last_day_add = parse_sws_date(term_data["LastAddDayBTerm"]) term.last_final_exam_date = parse_sws_date(term_data["LastFinalExamDay"]) term.grading_period_open = strptime( term_data["GradingPeriodOpen"], datetime_format) if term_data["GradingPeriodOpenATerm"] is not None: term.aterm_grading_period_open = strptime( term_data["GradingPeriodOpenATerm"], datetime_format) term.grading_period_close = strptime( term_data["GradingPeriodClose"], datetime_format) term.grade_submission_deadline = strptime( term_data["GradeSubmissionDeadline"], datetime_format) term.registration_services_start = parse_sws_date(term_data["RegistrationServicesStart"]) term.registration_period1_start = parse_sws_date(term_data["RegistrationPeriods"][0]["StartDate"]) term.registration_period1_end = parse_sws_date(term_data["RegistrationPeriods"][0]["EndDate"]) term.registration_period2_start = parse_sws_date(term_data["RegistrationPeriods"][1]["StartDate"]) term.registration_period2_end = parse_sws_date(term_data["RegistrationPeriods"][1]["EndDate"]) term.registration_period3_start = parse_sws_date(term_data["RegistrationPeriods"][2]["StartDate"]) term.registration_period3_end = parse_sws_date(term_data["RegistrationPeriods"][2]["EndDate"]) term.time_schedule_construction = [] for campus in term_data["TimeScheduleConstruction"]: tsc = TimeScheduleConstruction( campus=campus.lower(), is_on=(term_data["TimeScheduleConstruction"][campus] is True)) term.time_schedule_construction.append(tsc) term.clean_fields() return term
def test_multiple_evals(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == 'TRAIN' and\ section.course_number == '100' and\ section.section_id == 'A': evals = _get_evaluations_by_section_and_student( section, 1033334) break self.assertIsNotNone(evals) self.assertEqual(len(evals), 3) self.assertEqual(evals[0].section_sln, 17169) self.assertEqual( evals[0].eval_open_date, datetime.datetime(2013, 5, 30, 15, 0, 0, tzinfo=pytz.utc)) self.assertEqual( evals[0].eval_close_date, datetime.datetime(2013, 7, 1, 7, 59, 59, tzinfo=pytz.utc)) self.assertFalse(evals[0].is_completed) self.assertEqual( evals[1].eval_open_date, datetime.datetime(2013, 6, 5, 7, 0, 0, tzinfo=pytz.utc)) self.assertEqual( evals[1].eval_close_date, datetime.datetime(2013, 6, 17, 6, 59, 59, tzinfo=pytz.utc)) self.assertFalse(evals[1].is_completed) self.assertEqual( evals[2].eval_open_date, datetime.datetime(2013, 6, 10, 7, 0, 0, tzinfo=pytz.utc)) self.assertEqual( evals[2].eval_close_date, datetime.datetime(2013, 6, 19, 6, 59, 59, tzinfo=pytz.utc)) self.assertTrue(evals[2].is_completed) now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-05-30" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data), 0) # open dates of 1 eval now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-05-31" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data), 1) self.assertEqual(json_data[0]['close_date'], "2013-07-01 07:59:59 UTC+0000") # after open dates of 1 eval now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-04" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data), 1) # after open dates of two evals now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-05" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data), 2) self.assertEqual(json_data[0]['close_date'], "2013-07-01 07:59:59 UTC+0000") self.assertEqual(json_data[1]['close_date'], "2013-06-17 06:59:59 UTC+0000") # after open dates of three evals now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-10" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data), 2) # after close date of one eval now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-17" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data), 1) self.assertEqual(json_data[0]['close_date'], "2013-07-01 07:59:59 UTC+0000") # after close date of two evals now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-19" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data), 1) # after close date of last eval now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-07-02" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data), 0)
def _json_to_term_model(term_data): """ Returns a term model created from the passed json data. param: term_data loaded json data """ strptime = datetime.strptime day_format = "%Y-%m-%d" datetime_format = "%Y-%m-%dT%H:%M:%S" term = TermModel() term.year = term_data["Year"] term.quarter = term_data["Quarter"] term.last_day_add = parse_sws_date(term_data["LastAddDay"]) term.first_day_quarter = parse_sws_date(term_data["FirstDay"]) term.last_day_instruction = parse_sws_date(term_data["LastDayOfClasses"]) term.last_day_drop = parse_sws_date(term_data["LastDropDay"]) term.census_day = parse_sws_date(term_data["CensusDay"]) if term_data["ATermLastDay"] is not None: term.aterm_last_date = parse_sws_date(term_data["ATermLastDay"]) if term_data["BTermFirstDay"] is not None: term.bterm_first_date = parse_sws_date(term_data["BTermFirstDay"]) if term_data["LastAddDayATerm"] is not None: term.aterm_last_day_add = parse_sws_date(term_data["LastAddDayATerm"]) if term_data["LastAddDayBTerm"] is not None: term.bterm_last_day_add = parse_sws_date(term_data["LastAddDayBTerm"]) term.last_final_exam_date = parse_sws_date(term_data["LastFinalExamDay"]) term.grading_period_open = strptime(term_data["GradingPeriodOpen"], datetime_format) if term_data["GradingPeriodOpenATerm"] is not None: term.aterm_grading_period_open = strptime( term_data["GradingPeriodOpenATerm"], datetime_format) term.grading_period_close = strptime(term_data["GradingPeriodClose"], datetime_format) term.grade_submission_deadline = strptime( term_data["GradeSubmissionDeadline"], datetime_format) term.registration_services_start = parse_sws_date( term_data["RegistrationServicesStart"]) term.registration_period1_start = parse_sws_date( term_data["RegistrationPeriods"][0]["StartDate"]) term.registration_period1_end = parse_sws_date( term_data["RegistrationPeriods"][0]["EndDate"]) term.registration_period2_start = parse_sws_date( term_data["RegistrationPeriods"][1]["StartDate"]) term.registration_period2_end = parse_sws_date( term_data["RegistrationPeriods"][1]["EndDate"]) term.registration_period3_start = parse_sws_date( term_data["RegistrationPeriods"][2]["StartDate"]) term.registration_period3_end = parse_sws_date( term_data["RegistrationPeriods"][2]["EndDate"]) term.time_schedule_construction = [] for campus in term_data["TimeScheduleConstruction"]: tsc = TimeScheduleConstruction( campus=campus.lower(), is_on=(term_data["TimeScheduleConstruction"][campus] is True)) term.time_schedule_construction.append(tsc) term.clean_fields() return term
def test_multiple_instructor(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS=FDAO_SWS, RESTCLIENTS_PWS_DAO_CLASS=FDAO_PWS, RESTCLIENTS_IASYSTEM_DAO_CLASS=FDAO_IAS, ): regid = "9136CCB8F66711D5BE060004AC494FFE" term = Term() term.year = 2013 term.quarter = "spring" schedule = _get_schedule(regid, term) evals = None for section in schedule.sections: if section.curriculum_abbr == "TRAIN" and section.course_number == "100" and section.section_id == "A": evals = _get_evaluations_by_section_and_student(section, 1033334) break self.assertIsNotNone(evals) self.assertEqual(len(evals), 3) self.assertEqual(evals[0].section_sln, 17169) self.assertEqual(evals[0].eval_open_date, datetime.datetime(2013, 5, 30, 15, 0, 0, tzinfo=pytz.utc)) self.assertEqual(evals[0].eval_close_date, datetime.datetime(2013, 7, 1, 7, 59, 59, tzinfo=pytz.utc)) self.assertEqual(evals[1].eval_open_date, datetime.datetime(2013, 6, 5, 7, 0, 0, tzinfo=pytz.utc)) self.assertEqual(evals[1].eval_close_date, datetime.datetime(2013, 6, 17, 6, 59, 59, tzinfo=pytz.utc)) self.assertEqual(evals[2].eval_open_date, datetime.datetime(2013, 6, 10, 7, 0, 0, tzinfo=pytz.utc)) self.assertEqual(evals[2].eval_close_date, datetime.datetime(2013, 6, 19, 6, 59, 59, tzinfo=pytz.utc)) now_request = RequestFactory().get("/") now_request.session = {} now_request.session["myuw_override_date"] = "2013-05-30" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNone(json_data) # after show date and open dates of 1 eval now_request.session = {} now_request.session["myuw_override_date"] = "2013-05-31" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data["evals"]), 1) self.assertEqual(json_data["close_date"], "2013-07-01T07:59:59+00:00") # after open dates of 1 eval now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-04" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data["evals"]), 1) self.assertEqual(json_data["close_date"], "2013-07-01T07:59:59+00:00") # after open dates of two evals now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-05" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data["evals"]), 2) self.assertEqual(json_data["close_date"], "2013-06-17T06:59:59+00:00") # after open dates of three evals now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-10" json_data = json_for_evaluation(now_request, evals, None) self.assertIsNotNone(json_data) self.assertEqual(len(json_data["evals"]), 3) self.assertEqual(json_data["close_date"], "2013-06-17T06:59:59+00:00") # after close date of one eval now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-17" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data["evals"]), 2) self.assertEqual(json_data["close_date"], "2013-06-19T06:59:59+00:00") # after close date of two evals now_request.session = {} now_request.session["myuw_override_date"] = "2013-06-19" json_data = json_for_evaluation(now_request, evals, None) self.assertEqual(len(json_data["evals"]), 1) self.assertEqual(json_data["close_date"], "2013-07-01T07:59:59+00:00")