def test_view_with_logged_hours(self): """ Test display of shift details with hours logged in the shift. """ shift_details_page = self.shift_details_page shift_details_page.live_server_url = self.live_server_url org_obj = create_organization_with_details(self.org_detail) volunteer = create_volunteer_with_details(self.volunteer_detail, org_obj) log_hours_with_details(volunteer, self.shift, '13:00', '14:00') self.wait_for_home_page() shift_details_page.navigate_to_shift_details_view() # verify that the shift slot is decreased by 1 self.assertEqual(shift_details_page.get_shift_job(), 'job') self.assertEqual(shift_details_page.get_max_shift_volunteer(), '5') # verify that assigned volunteers shows up self.assertEqual(len(shift_details_page.get_registered_volunteers()), 1) self.assertEqual(shift_details_page.get_registered_volunteer_email(), '*****@*****.**') # verify that hours are logged by volunteer self.assertEqual(len(shift_details_page.get_logged_volunteers()), 1) self.assertEqual(shift_details_page.get_logged_volunteer_name(), 'Michael') self.assertEqual(shift_details_page.get_logged_start_time(), '1 p.m.') self.assertEqual(shift_details_page.get_logged_end_time(), '2 p.m.')
def register_logged_dataset(self): """ Utility function to create valid data for test. """ # Create shift and log hours e1 = create_event_with_details({ 'name': 'event', 'start_date': '2015-06-15', 'end_date': '2015-06-17', 'description': 'event-description', 'address': 'event-address', 'venue': 'event-venue' }) j1 = create_job_with_details({ 'name': 'job', 'start_date': '2015-06-15', 'end_date': '2015-06-15', 'description': 'job description', 'event': e1 }) s1 = create_shift_with_details({ 'date': '2015-06-15', 'start_time': '09:00', 'end_time': '15:00', 'max_volunteers': '6', 'job': j1, 'address': 'shift-address', 'venue': 'shift-venue' }) log_hours_with_details(self.v1, s1, '12:00', '13:00')
def register_dataset(self): # create shift and log hours e1 = create_event_with_details(['event', '2017-06-15', '2017-06-17']) j1 = create_job_with_details( ['job', '2017-06-15', '2017-06-15', 'job description', e1]) s1 = create_shift_with_details( ['2017-06-15', '09:00', '15:00', '6', j1]) log_hours_with_details(self.v1, s1, '12:00', '13:00')
def register_dataset(self): """ Utility function to create valid data for test. """ # Create shift and log hours e1 = create_event_with_details( ['event', '2050-06-15', '2050-06-17'] ) j1 = create_job_with_details( ['job', '2050-06-15', '2050-06-15', 'job description', e1] ) s1 = create_shift_with_details( ['2050-06-15', '09:00', '15:00', '6', j1] ) log_hours_with_details(self.v1, s1, '12:00', '13:00')
def test_edit_request_email_volunteer(self): """ checks if the volunteer gets an email when his hours are edited by admin upon his request """ volunteer_1 = create_volunteer() shift = { 'date': '2050-05-20', 'start_time': '09:00', 'end_time': '15:00', 'max_volunteers': '1', 'address': 'shift-address', 'venue': 'venue-address', } shift_1 = self.create_shift(shift) start = datetime.time(hour=10, minute=0) end = datetime.time(hour=14, minute=0) logged_shift = log_hours_with_details(volunteer_1, shift_1, start, end) start_time = datetime.time(hour=9, minute=30) end_time = datetime.time(hour=14, minute=0) edit_request = \ create_edit_request_with_details(start_time, end_time, logged_shift) vol_email = volunteer_1.email mail.outbox = [] mail.send_mail("Log Hours Edited", "message", "*****@*****.**", [vol_email]) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.subject, "Log Hours Edited") self.assertEqual(msg.to, ['*****@*****.**'])
def test_shift_edit_request(self): """ checks the edit request link received by admin """ volunteer_1 = create_volunteer() shift = { 'date': '2050-05-20', 'start_time': '09:00', 'end_time': '15:00', 'max_volunteers': '1', 'address': 'shift-address', 'venue': 'venue-address', } shift_1 = self.create_shift(shift) start = datetime.time(hour=10, minute=0) end = datetime.time(hour=14, minute=0) logged_shift = log_hours_with_details(volunteer_1, shift_1, start, end) start_time = datetime.time(hour=9, minute=30) end_time = datetime.time(hour=14, minute=0) edit_request = \ create_edit_request_with_details(start_time, end_time, logged_shift) response = self.client.get( reverse('shift:edit_request_manager', args=[shift_1.id, volunteer_1.id, edit_request.id])) self.assertEqual(response.status_code, 302)
def test_check_volunteer_reports(self): search_page = self.search_page search_page.live_server_url = self.live_server_url credentials_1 = [ 'volunteer-username', 'volunteer-first-name', 'VOLUNTEER-LAST-NAME', 'volunteer-address', 'volunteer-city', 'volunteer-state', 'volunteer-country', '9999999999', '*****@*****.**' ] org_name = 'volunteer-organization' org_obj = create_organization_with_details(org_name) vol = create_volunteer_with_details(credentials_1, org_obj) register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start=datetime.time(hour=10, minute=0) end=datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) report = create_report_with_details(vol, logged_shift) report.confirm_status = 1 report.save() search_page.navigate_to_volunteer_search_page() search_page.submit_form() self.assertEqual(search_page.element_by_xpath(self.elements.VIEW_REPORTS).text, 'View') search_page.element_by_xpath(self.elements.VIEW_REPORTS + '//a').click() self.assertEqual(search_page.remove_i18n(self.driver.current_url), self.live_server_url + PageUrls.volunteer_history_page + str(vol.id)) self.verify_report_details('1')
def test_check_report_volunteer(self): self.report_page.go_to_admin_report() country = create_country() state = create_state() city = create_city() credentials = { 'username': '******', 'first_name': 'VOLUNTEER-FIRST-NAME', 'last_name': 'volunteer-last-name', 'address': 'volunteer-address', 'city': city, 'state': state, 'country': country, 'phone_number': '9999999999', 'email': '*****@*****.**' } org_name = 'volunteer-organization' org_obj = create_organization_with_details(org_name) vol = create_volunteer_with_details(credentials, org_obj) register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start = datetime.time(hour=10, minute=0) end = datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_volunteer_name(), 'VOLUNTEER-FIRST-NAME volunteer-last-name')
def test_get_report_by_id(self): start = datetime.time(hour=10, minute=0) end = datetime.time(hour=12, minute=0) logged_shift_1 = log_hours_with_details(self.v1, self.s1, start, end) r1 = create_report_with_details(self.v1, logged_shift_1) logged_shift_2 = log_hours_with_details(self.v2, self.s2, start, end) r2 = create_report_with_details(self.v2, logged_shift_2) self.assertIsNotNone(get_report_by_id(r1.id)) self.assertIsNotNone(get_report_by_id(r2.id)) self.assertEqual(get_report_by_id(r1.id), r1) self.assertEqual(get_report_by_id(r2.id), r2) # test non-existant cases self.assertIsNone(get_report_by_id(100)) self.assertIsNone(get_report_by_id(200))
def test_view_with_logged_hours(self): shift_details_page = self.shift_details_page shift_details_page.live_server_url = self.live_server_url volunteer = create_volunteer_with_details(self.volunteer_detail) log_hours_with_details(volunteer, self.shift, '13:00', '14:00') shift_details_page.navigate_to_shift_details_view() # verify that the shift slot is decreased by 1 self.assertEqual(shift_details_page.get_shift_job(), 'job') self.assertEqual(shift_details_page.get_max_shift_volunteer(), '5') # verify that assigned volunteers shows up self.assertEqual(len(shift_details_page.get_registered_volunteers()), 1) self.assertEqual(shift_details_page.get_registered_volunteer_email(), '*****@*****.**') # verify that hours are logged by volunteer self.assertEqual(len(shift_details_page.get_logged_volunteers()), 1) self.assertEqual(shift_details_page.get_logged_volunteer_name(), 'Michael') self.assertEqual(shift_details_page.get_logged_start_time(), '1 p.m.') self.assertEqual(shift_details_page.get_logged_end_time(), '2 p.m.')
def test_check_report_hours(self): self.report_page.go_to_admin_report() vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start=datetime.time(hour=10, minute=0) end=datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_hours(), '1.00')
def create_edit_request(volunteer, shift): """ Utility function to create a valid edit request. :param volunteer: The volunteer who makes a request for editing hours :param shift: Volunteer's logged shift which is to be edited :return: EditRequest type object """ start = datetime.time(hour=9, minute=0, second=0) end = datetime.time(hour=12, minute=0, second=0) logged_shift = log_hours_with_details(volunteer, shift, start, end) start_time = datetime.time(hour=10, minute=0, second=0) end_time = datetime.time(hour=12, minute=0, second=0) return create_edit_request_with_details(start_time, end_time, logged_shift)
def test_check_report_hours(self): self.report_page.go_to_admin_report() vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start = datetime.time(hour=10, minute=0) end = datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_hours(), '1.00')
def test_reject_report(self): self.report_page.go_to_admin_report() vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start=datetime.time(hour=10, minute=0) end=datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_rejection_context(), 'Reject') report_page.reject_report() with self.assertRaises(NoSuchElementException): report_page.get_report()
def test_reject_report(self): self.report_page.go_to_admin_report() vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start = datetime.time(hour=10, minute=0) end = datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_rejection_context(), 'Reject') report_page.reject_report() with self.assertRaises(NoSuchElementException): report_page.get_report()
def test_shift_edit_request(self): """ checks the edit request link received by admin """ org_obj = create_organization_with_details(self.org_name) volunteer_1 = create_volunteer_with_details(self.volunteer_1, org_obj) shift = ['09:00', '15:00', '1'] shift_1 = self.create_shift(shift) start = datetime.time(hour=10, minute=0) end = datetime.time(hour=14, minute=0) logged_shift = log_hours_with_details(volunteer_1, shift_1, start, end) start_time = datetime.time(hour=9, minute=30) end_time = datetime.time(hour=14, minute=0) edit_request = create_edit_request_with_details(start_time, end_time, logged_shift) response = self.client.get(reverse('shift:edit_request_manager', args=[shift_1.id, volunteer_1.id, edit_request.id])) self.assertEqual(response.status_code, 302)
def test_email_on_report_approval(self): vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start = datetime.time(hour=10, minute=0) end = datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) report = create_report_with_details(vol, logged_shift) mail.send_mail("Report Approved", "message", "*****@*****.**", [vol.email]) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.subject, 'Report Approved') self.assertEqual(msg.to, ['*****@*****.**']) response = self.client.get('/administrator/report/approve/%s' % report.id) self.assertEqual(response.status_code, 302)
def test_check_report_volunteer(self): self.report_page.go_to_admin_report() credentials = [ 'volunteer-username', 'VOLUNTEER-FIRST-NAME', 'volunteer-last-name', 'volunteer-address', 'volunteer-city', 'volunteer-state', 'volunteer-country', '9999999999', '*****@*****.**' ] org_name = 'volunteer-organization' org_obj = create_organization_with_details(org_name) vol = create_volunteer_with_details(credentials, org_obj) register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start=datetime.time(hour=10, minute=0) end=datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_volunteer_name(), 'VOLUNTEER-FIRST-NAME volunteer-last-name')
def test_email_on_reject_report(self): self.report_page.go_to_admin_report() vol = create_volunteer() register_past_event_utility() register_past_job_utility() shift = register_past_shift_utility() start = datetime.time(hour=10, minute=0) end = datetime.time(hour=11, minute=0) logged_shift = log_hours_with_details(vol, shift, start, end) create_report_with_details(vol, logged_shift) report_page = self.report_page report_page.get_page(self.live_server_url, PageUrls.administrator_report_page) self.assertEqual(report_page.get_rejection_context(), 'Reject') report_page.reject_report() mail.outbox = [] mail.send_mail("Report Rejected", "message", "*****@*****.**", [vol.email]) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.subject, 'Report Rejected') self.assertEqual(msg.to, ['*****@*****.**'])
def test_edit_request_email_volunteer(self): """ checks if the volunteer gets an email when his hours are edited by admin upon his request """ org_obj = create_organization_with_details(self.org_name) volunteer_1 = create_volunteer_with_details(self.volunteer_1, org_obj) shift = ['09:00', '15:00', '1'] shift_1 = self.create_shift(shift) start = datetime.time(hour=10, minute=0) end = datetime.time(hour=14, minute=0) logged_shift = log_hours_with_details(volunteer_1, shift_1, start, end) start_time = datetime.time(hour=9, minute=30) end_time = datetime.time(hour=14, minute=0) edit_request = create_edit_request_with_details(start_time, end_time, logged_shift) vol_email = volunteer_1.email mail.outbox = [] mail.send_mail("Log Hours Edited", "message", "*****@*****.**", [vol_email]) self.assertEqual(len(mail.outbox), 1) msg = mail.outbox[0] self.assertEqual(msg.subject, "Log Hours Edited") self.assertEqual(msg.to, ['*****@*****.**'])
def test_clear_hours(self): """ Test clearing of shift hours. """ manage_shift_page = self.manage_shift_page self.manage_shift_page.live_server_url = self.live_server_url volunteer_1 = create_volunteer() shift = { 'date': '2050-05-20', 'start_time': '09:00', 'end_time': '15:00', 'max_volunteers': '1', 'address': 'shift-address', 'venue': 'venue-address', } shift_1 = self.create_shift(shift) start = datetime.time(hour=10, minute=0) end = datetime.time(hour=14, minute=0) logged_shift = log_hours_with_details(volunteer_1, shift_1, start, end) self.wait_for_home_page() # Open manage volunteer shift manage_shift_page.navigate_to_manage_shift_page() manage_shift_page.select_volunteer(1) self.assertEqual(manage_shift_page.get_clear_shift_hours_text(), 'Clear Hours') manage_shift_page.click_to_clear_hours() manage_shift_page.submit_form() self.assertEqual( manage_shift_page.get_logged_info_box(), "This volunteer does not have any shifts with logged hours.")
def create_report(volunteer, shift): start = datetime.time(hour=9, minute=0) end = datetime.time(hour=12, minute=0) logged_shift = log_hours_with_details(volunteer, shift, start, end) return create_report_with_details(volunteer, logged_shift)