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(), {})
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()
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' })
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)
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 })
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 })
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()