def drop_in_advisors_for_dept_code(dept_code): dept_code = dept_code.upper() advisor_assignments = DropInAdvisor.advisors_for_dept_code(dept_code) feeds = [] for a in advisor_assignments: transformed_user = authorized_users_api_feed([a.authorized_user])[0] transformed_user['available'] = a.is_available feeds.append(transformed_user) return feeds
def test_feature_flag(self, client, fake_auth, app): """Appointments feature is false.""" dept_code = 'QCADV' advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0] fake_auth.login( AuthorizedUser.find_by_id(advisor.authorized_user_id).uid) appointment = AppointmentTestUtil.create_appointment(client, dept_code) with override_config(app, 'FEATURE_FLAG_ADVISOR_APPOINTMENTS', False): self._check_in(client, appointment['id'], expected_status_code=401)
def _create_department_memberships(): for dept_code, dept_membership in _university_depts.items(): university_dept = UniversityDept.find_by_dept_code(dept_code) db.session.add(university_dept) for user in dept_membership['users']: authorized_user = AuthorizedUser.find_by_uid(user['uid']) UniversityDeptMember.create_or_update_membership( university_dept=university_dept, authorized_user=authorized_user, is_advisor=user['isAdvisor'], is_director=user['isDirector'], is_scheduler=user['isScheduler'], automate_membership=user['automate_membership'], ) if user['isDropInAdvisor']: DropInAdvisor.create_or_update_status( university_dept=university_dept, authorized_user=authorized_user, is_available=True, )
def test_reserve_appointment(self, app, client, fake_auth): """Drop-in advisor can reserve an appointment.""" dept_code = 'QCADV' advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0] user = AuthorizedUser.find_by_id(advisor.authorized_user_id) fake_auth.login(user.uid) waiting = AppointmentTestUtil.create_appointment(client, dept_code) appointment = self._reserve_appointment(client, waiting['id']) assert appointment['status'] == 'reserved' assert appointment['statusDate'] is not None assert appointment['statusBy']['id'] == user.id Appointment.delete(appointment['id'])
def test_steal_appointment_reservation(self, app, client, fake_auth): """Reserve an appointment that another advisor has reserved.""" dept_code = 'COENG' advisor_1 = DropInAdvisor.advisors_for_dept_code(dept_code)[0] user_1 = AuthorizedUser.find_by_id(advisor_1.authorized_user_id) fake_auth.login(user_1.uid) waiting = AppointmentTestUtil.create_appointment(client, dept_code) appointment = self._reserve_appointment(client, waiting['id']) assert appointment['status'] == 'reserved' assert appointment['statusDate'] is not None assert appointment['statusBy']['id'] == user_1.id client.get('/api/auth/logout') # Another advisor comes along... advisor_2 = DropInAdvisor.advisors_for_dept_code(dept_code)[1] user_2 = AuthorizedUser.find_by_id(advisor_2.authorized_user_id) fake_auth.login(user_2.uid) appointment = self._reserve_appointment(client, waiting['id']) assert appointment['status'] == 'reserved' assert appointment['statusDate'] is not None assert appointment['statusBy']['id'] == user_2.id # Clean up Appointment.delete(appointment['id'])
def test_appointment_cancel(self, app, client, fake_auth): """Drop-in advisor can cancel appointment.""" dept_code = 'QCADV' advisor = DropInAdvisor.advisors_for_dept_code(dept_code)[0] user = AuthorizedUser.find_by_id(advisor.authorized_user_id) fake_auth.login(user.uid) waiting = AppointmentTestUtil.create_appointment(client, dept_code) appointment = self._cancel_appointment(client, waiting['id'], 'Canceled by wolves') appointment_id = appointment['id'] assert appointment_id == waiting['id'] assert appointment['status'] == 'canceled' assert appointment['statusBy']['id'] == user.id assert appointment['statusBy']['uid'] == user.uid assert appointment['statusDate'] is not None Appointment.delete(appointment_id)