def test_validate_associations_route(self): associations_in = { 'routes': [ {'document_id': self.route1.document_id}, {'document_id': self.route2.document_id} ], 'waypoints': [ {'document_id': self.waypoint1.document_id} ] } errors = Errors() associations = validate_associations_in( associations_in, ROUTE_TYPE, errors) self.assertEquals(len(errors), 0) expected_associations = { 'routes': [ {'document_id': self.route1.document_id, 'is_parent': False}, {'document_id': self.route2.document_id, 'is_parent': False} ], 'waypoints': [ {'document_id': self.waypoint1.document_id, 'is_parent': True} ] } self.assertEqual(associations, expected_associations)
def test_validate_associations_outing(self): associations_in = { 'routes': [ {'document_id': self.route1.document_id}, {'document_id': self.route2.document_id} ], 'users': [ {'document_id': self.user_profile1.document_id} ], 'waypoints': [ {'document_id': 'waypoints are ignored'} ] } errors = Errors() associations = validate_associations_in( associations_in, OUTING_TYPE, errors) self.assertEquals(len(errors), 0) expected_associations = { 'users': [ {'document_id': self.user_profile1.document_id, 'is_parent': True} ], 'routes': [ {'document_id': self.route1.document_id, 'is_parent': True}, {'document_id': self.route2.document_id, 'is_parent': True} ] } self.assertEqual(associations, expected_associations)
def test_validate_associations_waypoint(self): associations_in = { # routes are ignored 'routes': [ {'document_id': self.route1.document_id} ], 'waypoints': [ {'document_id': self.waypoint1.document_id} ], 'waypoint_children': [ {'document_id': self.waypoint2.document_id} ], 'outings': [ {'document_id': 'outings are ignored'} ] } errors = Errors() associations = validate_associations_in( associations_in, WAYPOINT_TYPE, errors) self.assertEquals(len(errors), 0) expected_associations = { 'waypoints': [ {'document_id': self.waypoint1.document_id, 'is_parent': True} ], 'waypoint_children': [ {'document_id': self.waypoint2.document_id, 'is_parent': False} ] } self.assertEqual(associations, expected_associations)
def test_validate_associations_route(self): associations_in = { 'routes': [{ 'document_id': self.route1.document_id }, { 'document_id': self.route2.document_id }], 'waypoints': [{ 'document_id': self.waypoint1.document_id }] } errors = Errors() associations = validate_associations_in(associations_in, ROUTE_TYPE, errors) self.assertEqual(len(errors), 0) expected_associations = { 'routes': [{ 'document_id': self.route1.document_id, 'is_parent': False }, { 'document_id': self.route2.document_id, 'is_parent': False }], 'waypoints': [{ 'document_id': self.waypoint1.document_id, 'is_parent': True }] } self.assertEqual(associations, expected_associations)
def validate_list_associations_create(request, **kwargs): for document in request.validated['images']: associations_in = document.get('associations', None) if not associations_in: continue document['associations'] = validate_associations_in( associations_in, IMAGE_TYPE, request.errors)
def test_validate_associations_waypoint(self): associations_in = { # routes are ignored 'routes': [{ 'document_id': self.route1.document_id }], 'waypoints': [{ 'document_id': self.waypoint1.document_id }], 'waypoint_children': [{ 'document_id': self.waypoint2.document_id }], 'outings': [{ 'document_id': 'outings are ignored' }] } errors = Errors() associations = validate_associations_in(associations_in, WAYPOINT_TYPE, errors) self.assertEqual(len(errors), 0) expected_associations = { 'waypoints': [{ 'document_id': self.waypoint1.document_id, 'is_parent': True }], 'waypoint_children': [{ 'document_id': self.waypoint2.document_id, 'is_parent': False }] } self.assertEqual(associations, expected_associations)
def test_validate_associations_outing(self): associations_in = { 'routes': [{ 'document_id': self.route1.document_id }, { 'document_id': self.route2.document_id }], 'users': [{ 'document_id': self.user_profile1.document_id }], 'waypoints': [{ 'document_id': 'waypoints are ignored' }] } errors = Errors() associations = validate_associations_in(associations_in, OUTING_TYPE, errors) self.assertEqual(len(errors), 0) expected_associations = { 'users': [{ 'document_id': self.user_profile1.document_id, 'is_parent': True }], 'routes': [{ 'document_id': self.route1.document_id, 'is_parent': True }, { 'document_id': self.route2.document_id, 'is_parent': True }] } self.assertEqual(associations, expected_associations)
def validate_list_associations_create(request, **kwargs): if not request.validated.get('images'): return for document in request.validated['images']: associations_in = document.get('associations', None) if not associations_in: continue document['associations'] = validate_associations_in( associations_in, IMAGE_TYPE, request.errors)
def test_validate_associations_invalid_document_id(self): associations_in = {'waypoints': [{'document_id': -99999}]} errors = Errors() associations = validate_associations_in(associations_in, WAYPOINT_TYPE, errors) self.assertIsNone(associations) self.assertEqual(len(errors), 1) error = errors[0] self.assertEqual(error['name'], 'associations.waypoints') self.assertEqual(error['description'], 'document "-99999" does not exist or is redirected')
def test_validate_associations_invalid_type(self): associations_in = { 'users': [ {'document_id': self.user_profile1.document_id, 'is_parent': True} ] } errors = Errors() associations = validate_associations_in( associations_in, WAYPOINT_TYPE, errors) # users are ignored for waypoints self.assertEquals(associations, {})
def test_validate_associations_invalid_type(self): associations_in = { 'users': [{ 'document_id': self.user_profile1.document_id, 'is_parent': True }] } errors = Errors() associations = validate_associations_in(associations_in, WAYPOINT_TYPE, errors) # users are ignored for waypoints self.assertEqual(associations, {})
def test_validate_associations_invalid_document_id(self): associations_in = { 'waypoints': [ {'document_id': -99999} ] } errors = Errors() associations = validate_associations_in( associations_in, WAYPOINT_TYPE, errors) self.assertIsNone(associations) self.assertEquals(len(errors), 1) error = errors[0] self.assertEqual(error['name'], 'associations.waypoints') self.assertEqual( error['description'], 'document "-99999" does not exist')
def test_validate_associations_invalid_document_type(self): associations_in = { 'routes': [{ 'document_id': self.waypoint1.document_id }] } errors = Errors() associations = validate_associations_in(associations_in, ROUTE_TYPE, errors) self.assertIsNone(associations) self.assertEqual(len(errors), 1) error = errors[0] self.assertEqual(error['name'], 'associations.routes') self.assertEqual( error['description'], 'document "' + str(self.waypoint1.document_id) + '" is not of type "r"')
def test_validate_associations_invalid_document_type(self): associations_in = { 'routes': [ {'document_id': self.waypoint1.document_id} ] } errors = Errors() associations = validate_associations_in( associations_in, ROUTE_TYPE, errors) self.assertIsNone(associations) self.assertEquals(len(errors), 1) error = errors[0] self.assertEqual(error['name'], 'associations.routes') self.assertEqual( error['description'], 'document "' + str(self.waypoint1.document_id) + '" is not of type "r"')