コード例 #1
0
    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']
コード例 #2
0
    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
コード例 #3
0
    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'])
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
    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'
コード例 #7
0
    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'
コード例 #8
0
    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
コード例 #9
0
    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
コード例 #10
0
    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'])
コード例 #11
0
 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
コード例 #12
0
 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']