示例#1
0
    def test_get_custom_properties_disabled_field(self):
        """It should not return a disable field,.
        """
        workspace = factories.WorkspaceFactory()

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfield = factories.CustomFieldFactory(
            field_name='Steward',
            **attributes,
        )

        custom_properties = {
            customfield.pk: "Sam Crust",
        }

        resource = self.factory(
            workspace=workspace,
            disabled_datastore_properties=[customfield.pk],
            custom_properties=custom_properties,
        )

        self.assertEqual(resource.custom_properties, custom_properties)
        self.assertEqual(resource.get_custom_properties(), {})
示例#2
0
    def setUp(cls):
        super().setUp()
        cls.datastore = factories.DatastoreFactory(workspace=cls.workspace)
        cls.global_id = helpers.to_global_id('DatastoreType', cls.datastore.pk)

        cls.group = factories.GroupFactory(workspace_id=cls.workspace.id)

        cls.attributes = {
            'content_type': cls.datastore.content_type,
            'workspace': cls.workspace,
        }

        cls.customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Department',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.GROUP,
                **cls.attributes,
            ),
        ]

        cls.datastore.custom_properties = {
            cls.customfields[0].pk: cls.user.pk,
            cls.customfields[2].pk: 'Design',
            cls.customfields[3].pk: cls.group.pk,
        }
        cls.datastore.save()
示例#3
0
    def test_get_custom_properties(self):
        """It should return NULL for non-existent fields.
        """
        user = factories.UserFactory()
        workspace = factories.WorkspaceFactory()
        workspace.grant_membership(user, 'OWNER')

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfields = [
            factories.CustomFieldFactory(field_name='Steward',
                                         field_type=models.CustomField.USER,
                                         **attributes),
            factories.CustomFieldFactory(field_name='Product Area',
                                         field_type=models.CustomField.TEXT,
                                         **attributes),
            factories.CustomFieldFactory(field_name='Team',
                                         field_type=models.CustomField.TEXT,
                                         **attributes),
        ]

        resource = self.factory(
            workspace=workspace,
            custom_properties={
                customfields[0].pk: user.pk,
                customfields[2].pk: 'Data Engineering',
            },
        )

        custom_properties = resource.get_custom_properties()
        for customfield in customfields:
            self.assertTrue(customfield.pk in custom_properties)

        self.assertEqual(custom_properties[customfields[0].pk], {
            'label': 'Steward',
            'value': user
        })

        self.assertEqual(custom_properties[customfields[2].pk], {
            'label': 'Team',
            'value': 'Data Engineering'
        })
示例#4
0
    def setUpTestData(cls):
        cls.current_user = factories.UserFactory()
        cls.workspace = factories.WorkspaceFactory(creator=cls.current_user)
        cls.workspace.grant_membership(cls.current_user, auth.Membership.OWNER)
        cls.group = factories.GroupFactory(workspace_id=cls.workspace.id)
        cls.datastore = factories.DatastoreFactory(workspace=cls.workspace)
        cls.attributes = {
            'content_type': cls.datastore.content_type,
            'workspace': cls.workspace,
        }

        cls.customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Department',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **cls.attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.GROUP,
                **cls.attributes,
            ),
        ]
        cls.request = collections.namedtuple(
            'Request',
            ['user', 'workspace'],
        )(user=cls.current_user, workspace=cls.workspace)
示例#5
0
    def test_get_custom_properties_deleted_user(self):
        """It should return NULL for a deleted choice.
        """
        user = factories.UserFactory()
        workspace = factories.WorkspaceFactory()
        workspace.grant_membership(user, 'OWNER')

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfield = factories.CustomFieldFactory(
            field_name='Steward',
            field_type=models.CustomField.USER,
            **attributes,
        )

        resource = self.factory(
            workspace=workspace,
            custom_properties={
                customfield.pk: user.pk,
            },
        )

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': user
        })

        workspace.revoke_membership(user)
        resource.refresh_from_db()

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': None
        })
示例#6
0
    def test_get_custom_properties_deleted_choice(self):
        """It should return NULL for a deleted choice.
        """
        workspace = factories.WorkspaceFactory()

        attributes = {
            'content_type': self.model_class.get_content_type(),
            'workspace': workspace,
        }

        customfield = factories.CustomFieldFactory(
            field_name='Steward',
            field_type=models.CustomField.ENUM,
            validators={'choices': ['red', 'yellow', 'blue']},
            **attributes,
        )

        resource = self.factory(
            workspace=workspace,
            custom_properties={
                customfield.pk: 'blue',
            },
        )

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': 'blue'
        })

        customfield.validators = {'choices': ['red', 'yellow', 'green']}
        customfield.save()

        self.assertEqual(resource.get_custom_properties()[customfield.pk], {
            'label': 'Steward',
            'value': None
        })
示例#7
0
    def execute_success_test_case(self, resource, globalid):
        """Helper function for testing different content types.
        """
        attributes = {
            'content_type': resource.content_type,
            'workspace': self.workspace,
        }

        customfields = [
            factories.CustomFieldFactory(
                field_name='Steward',
                field_type=models.CustomField.USER,
                validators={},
                **attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Product Area',
                field_type=models.CustomField.TEXT,
                validators={},
                **attributes,
            ),
            factories.CustomFieldFactory(
                field_name='Team',
                field_type=models.CustomField.ENUM,
                validators={
                    'choices': ['Data Engineering', 'Product', 'Design']
                },
                **attributes,
            ),
        ]

        variables = {
            'objectId':
            globalid,
            'properties': [{
                'id': customfields[0].pk,
                'value': self.user.pk,
            }, {
                'id': customfields[1].pk,
                'value': helpers.faker.name(),
            }, {
                'id': customfields[2].pk,
                'value': 'Product',
            }]
        }

        current_user = {
            'id': helpers.to_global_id('UserType', self.user.pk),
            'pk': self.user.pk,
            'name': self.user.name,
            'email': self.user.email,
            'type': 'User',
        }

        expected = []

        for f in customfields:
            v = next(
                filter(lambda p: p['id'] == f.pk, variables['properties']), {})
            expected.append({
                'fieldId':
                f.pk,
                'fieldLabel':
                f.field_name,
                'fieldValue':
                v.get('value') if f.field_name != 'Steward' else current_user
            })

        response = self.execute(variables=variables)
        response = response['data'][self.operation]

        self.assertEqual(response, {
            'customProperties': expected,
            'errors': None,
        })

        for c in customfields:
            c.delete()