def test_serialize_party_with_translations(self): proj = ProjectFactory.create() questionnaire = q_factories.QuestionnaireFactory.create( project=proj) question = q_factories.QuestionFactory.create( type='S1', name='party_type', questionnaire=questionnaire) q_factories.QuestionOptionFactory.create( question=question, name='IN', label={'en': 'Individual', 'de': 'Individuell'}) q_factories.QuestionOptionFactory.create( question=question, name='GR', label={'en': 'Group', 'de': 'Gruppe'}) party = PartyFactory.create(project=proj) serializer = serializers.PartySerializer(party, context={ 'project': proj }) serialized = serializer.data assert serialized['id'] == party.id assert serialized['name'] == party.name assert serialized['type'] == party.type assert serialized['type_display'] == {'en': 'Individual', 'de': 'Individuell'} assert 'attributes' in serialized
def test_validate_unknown_attributes(self): project = ProjectFactory.create(name='Test Project') content_type = ContentType.objects.get( app_label='party', model='party') 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 ) party_data = { 'name': 'Tea Party', 'type': 'IN', 'attributes': { 'notes': 'Blah', 'age': 'Blah' } } serializer = serializers.PartySerializer( data=party_data, context={'project': project} ) with pytest.raises(ValidationError) as e: serializer.validate_attributes(party_data['attributes']) assert 'Unknown attribute "age"' in e.value.detail
def test_serialize_party(self): party = PartyFactory.create() serializer = serializers.PartySerializer(party) serialized = serializer.data assert serialized['id'] == party.id assert serialized['name'] == party.name assert serialized['type'] == party.type assert 'attributes' in serialized
def test_create_party(self): project = ProjectFactory.create(name='Test Project') party_data = {'name': 'Tea Party'} serializer = serializers.PartySerializer(data=party_data, context={'project': project}) serializer.is_valid(raise_exception=True) serializer.save() party_instance = serializer.instance assert party_instance.name == 'Tea Party'
def test_serialize_party(self): party = PartyFactory.create() proj = ProjectFactory.create() serializer = serializers.PartySerializer(party, context={ 'project': proj }) serialized = serializer.data assert serialized['id'] == party.id assert serialized['name'] == party.name assert serialized['type'] == party.type assert serialized['type_display'] == party.get_type_display() assert 'attributes' in serialized
def test_serialize_party(self): party = PartyFactory.create() serializer = serializers.PartySerializer(party) serialized = serializer.data assert serialized['id'] == party.id assert serialized['name'] == party.name assert serialized['type'] == party.type assert 'attributes' in serialized assert 'contacts' in serialized assert serialized['project']['id'] == party.project.id assert (serialized['project']['organization']['id'] == party.project.organization.id)
class XFormSubmissionSerializer(FieldSelectorSerializer, serializers.Serializer): """ Saves the full xml response from GeoODK Collect as a json object. """ json_submission = serializers.JSONField(required=False) user = serializers.PrimaryKeyRelatedField(allow_null=True, queryset=User.objects.all(), required=False) questionnaire = serializers.PrimaryKeyRelatedField( allow_null=True, queryset=Questionnaire.objects.all(), required=False) instanceID = serializers.UUIDField(format='hex_verbose') parties = party_serializer.PartySerializer(read_only=True, many=True) spatial_units = SpatialUnitSerializer(read_only=True, many=True) tenure_relationships = party_serializer.TenureRelationshipReadSerializer( read_only=True, many=True) def create(self, validated_data): return XFormSubmission.objects.create(**validated_data)
def test_sanitize_strings(self): project = ProjectFactory.create(name='Test Project') content_type = ContentType.objects.get(app_label='party', model='party') 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) Attribute.objects.create( schema=schema, name='age', long_name='Homeowner Age', attr_type=AttributeType.objects.get(name='integer'), index=1, required=True, default=0) party_data = { 'name': '<Tea Party>', 'type': 'IN', 'attributes': { 'notes': '<Blah>', 'age': 2 } } serializer = serializers.PartySerializer(data=party_data, context={'project': project}) with pytest.raises(ValidationError) as e: serializer.is_valid(raise_exception=True) assert e.value.detail['name'] assert e.value.detail['attributes']
def test_validate_valid_attributes(self): project = ProjectFactory.create(name='Test Project') content_type = ContentType.objects.get(app_label='party', model='party') 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) Attribute.objects.create( schema=schema, name='age', long_name='Homeowner Age', attr_type=AttributeType.objects.get(name='integer'), index=1, required=True, default=0) party_data = { 'name': 'Tea Party', 'type': 'IN', 'attributes': { 'notes': 'Blah', 'age': 2 } } serializer = serializers.PartySerializer(data=party_data, context={'project': project}) cleaned = serializer.validate_attributes(party_data['attributes']) assert cleaned == party_data['attributes']