def test_get_volunteers_own_requests_correctly(self): session_id = 'sessionId' volunteer_id = '5f7c2d96e48e242b81178822' other_volunteer_id = '5f81ae36fa3b02a743177500' volunteer = Volunteer('login', 'pw', 'first', 'last', volunteer_id) self.volunteer_handler.active_user_sessions[session_id] = volunteer request_1 = Request(requester='5f81ae776db502d353a84fdf', status=RequestStatus.CREATED, items=[], volunteer=None) request_2 = Request(requester='5f81ae776db502d353a84fdf', status=RequestStatus.IN_PROGRESS, items=[], volunteer=volunteer_id, submission_date=datetime.now()) request_3 = Request(requester='5f81ae776db502d353a84fdf', status=RequestStatus.IN_PROGRESS, items=[], volunteer=other_volunteer_id, submission_date=datetime.now()) request_1_id = self.requests_dao.store_one(request_1.to_db_object()) request_2_id = self.requests_dao.store_one(request_2.to_db_object()) request_3_id = self.requests_dao.store_one(request_3.to_db_object()) requests = self.request_handler.get_volunteers_own_requests(session_id) self.assertEqual(len(requests), 1) self.assertEqual(requests[0]['id'], request_2_id)
def test_add_request_to_time_frame_correctly(self): session_id = 'someId' volunteer_id = str(ObjectId()) volunteer = Volunteer('login', 'pw', 'first', 'last', volunteer_id) self.volunteer_handler.active_user_sessions[session_id] = volunteer time_frame = TimeFrame(volunteer_id, datetime.fromisoformat('2020-10-25 12:00:00'), datetime.fromisoformat('2020-10-25 14:00:00'), []) time_frame.id = self.dao.store_one(time_frame.to_db_object()) request_1 = Request(requester=str(ObjectId()), status=RequestStatus.IN_PROGRESS, items=[], volunteer=volunteer_id) request_2 = Request(requester=str(ObjectId()), status=RequestStatus.IN_PROGRESS, items=[], volunteer=volunteer_id) request_1.id = self.requests_dao.store_one(request_1.to_db_object()) request_2.id = self.requests_dao.store_one(request_2.to_db_object()) self.time_frame_handler.add_request_to_time_frame( time_frame.id, request_1.id, session_id) self.time_frame_handler.add_request_to_time_frame( time_frame.id, request_2.id, session_id) time_frames = self.dao.get_time_frames_by_volunteer(volunteer_id) self.assertEqual(len(time_frames), 1) self.assertEqual(str(time_frames[0]['_id']), time_frame.id) self.assertEqual(len(time_frames[0]['requests']), 2) self.assertEqual(str(time_frames[0]['requests'][0]), request_1.id) self.assertEqual(str(time_frames[0]['requests'][1]), request_2.id)
def test_get_open_requests_with_area_correctly(self): volunteer_point = (60.195382, 24.938703) closest_request_point = (60.195318, 24.940731) second_closest_request_point = (60.193371, 24.943177) out_of_range_request_point = (60.143397, 24.985745) range = 1 session_id = 'sessionId' volunteer = Volunteer('login', 'pw', 'first', 'last', 'userId') self.volunteer_handler.active_user_sessions[session_id] = volunteer out_of_range_request_date = datetime.fromisoformat( '2020-10-25 13:03:55.792200') second_closest_request_date = datetime.fromisoformat( '2020-10-26 13:03:55.792200') closest_request_date = datetime.fromisoformat( '2020-10-27 13:03:55.792200') closest_request = Request(requester='5f7c2d96e48e242b81178822', status=RequestStatus.SUBMITTED, items=[], volunteer=None, delivery_address=Address( '', '', '', closest_request_point[0], closest_request_point[1]), submission_date=closest_request_date) second_closest_request = Request( requester='5f7c2d96e48e242b81178822', status=RequestStatus.SUBMITTED, items=[], volunteer=None, delivery_address=Address('', '', '', second_closest_request_point[0], second_closest_request_point[1]), submission_date=second_closest_request_date) out_of_range_request = Request( requester='5f7c2d96e48e242b81178822', status=RequestStatus.SUBMITTED, items=[], volunteer=None, delivery_address=Address('', '', '', out_of_range_request_point[0], out_of_range_request_point[1]), submission_date=out_of_range_request_date) closest_request_id = self.requests_dao.store_one( closest_request.to_db_object()) second_closest_request_id = self.requests_dao.store_one( second_closest_request.to_db_object()) out_of_range_request_id = self.requests_dao.store_one( out_of_range_request.to_db_object()) area = { 'range': range, 'lat': volunteer_point[0], 'lng': volunteer_point[1] } requests = self.request_handler.get_open_requests(session_id, area) self.assertEqual(len(requests), 2) self.assertEqual(requests[0]['id'], second_closest_request_id) self.assertEqual(requests[1]['id'], closest_request_id)
def test_get_open_requests_correctly(self): session_id = 'sessionId' volunteer = Volunteer('login', 'pw', 'first', 'last', 'userId') self.volunteer_handler.active_user_sessions[session_id] = volunteer request_1 = Request(requester='5f7c2d96e48e242b81178822', status=RequestStatus.CREATED, items=[], volunteer=None, submission_date=datetime.now()) request_2 = Request(requester='5f7c2d96e48e242b81178822', status=RequestStatus.SUBMITTED, items=[], volunteer=None, submission_date=datetime.now()) request_1_id = self.requests_dao.store_one(request_1.to_db_object()) request_2_id = self.requests_dao.store_one(request_2.to_db_object()) requests = self.request_handler.get_open_requests(session_id) self.assertEqual(len(requests), 1) self.assertEqual(requests[0]['id'], request_2_id)
def test_accept_request_with_other_status_than_submitted(self): session_id = 'sessionId' volunteer = Volunteer('login', 'pw', 'first', 'last', '5f81ae776db502d353a84fdf') self.volunteer_handler.active_user_sessions[session_id] = volunteer request = Request(requester='5f7c2d96e48e242b81178822', status=RequestStatus.CREATED, items=[], volunteer=None) request_id = self.requests_dao.store_one(request.to_db_object()) with self.assertRaises(UnexpectedRequestStatusError): self.request_handler.accept_request(request_id, session_id)
def test_submit_request_with_missing_delivery_address(self): session_id = 'sessionId' requester_id = '5f81ae776db502d353a84fdf' requester = Requester('login', 'pw', 'first', 'last', requester_id) self.requester_handler.active_user_sessions[session_id] = requester request = Request(requester=requester_id, status=RequestStatus.CREATED, items=[], volunteer=None) request_id = self.requests_dao.store_one(request.to_db_object()) with self.assertRaises(MissingDeliveryAddressError): self.request_handler.submit_request(request_id, session_id)
def test_submit_request_with_other_status_than_created(self): session_id = 'sessionId' requester_id = '5f81ae776db502d353a84fdf' requester = Requester('login', 'pw', 'first', 'last', requester_id) self.requester_handler.active_user_sessions[session_id] = requester request = Request(requester=requester_id, status=RequestStatus.IN_PROGRESS, items=[], volunteer=None, submission_date=datetime.now()) request_id = self.requests_dao.store_one(request.to_db_object()) with self.assertRaises(UnexpectedRequestStatusError): self.request_handler.submit_request(request_id, session_id)
def test_add_request_to_time_frame_with_incorrect_time_frame_id(self): session_id = 'someId' volunteer_id = str(ObjectId()) volunteer = Volunteer('login', 'pw', 'first', 'last', volunteer_id) self.volunteer_handler.active_user_sessions[session_id] = volunteer request = Request(requester=str(ObjectId()), status=RequestStatus.IN_PROGRESS, items=[], volunteer=volunteer_id) request.id = self.requests_dao.store_one(request.to_db_object()) self.assertEqual(len(self.dao.get_all()), 0) with self.assertRaises(ObjectIdNotFoundError): self.time_frame_handler.add_request_to_time_frame( str(ObjectId()), request.id, session_id)
def test_accept_request_correctly(self): session_id = 'sessionId' volunteer_id = '5f7c2d96e48e242b81178822' volunteer = Volunteer('login', 'pw', 'first', 'last', volunteer_id) self.volunteer_handler.active_user_sessions[session_id] = volunteer request = Request(requester='5f81ae776db502d353a84fdf', status=RequestStatus.SUBMITTED, items=[], volunteer=None) request_id = self.requests_dao.store_one(request.to_db_object()) self.request_handler.accept_request(request_id, session_id) request = self.request_handler.from_db_object( self.requests_dao.get_all()[0]) self.assertEqual(request.status, RequestStatus.IN_PROGRESS) self.assertEqual(request.volunteer, volunteer_id)
def test_get_requesters_own_requests_correctly(self): session_id = 'sessionId' requester_id = '5f7c2d96e48e242b81178822' other_requester_id = '5f81ae36fa3b02a743177500' requester = Requester('login', 'pw', 'first', 'last', requester_id) self.requester_handler.active_user_sessions[session_id] = requester item = Item('item', 42.42, 'category', '5f7c28c6e979c6a33a1f3f79', ProductDetails('', {}), Image('', '')) item_id = self.items_dao.store_one(item.to_db_object()) item.id = item_id request_1 = Request(requester=requester_id, status=RequestStatus.CREATED, items=[], volunteer=None) request_2 = Request(requester=requester_id, status=RequestStatus.IN_PROGRESS, items=[(item, 3)], volunteer='5f81ae776db502d353a84fdf', submission_date=datetime.now()) request_3 = Request(requester=other_requester_id, status=RequestStatus.PAID, items=[(item, 1)], volunteer='5f81ae776db502d353a84fdf', submission_date=datetime.now()) request_1_id = self.requests_dao.store_one(request_1.to_db_object()) request_2_id = self.requests_dao.store_one(request_2.to_db_object()) request_3_id = self.requests_dao.store_one(request_3.to_db_object()) requests = self.request_handler.get_requesters_own_requests(session_id) self.assertEqual(len(requests), 2) self.assertIn(request_1_id, [request['id'] for request in requests]) self.assertIn(request_2_id, [request['id'] for request in requests]) self.assertEqual( len([r for r in requests if r['id'] == request_2_id][0]['items']), 1) self.assertEqual([r for r in requests if r['id'] == request_2_id ][0]['items'][0]['item']['id'], item_id)
def test_submit_request_of_other_requester(self): session_id = 'sessionId' requester_id = '5f81ae776db502d353a84fdf' other_requester_id = '5f7c28c6e979c6a33a1f3f79' requester = Requester('login', 'pw', 'first', 'last', requester_id) self.requester_handler.active_user_sessions[session_id] = requester request = Request(requester=other_requester_id, status=RequestStatus.CREATED, items=[], volunteer=None) request_id = self.requests_dao.store_one(request.to_db_object()) with self.assertRaises(UnauthorizedAccessError): self.request_handler.submit_request(request_id, session_id) self.assertEqual( self.request_handler.from_db_object( self.requests_dao.get_all()[0]).status, RequestStatus.CREATED)
def test_add_request_to_time_frame_with_incorrect_volunteer_id_at_request( self): session_id = 'someId' volunteer_id = str(ObjectId()) other_volunteer_id = str(ObjectId()) volunteer = Volunteer('login', 'pw', 'first', 'last', volunteer_id) self.volunteer_handler.active_user_sessions[session_id] = volunteer time_frame = TimeFrame(volunteer_id, datetime.fromisoformat('2020-10-25 12:00:00'), datetime.fromisoformat('2020-10-25 14:00:00'), []) time_frame.id = self.dao.store_one(time_frame.to_db_object()) request = Request(requester=str(ObjectId()), status=RequestStatus.IN_PROGRESS, items=[], volunteer=other_volunteer_id) request.id = self.requests_dao.store_one(request.to_db_object()) with self.assertRaises(UnauthorizedAccessError): self.time_frame_handler.add_request_to_time_frame( time_frame.id, request.id, session_id)
def test_submit_request_without_address_correctly(self): session_id = 'sessionId' requester_id = '5f81ae776db502d353a84fdf' address = self.address_handler(self.locator.valid_street_1, self.locator.valid_zip_1, self.locator.valid_country_1) requester = Requester('login', 'pw', 'first', 'last', requester_id, address) self.requester_handler.active_user_sessions[session_id] = requester request = Request(requester=requester_id, status=RequestStatus.CREATED, items=[], volunteer=None) request_id = self.requests_dao.store_one(request.to_db_object()) self.request_handler.submit_request(request_id, session_id) request = self.request_handler.from_db_object( self.requests_dao.get_all()[0]) self.assertEqual(request.status, RequestStatus.SUBMITTED) self.assertEqual(request.delivery_address, address) self.assertIsNot(request.submission_date, None) self.assertTrue(type(request.submission_date) == datetime)