def test_patient_details_update_does_not_update_the_patient_header_on_failure( self, mock_update): updated_header_content = ExaminationMocks.get_patient_details_update_response_content( ).get('header') self.assertNotEqual( ExaminationMocks.get_patient_details_load_response_content().get( 'givenNames'), updated_header_content.get('givenNames')) patient_details, case_status, load_error = PatientDetails.load_by_id( ExaminationMocks.EXAMINATION_ID, SessionMocks.ACCESS_TOKEN) self.assertIsNone(load_error) self.assertIsNotNone(patient_details) starting_patient_header = patient_details.case_header self.assertEquals( starting_patient_header.given_names, ExaminationMocks.get_patient_details_load_response_content().get( 'givenNames')) error = patient_details.update( ExaminationMocks.get_patient_details_load_response_content(), SessionMocks.ACCESS_TOKEN) self.assertIsNotNone(error) ending_patient_header = patient_details.case_header self.assertNotEquals(ending_patient_header.given_names, updated_header_content.get('givenNames')) self.assertEquals(starting_patient_header.given_names, ending_patient_header.given_names)
def test_examination_overview_urgent_returns_false_if_urgency_score_is_0_and_case_closed( self): case_overview_data = ExaminationMocks.get_case_overview_content() case_overview_data['urgencyScore'] = 0 case_overview_data['open'] = False case_overview = ExaminationOverview(case_overview_data) self.assertIsFalse(case_overview.urgent())
def test_examination_overview_urgent_returns_true_if_urgency_score_gt_than_0_and_case_open( self): case_overview_data = ExaminationMocks.get_case_overview_content() case_overview_data['urgencyScore'] = 1000 case_overview_data['open'] = True case_overview = ExaminationOverview(case_overview_data) self.assertIsTrue(case_overview.urgent())
def update_medical_team(examination_id, submission, auth_token): if settings.LOCAL: return ExaminationMocks.get_successful_medical_team_update_response() else: response = MedexRequest.put(auth_token, '%s/examinations/%s/medical_team' % (settings.API_URL, examination_id), submission) return response
def create_bereaved_discussion_event(auth_token, examination_id, submission): if settings.LOCAL: return ExaminationMocks.get_successful_timeline_event_create_response() else: return MedexRequest.put(auth_token, '%s/examinations/%s/bereaved_discussion' % (settings.API_URL, examination_id), submission)
def test_initialising_with_the_valid_date_leads_appointment_details_being_set(self): bereaved_data = ExaminationMocks.get_patient_details_bereaved_form_data() bereaved_data['appointmentDate'] = '2019-03-26T13:29:50.473Z' bereaved = BereavedRepresentative(bereaved_data) self.assertEqual(bereaved.appointment_day, 26) self.assertEqual(bereaved.appointment_month, 3) self.assertEqual(bereaved.appointment_year, 2019)
def test_status_code_returns_the_status_code_of_the_response_object(self): action = 'loading' object_type = 'case' error_params = {'action': action, 'type': object_type} response = ExaminationMocks.get_unsuccessful_patient_details_load_response( ) error = GenericError(response, error_params) self.assertEqual(error.status_code, response.status_code)
def test_initialising_with_the_no_date_leads_no_appointment_details_set(self): bereaved_data = ExaminationMocks.get_patient_details_bereaved_form_data() bereaved_data['appointmentDate'] = None bereaved = BereavedRepresentative(bereaved_data) self.assertIsNone(bereaved.appointment_date) self.assertIsNone(bereaved.appointment_day) self.assertIsNone(bereaved.appointment_month) self.assertIsNone(bereaved.appointment_year)
def test_stack_trace_returns_none_if_settings_debug_is_false(self): action = 'loading' object_type = 'case' error_params = {'action': action, 'type': object_type} response = ExaminationMocks.get_unsuccessful_patient_details_load_response( ) error = GenericError(response, error_params) self.assertEqual(error.stack_trace, None)
def test_calc_age_returns_none_if__both_dates_missing(self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) examination_overview.date_of_birth = None examination_overview.date_of_death = None result = examination_overview.calc_age() self.assertIsNone(result)
def test_initialising_with_the_none_date_results_in_no_dod(self): loaded_data = ExaminationMocks.get_patient_details_load_response_content( ) loaded_data['dateOfDeath'] = NONE_DATE patient_details = PatientDetails(loaded_data) self.assertIsNone(patient_details.date_of_death) self.assertIsNone(patient_details.day_of_death) self.assertIsNone(patient_details.month_of_death) self.assertIsNone(patient_details.year_of_death)
def test_calc_age_returns_none_if_date_of_death_missing(self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) birth_date = '2019-02-02T02:02:02.000Z' examination_overview.date_of_birth = parse_datetime(birth_date) examination_overview.date_of_death = None result = examination_overview.calc_age() self.assertIsNone(result)
def test_initialising_with_a_bereaved_sets_the_representatives(self): loaded_data = ExaminationMocks.get_patient_details_load_response_content( ) bereaved = PeopleMocks.get_bereaved_representative_response_dict() loaded_data['representatives'].append(bereaved) patient_details = PatientDetails( loaded_data, DatatypeMocks.get_modes_of_disposal_list()) self.assertEqual(len(patient_details.representatives), 1) self.assertEqual(patient_details.representatives[0].full_name, bereaved['fullName'])
def test_calc_last_admission_days_ago_returns_0_if_date_of_admission_missing( self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) admission_date = None examination_overview.last_admission = parse_datetime(admission_date) result = examination_overview.calc_last_admission_days_ago() expected_days = 0 self.assertEqual(result, expected_days)
def test_calc_created_days_ago_returns_correct_number_of_days_if_case_created_date_present( self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) case_created_date = datetime.today() - timedelta(days=1) examination_overview.case_created_date = case_created_date result = examination_overview.calc_created_days_ago() expected_days = 1 self.assertEqual(result, expected_days)
def test_logger_does_record_case_create_event(self, mock): self.set_auth_cookies() log_stream = self.init_test_log_stream() form_data = ExaminationMocks.get_minimal_create_case_form_data() self.client.post('/cases/create', form_data) self.assertEqual(log_stream.event_count(), 1) event = log_stream.event(0) self.assertEqual(event['event_type'], MedexLoggerEvents.CREATED_CASE)
def test_initialising_with_a_mode_of_disposal_and_the_enums_sets_the_mode_of_disposal( self): loaded_data = ExaminationMocks.get_patient_details_load_response_content( ) mode_of_disposal = list( DatatypeMocks.get_modes_of_disposal_list().keys())[0] loaded_data['modeOfDisposal'] = mode_of_disposal patient_details = PatientDetails( loaded_data, DatatypeMocks.get_modes_of_disposal_list()) self.assertEqual(patient_details.mode_of_disposal, mode_of_disposal)
def test_get_message_returns_the_base_message_with_the_action_and_object_in( self): action = 'loading' object_type = 'case' error_params = {'action': action, 'type': object_type} error = GenericError( ExaminationMocks.get_unsuccessful_patient_details_load_response(), error_params) self.assertEqual(error.get_message(), messages.GENERAL_ERROR % (action, object_type))
def test_patient_details_update_returns_error_if_update_fails( self, mock_update): patient_details, case_status, load_error = PatientDetails.load_by_id( ExaminationMocks.EXAMINATION_ID, SessionMocks.ACCESS_TOKEN) self.assertIsNone(load_error) self.assertIsNotNone(patient_details) error = patient_details.update( ExaminationMocks.get_patient_details_load_response_content(), SessionMocks.ACCESS_TOKEN) self.assertIsNotNone(error)
def test_patient_details_full_name_correctly_joins_first_and_last_names( self): patient_details_data = ExaminationMocks.get_patient_details_load_response_content( ) patient_details = PatientDetails(patient_details_data) full_name = patient_details.full_name() self.assertEqual( full_name.split(' ')[0], patient_details_data.get('givenNames')) self.assertEqual( full_name.split(' ')[1], patient_details_data.get('surname'))
def test_patient_details_get_nhs_number_returns_unknown_if_number_not_present( self): patient_details_data = ExaminationMocks.get_patient_details_load_response_content( ) patient_details = PatientDetails(patient_details_data) self.assertIsNotNone(patient_details) patient_details.nhs_number = None display_nhs_number = patient_details.get_nhs_number() self.assertEquals(display_nhs_number, 'Unknown')
def test_calc_age_correctly_calculates_the_age_if_dates_present(self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) birth_date = '2018-02-02T02:02:02.000Z' death_date = '2019-02-02T02:02:02.000Z' examination_overview.date_of_birth = parse_datetime(birth_date) examination_overview.date_of_death = parse_datetime(death_date) result = examination_overview.calc_age() expected_age = 1 self.assertEqual(result, expected_age)
def test_medical_team_update_returns_error_if_update_fails( self, mock_update): medical_team, case_status, load_error = MedicalTeam.load_by_id( ExaminationMocks.EXAMINATION_ID, SessionMocks.ACCESS_TOKEN) self.assertIsNone(load_error) self.assertIsNotNone(case_status) self.assertIsNotNone(medical_team) error = medical_team.update( ExaminationMocks.get_medical_team_load_response_content(), SessionMocks.ACCESS_TOKEN) self.assertIsNotNone(error)
def test_landing_on_the_landing_page_returns_the_correct_template(self): self.set_auth_cookies() response = self.client.get('/') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTemplateUsed(response, 'home/index.html') context_user = self.get_context_value(response.context, 'session_user') self.assertIsNot(context_user.examinations, None) self.assertIs(type(context_user.examinations), list) count = len(ExaminationMocks.get_case_index_response_content().get( 'examinations')) self.assertEqual(len(context_user.examinations), count)
def test_get_forms_for_role_where_nothing_published_returns_form_with_enabled_true(self): user = User() user.auth_token = SessionMocks.ACCESS_TOKEN user.id_token = SessionMocks.ID_TOKEN_NAME user.check_logged_in() data = ExaminationMocks.get_empty_case_breakdown_response_content() available_forms = user.get_forms_for_role( CaseBreakdown(obj_dict=data, medical_team=None)) self.assertEquals(available_forms[0]['id'], 'admin-notes') self.assertEquals(available_forms[0]['enabled'], 'true')
def test_logger_does_record_close_case(self): self.set_auth_cookies() form_data = ExaminationMocks.get_case_outcome_close_case_form_data() log_stream = self.init_test_log_stream() self.client.post( '/cases/%s/case-outcome' % ExaminationMocks.EXAMINATION_ID, form_data) self.assertEqual(log_stream.event_count(), 1) event = log_stream.event(0) self.assertEqual(event['event_type'], MedexLoggerEvents.CLOSED_CASE)
def test_card_presenter_returns_a_correctly_formatted_appointment_date_if_date_present( self): examination_overview = ExaminationOverview( ExaminationMocks.get_case_index_response_content()['examinations'] [0]) given_date = '2019-02-02T02:02:02.000Z' examination_overview.appointment_date = parse_datetime(given_date) presenter = case_card_presenter(examination_overview) result = presenter['appointment_date'] expected_date = '02.02.2019' self.assertEqual(result, expected_date)
def test_get_forms_for_role_with_items_published_returns_form_with_enabled_false(self): user = User() user.auth_token = SessionMocks.ACCESS_TOKEN user.id_token = SessionMocks.ID_TOKEN_NAME user.check_logged_in() data = ExaminationMocks.get_case_breakdown_response_content() data['caseBreakdown']['admissionNotes']['usersDraft'] = None available_forms = user.get_forms_for_role( CaseBreakdown(obj_dict=data, medical_team=None)) self.assertEquals(available_forms[0]['id'], 'admin-notes') self.assertEquals(available_forms[0]['enabled'], 'false')
def test_logger_does_record_create_draft_timeline_event(self): self.set_auth_cookies() log_stream = self.init_test_log_stream() form_data = ExaminationMocks.get_pre_scrutiny_draft_event_data() self.client.post( '/cases/%s/case-breakdown' % ExaminationMocks.EXAMINATION_ID, form_data) self.assertEqual(log_stream.event_count(), 1) event = log_stream.event(0) self.assertEqual( event['event_type'], MedexLoggerEvents.SAVED_TIMELINE_EVENT % PreScrutinyEventForm().__class__.__name__)
def test_logger_does_record_outstanding_items_submission(self): self.set_auth_cookies() form_data = ExaminationMocks.get_case_outcome_outstanding_items_form_data( ) log_stream = self.init_test_log_stream() self.client.post( '/cases/%s/case-outcome' % ExaminationMocks.EXAMINATION_ID, form_data) self.assertEqual(log_stream.event_count(), 1) event = log_stream.event(0) self.assertEqual(event['event_type'], MedexLoggerEvents.SAVED_OUTSTANDING_ITEM)