def test_unknown_attribute(self): project = ProjectFactory.create(name='Test Project') content_type = ContentType.objects.get(app_label='spatial', model='spatialunit') schema = Schema.objects.create(content_type=content_type, selectors=( project.organization.id, project.id, )) Attribute.objects.create( schema=schema, name='notes', long_name='Notes', attr_type=AttributeType.objects.get(name='text'), index=0) data = { 'properties': { 'type': 'AP', 'project': project, 'attributes': { 'notes': 'Blah', 'age': 'Ten' } } } serializer = serializers.SpatialUnitSerializer( data=data, context={'project': project}) assert serializer.is_valid() is False assert 'Unknown attribute "age"' in serializer.errors['attributes']
def test_valid_location_type(self): project = ProjectFactory.create() data = {'type': 'PA'} serializer = serializers.SpatialUnitSerializer( data=data, context={'project': project}) assert serializer.is_valid() is True
def test_invalid_location_type(self): project = ProjectFactory.create() data = {'type': 'BOO'} serializer = serializers.SpatialUnitSerializer( data=data, context={'project': project}) assert serializer.is_valid() is False assert ("'BOO' is not a valid choice for field 'type'." in serializer.errors['type'])
def test_update_spatial_unit_fails(self): project = ProjectFactory.create() su = SpatialUnitFactory.create(type='BU', project=project) spatial_data = {'properties': {'type': ''}} serializer = serializers.SpatialUnitSerializer( su, data=spatial_data, partial=True, context={'project': project}) with pytest.raises(ValidationError): serializer.is_valid(raise_exception=True)
def test_project_is_set(self): project = ProjectFactory.create() spatial_data = {'properties': {'name': 'Spatial', 'project': project}} serializer = serializers.SpatialUnitSerializer( data=spatial_data, context={'project': project}) serializer.is_valid(raise_exception=True) serializer.save() spatial_instance = serializer.instance assert spatial_instance.project == project
def test_update_spatial_unit(self): project = ProjectFactory.create() su = SpatialUnitFactory.create(type='BU', project=project) spatial_data = {'properties': {'type': 'AP', 'project': project}} serializer = serializers.SpatialUnitSerializer( su, data=spatial_data, partial=True, context={'project': project}) serializer.is_valid(raise_exception=True) serializer.save() su_update = SpatialUnit.objects.get(id=su.id) assert su_update.type == 'AP'
def test_update_spatial_unit_project_fails(self): project = ProjectFactory.create(name='Original Project') su = SpatialUnitFactory.create(project=project) ProjectFactory.create(name='New Project') spatial_data = {'properties': {'project': 'something'}} serializer = serializers.SpatialUnitSerializer( su, data=spatial_data, partial=True, context={'project': project}) serializer.is_valid(raise_exception=True) serializer.save() data = serializer.data['properties'] assert data['project']['name'] != 'New Project'
def test_update_spatial_unit_project_fails(self): project = ProjectFactory.create(name='Original Project') su = SpatialUnitFactory.create(project=project) new_project = ProjectFactory.create(name='New Project') spatial_data = {'properties': {'project': new_project}} serializer = serializers.SpatialUnitSerializer( su, data=spatial_data, partial=True, context={'project': project}) serializer.is_valid(raise_exception=True) serializer.save() su.refresh_from_db() assert su.project == project
def test_valid_custom_location_type(self): project = ProjectFactory.create() questionnaire = q_factories.QuestionnaireFactory.create( project=project) question = q_factories.QuestionFactory.create( type='S1', name='location_type', questionnaire=questionnaire) q_factories.QuestionOptionFactory.create(question=question, name='BOO', label='BOO Label') data = {'type': 'BOO'} serializer = serializers.SpatialUnitSerializer( data=data, context={'project': project}) assert serializer.is_valid() is True
def test_invalid_custom_location_type(self): project = ProjectFactory.create() questionnaire = q_factories.QuestionnaireFactory.create( project=project) question = q_factories.QuestionFactory.create( type='S1', name='location_type', questionnaire=questionnaire) q_factories.QuestionOptionFactory.create(question=question, name='FU', label='FU Label') data = {'type': 'PA'} serializer = serializers.SpatialUnitSerializer( data=data, context={'project': project}) assert serializer.is_valid() is False assert ("'PA' is not a valid choice for field 'type'." in serializer.errors['type'])
def test_geojson_serialization(self): spatial_data = SpatialUnitFactory.create() serializer = serializers.SpatialUnitSerializer(spatial_data) assert serializer.data['type'] == 'Feature' assert 'geometry' in serializer.data assert 'properties' in serializer.data
def test_project_detail_not_serialized(self): project = ProjectFactory.create() spatial_data = SpatialUnitFactory.create(project=project) serializer = serializers.SpatialUnitSerializer(spatial_data) assert 'description' not in serializer.data['properties']['project']