def setup(self):
     """
     Set up the unit test suite.
     
     .. versionadded:: 0.2.0
     """
     self.session = MockShotgun()
    def test_create(self):
        """
        Check that new entities are created within the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Updated to support/test return fields, id generation, etc.
        .. versionchanged:: 0.8.0
            Test that the correct id is generated on create() when first_id has been set
            on the mock shotgun object.
        .. versionchanged:: 0.8.0
            Test that the default value auto-population behaviour is working correctly.
        """
        data = self.session.create('MockEntity', {'field':'test_value'}, return_fields=['field'])
        
        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data == [data])
        assert_true(data.has_key('field'))
        
        assert_true(self.session.data[0].has_key('id'))
        assert_true(self.session.data[0]['id'], 1)
        
        assert_true(self.session.data[0].has_key('type'))
        assert_true(self.session.data[0]['type'] == 'MockEntity')
        
        assert_true(self.session.data[0].has_key('field'))
        assert_true(self.session.data[0]['field'] == 'test_value')
        
        # test the special shot entity hack
        data = self.session.create('Shot', {'code':'test_shot'}, return_fields=['sg_status_list'])
        
        assert_true(data.has_key('sg_status_list'))
        assert_true(data['sg_status_list'] == '')
        
        # test the id generation behaviour
        self.session = MockShotgun(first_id=2)
        data = self.session.create('MockEntity', {'field':'test_value'}, return_fields=['field'])

        assert_true(data['id'] == 2)
        
        # test the default value auto-population behaviour
        schema = [{'MockEntity': {'field_one':{}, 'field_two':{'data_type': {'value':'integer'}, 
                                                               'editable': {'value':False}, 
                                                               'properties': {'default_value': {'value': 99}}}}}]
        self.session = MockShotgun(schema=schema)
        data = self.session.create('MockEntity', {'field_one':'test_value'}, return_fields=['field_one', 'field_two'])
        
        assert_true(data['field_two'], 99)
 def setup(self):
     """
     Set up the unit test suite.
     
     .. versionadded:: 0.2.0
     """
     self.session = MockShotgun()
Esempio n. 4
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_02_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Group',
            'code': 'vfx'
        }, {
            'id': 2,
            'type': 'HumanUser',
            'login': '******'
        }, {
            'id': 3,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 4,
            'type': 'Shot'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = NoteTranslator(self.session)
Esempio n. 5
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_05_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 2,
            'type': 'CustomNonProjectEntity03',
            'code': 'anim'
        }, {
            'id': 3,
            'type': 'Version',
            'code': 'sc_21a_010_lens_v009'
        }, {
            'id': 4,
            'type': 'Version',
            'code': 'sc_21a_020_lens_v009'
        }, {
            'id': 5,
            'type': 'CustomEntity01',
            'code': 'Important Meeting'
        }, {
            'id': 6,
            'type': 'Note'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = PlaylistTranslator(self.session)
Esempio n. 6
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_04_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 2,
            'type': 'Asset'
        }, {
            'id': 3,
            'type': 'Note'
        }, {
            'id': 4,
            'type': 'Shot'
        }, {
            'id': 5,
            'type': 'Task'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = SceneTranslator(self.session)
Esempio n. 7
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: 1.4.0
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 2,
            'type': 'HumanUser',
            'login': '******'
        }, {
            'id': 3,
            'type': 'Asset'
        }, {
            'id': 4,
            'type': 'Note'
        }, {
            'id': 5,
            'type': 'Shot'
        }, {
            'id': 6,
            'type': 'Task'
        }, {
            'id': 7,
            'type': 'PublishEvent'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = VersionTranslator(self.session)
Esempio n. 8
0
 def setup(self):
     """
     Set up the unit test suite.
     
     .. versionadded:: v00_04_00
     """
     self.session = MockShotgun(schema=[], data=[])
     self.translator = StepTranslator(self.session)
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_06_00
        """
        self.shotgun_data = [{'id': 3, 'type': 'Note'}]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = ReplyTranslator(self.session)
Esempio n. 10
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_04_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'HumanUser',
            'login': '******'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = GroupTranslator(self.session)
Esempio n. 11
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: 1.7.2
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'HumanUser',
            'login': '******'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = SpoolTranslator(self.session)
Esempio n. 12
0
 def setup(self):
     """
     Set up the unit test suite.
     
     .. versionadded:: v04_02_00
     .. versionchanged:: 1.3.0
         Updated pipeline step test data to include entity type.
     """
     self.shotgun_data = [{'id':1, 'type':'Group', 'code':'vfx'},
                          {'id':2, 'type':'HumanUser', 'login':'******'},
                          {'id':3, 'type':'Project', 'sg_short_name':'hf2'},
                          {'id':4, 'type':'Note'},
                          {'id':5, 'type':'Step', 'code':'Anim', 'entity_type':'Task'}]
     
     self.session = MockShotgun(schema=[], data=self.shotgun_data)
     self.translator = TaskTranslator(self.session)
Esempio n. 13
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_04_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Group'
        }, {
            'id': 2,
            'type': 'Project'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = HumanUserTranslator(self.session)
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_03_00
        """
        self.shotgun_data = [{'id':1, 'type':'Group', 'code':'vfx'},
                             {'id':2, 'type':'HumanUser', 'login':'******'},
                             {'id':3, 'type':'Project', 'sg_short_name':'hf2'},
                             {'id':4, 'type':'Shot', 'code':'19d_010', 'project':{'id':3, 'type':'Project'}},
                             {'id':5, 'type':'Scene', 'code':'19d', 'project':{'id':3, 'type':'Project'}},
                             {'id':6, 'type':'Step', 'code':'Anim', 'entity_type':'Shot'},
                             {'id':7, 'type':'Asset', 'code':'mumble'},
                             {'id':8, 'type':'Sequence', 'code':'test'},
                             {'id':9, 'type':'CustomNonProjectEntity03', 'code':'anim'},
                             {'id':10, 'type':'Version', 'code':'900_001_anim_v001'},
                             {'id':11, 'type':'CustomEntity01', 'code':'Important Meeting'}]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: 1.5.0
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Playlist',
            'code': 'test_playlist'
        }, {
            'id': 2,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 3,
            'type': 'Version'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = CourierTranslator(self.session)
Esempio n. 16
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_02_00
        .. versionchanged:: v00_03_00
            Updated due to changes to model constructor, add the MockModel schema to the MockShotgun instance.
        .. versionchanged:: 0.9.0
            Update schema in order to allow testing of read-only field behaviour.
        .. versionchanged:: 0.11.0
            Set the starting id for the mock shotgun id generator.
        .. versionchanged:: 1.0.0
            Set the datatype and properties schema entries on fields that were missing these values. Added a
            new schema field and test data to allow testing that unsupported API data types are filtered out.
        .. versionchanged:: 1.1.0
            Added Task schema definition to aid testing of never_editable fields.
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'MockModel',
            'field_one': 1,
            'field_two': 2,
            'field_three': 3,
            'field_pivot': 'x'
        }, {
            'id': 2,
            'type': 'MockModel',
            'field_one': 1,
            'field_two': 2,
            'field_three': 3
        }, {
            'id': 3,
            'type': 'MockModel',
            'field_one': 3,
            'field_two': 2,
            'field_three': 1
        }]

        self.shotgun_schema = [{
            'MockModel': {
                'field_one': {
                    'data_type': {
                        'value': 'integer'
                    },
                    'properties': {}
                },
                'field_two': {
                    'data_type': {
                        'value': 'integer'
                    },
                    'properties': {}
                },
                'field_three': {
                    'data_type': {
                        'value': 'integer'
                    },
                    'editable': {
                        'value': False
                    },
                    'properties': {
                        'default_value': {
                            'value': 99
                        }
                    }
                }
            },
            'field_pivot': {
                'data_type': {
                    'value': 'pivot_column'
                }
            }
        }, {
            'Task': {
                'field_one': {},
                'dependency_violation': {
                    'data_type': {
                        'value': 'boolean'
                    },
                    'editable': {
                        'value': False
                    },
                    'properties': {
                        'default_value': {
                            'value': True
                        }
                    }
                }
            }
        }]

        self.session = MockShotgun(schema=self.shotgun_schema,
                                   data=self.shotgun_data,
                                   first_id=4)
        self.identifier = 'MockModel'
        self.translator = MockTranslator(self.session)

        self.model_schema = {
            'field_one': None,
            'field_two': None,
            'field_three': None
        }

        # manually build a model for this test
        self.model = Model(self.session, self.identifier, self.translator,
                           self.model_schema)

        self.model['field_one'] = 1
        self.model['field_two'] = 2
        self.model['field_three'] = 3

        self.model._purify()
    def test_create(self):
        """
        Check that new entities are created within the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Updated to support/test return fields, id generation, etc.
        .. versionchanged:: 0.8.0
            Test that the correct id is generated on create() when first_id has been set
            on the mock shotgun object.
        .. versionchanged:: 0.8.0
            Test that the default value auto-population behaviour is working correctly.
        """
        data = self.session.create('MockEntity', {'field': 'test_value'},
                                   return_fields=['field'])

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data == [data])
        assert_true(data.has_key('field'))

        assert_true(self.session.data[0].has_key('id'))
        assert_true(self.session.data[0]['id'], 1)

        assert_true(self.session.data[0].has_key('type'))
        assert_true(self.session.data[0]['type'] == 'MockEntity')

        assert_true(self.session.data[0].has_key('field'))
        assert_true(self.session.data[0]['field'] == 'test_value')

        # test the special shot entity hack
        data = self.session.create('Shot', {'code': 'test_shot'},
                                   return_fields=['sg_status_list'])

        assert_true(data.has_key('sg_status_list'))
        assert_true(data['sg_status_list'] == '')

        # test the id generation behaviour
        self.session = MockShotgun(first_id=2)
        data = self.session.create('MockEntity', {'field': 'test_value'},
                                   return_fields=['field'])

        assert_true(data['id'] == 2)

        # test the default value auto-population behaviour
        schema = [{
            'MockEntity': {
                'field_one': {},
                'field_two': {
                    'data_type': {
                        'value': 'integer'
                    },
                    'editable': {
                        'value': False
                    },
                    'properties': {
                        'default_value': {
                            'value': 99
                        }
                    }
                }
            }
        }]
        self.session = MockShotgun(schema=schema)
        data = self.session.create('MockEntity', {'field_one': 'test_value'},
                                   return_fields=['field_one', 'field_two'])

        assert_true(data['field_two'], 99)
class TestMockShotgun(object):
    """
    Nose unit test suite for Probe MockShotgun.
    
    .. versionadded:: 0.2.0
    """
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: 0.2.0
        """
        self.session = MockShotgun()
    
    def teardown(self):
        """
        Tear down the unit test suite.
        
        .. versionadded:: 0.2.0
        """
        pass
    
    def test_init(self):
        """
        Verify that the mock shotgun object is correctly initialised.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Ensure the base_url is correctly initialised.
        """
        assert_equals(self.session.host, '')
        assert_equals(self.session.user, '')
        assert_equals(self.session.skey, '')
        assert_equals(self.session.base_url, self.session.host)
        assert_equals(self.session.schema, [])
        assert_equals(self.session.data, [])
        
    def test_find(self):
        """
        Test the mock shotgun object's find() method!
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        e1 = self.session.create('MockEntity', {'field':'test_value'})
        e2 = self.session.create('MockEntity', {'field':'test_value'})
        e3 = self.session.create('MockEntity', {'field':'different_value'})
        
        assert_true(len(self.session.data) == 3)
        
        # perform the actual test
        results = self.session.find('MockEntity', [['field', 'is', 'test_value']])
        
        assert_true(len(results) == 2)
        for result in results:
            assert_true(result['id'] in [e1['id'], e2['id']])
    
    def test_find_one(self):
        """
        Test the mock shotgun object's find_one() method!
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        e1 = self.session.create('MockEntity', {'field':'test_value'})
        e2 = self.session.create('MockEntity', {'field':'test_value'})
        e3 = self.session.create('MockEntity', {'field':'different_value'})
        
        assert_true(len(self.session.data) == 3)
        
        # perform the actual test(s)
        result = self.session.find_one('MockEntity', [['field', 'is', 'test_value']])
        assert_true(result['id'] == e1['id'])
        
        result = self.session.find_one('MockEntity', [['field', 'is', 'test_foobar']])
        assert_true(result == None)
    
    def test_create(self):
        """
        Check that new entities are created within the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Updated to support/test return fields, id generation, etc.
        .. versionchanged:: 0.8.0
            Test that the correct id is generated on create() when first_id has been set
            on the mock shotgun object.
        .. versionchanged:: 0.8.0
            Test that the default value auto-population behaviour is working correctly.
        """
        data = self.session.create('MockEntity', {'field':'test_value'}, return_fields=['field'])
        
        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data == [data])
        assert_true(data.has_key('field'))
        
        assert_true(self.session.data[0].has_key('id'))
        assert_true(self.session.data[0]['id'], 1)
        
        assert_true(self.session.data[0].has_key('type'))
        assert_true(self.session.data[0]['type'] == 'MockEntity')
        
        assert_true(self.session.data[0].has_key('field'))
        assert_true(self.session.data[0]['field'] == 'test_value')
        
        # test the special shot entity hack
        data = self.session.create('Shot', {'code':'test_shot'}, return_fields=['sg_status_list'])
        
        assert_true(data.has_key('sg_status_list'))
        assert_true(data['sg_status_list'] == '')
        
        # test the id generation behaviour
        self.session = MockShotgun(first_id=2)
        data = self.session.create('MockEntity', {'field':'test_value'}, return_fields=['field'])

        assert_true(data['id'] == 2)
        
        # test the default value auto-population behaviour
        schema = [{'MockEntity': {'field_one':{}, 'field_two':{'data_type': {'value':'integer'}, 
                                                               'editable': {'value':False}, 
                                                               'properties': {'default_value': {'value': 99}}}}}]
        self.session = MockShotgun(schema=schema)
        data = self.session.create('MockEntity', {'field_one':'test_value'}, return_fields=['field_one', 'field_two'])
        
        assert_true(data['field_two'], 99)
    
    def test_update(self):
        """
        Check that the specified entity is updated as expected.
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        data = self.session.create('MockEntity', {'field':'test_value'})

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'test_value')
        
        # perform the actual test
        self.session.update('MockEntity', data['id'], {'field':'updated'})
        
        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'updated')
    
    def test_delete(self):
        """
        Check that entities are deleted from the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        data = self.session.create('MockEntity', {'field':'test_value'})
        
        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'test_value')
        
        # perform the actual test
        self.session.delete('MockEntity', data['id'])
        
        assert_true(len(self.session.data) == 0)
        
    def test_upload_thumbnail(self):
        """
        Check that it is possible to upload thumbnails to the mock shotgun object.
        
        .. versionadded:: 0.3.0
        """
        assert_true(hasattr(self.session, 'upload_thumbnail'))
        
        self.session.upload_thumbnail('MockEntity', 1, '/drd/transfer/fake_thumbnail.jpg')
        
        assert_true(True) # we can't actually check anything, as the method does nothing ...
    
    def test_schema_field_read(self):
        """
        Check that the schema_field_read() method works as expected.
        
        .. versionadded:: 0.2.0
        """
        schema = {'MockEntity': {'field':   {'data_type': {'value':'entity'}, 'properties': {'valid_values': {'value': ['TestEntity']}}}}} 
        self.session.schema = [schema]
        
        assert_true(self.session.schema_field_read('MockEntity') == schema['MockEntity'])
        assert_true(self.session.schema_field_read('MockEntity', 'field')['field'] == schema['MockEntity']['field'])
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_04_00
        """
        self.shotgun_data = [{
            'id': 1,
            'type': 'Project',
            'sg_short_name': 'hf2'
        }, {
            'id': 2,
            'type': 'Scene',
            'code': '19d',
            'project': {
                'id': 1,
                'type': 'Project'
            }
        }, {
            'id': 3,
            'type': 'Shot',
            'code': '19d_010',
            'project': {
                'id': 1,
                'type': 'Project'
            }
        }, {
            'id': 4,
            'type': 'Asset',
            'code': 'mumble'
        }, {
            'id': 5,
            'type': 'Asset',
            'code': 'mumbleDry'
        }, {
            'id': 6,
            'type': 'Asset',
            'code': 'crevasse'
        }, {
            'id': 7,
            'type': 'Asset',
            'code': 'empLand'
        }, {
            'id': 8,
            'type': 'Asset',
            'code': 'bubbleTrail'
        }, {
            'id': 9,
            'type': 'Asset',
            'code': 'bubbles'
        }, {
            'id': 10,
            'type': 'Asset',
            'code': 'shiny_rock'
        }, {
            'id': 11,
            'type': 'Asset',
            'code': 'clouds'
        }]

        self.session = MockShotgun(schema=[], data=self.shotgun_data)
        self.translator = PublishEventTranslator(self.session)
class TestMockShotgun(object):
    """
    Nose unit test suite for Probe MockShotgun.
    
    .. versionadded:: 0.2.0
    """
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: 0.2.0
        """
        self.session = MockShotgun()

    def teardown(self):
        """
        Tear down the unit test suite.
        
        .. versionadded:: 0.2.0
        """
        pass

    def test_init(self):
        """
        Verify that the mock shotgun object is correctly initialised.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Ensure the base_url is correctly initialised.
        """
        assert_equals(self.session.host, '')
        assert_equals(self.session.user, '')
        assert_equals(self.session.skey, '')
        assert_equals(self.session.base_url, self.session.host)
        assert_equals(self.session.schema, [])
        assert_equals(self.session.data, [])

    def test_find(self):
        """
        Test the mock shotgun object's find() method!
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        e1 = self.session.create('MockEntity', {'field': 'test_value'})
        e2 = self.session.create('MockEntity', {'field': 'test_value'})
        e3 = self.session.create('MockEntity', {'field': 'different_value'})

        assert_true(len(self.session.data) == 3)

        # perform the actual test
        results = self.session.find('MockEntity',
                                    [['field', 'is', 'test_value']])

        assert_true(len(results) == 2)
        for result in results:
            assert_true(result['id'] in [e1['id'], e2['id']])

    def test_find_one(self):
        """
        Test the mock shotgun object's find_one() method!
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        e1 = self.session.create('MockEntity', {'field': 'test_value'})
        e2 = self.session.create('MockEntity', {'field': 'test_value'})
        e3 = self.session.create('MockEntity', {'field': 'different_value'})

        assert_true(len(self.session.data) == 3)

        # perform the actual test(s)
        result = self.session.find_one('MockEntity',
                                       [['field', 'is', 'test_value']])
        assert_true(result['id'] == e1['id'])

        result = self.session.find_one('MockEntity',
                                       [['field', 'is', 'test_foobar']])
        assert_true(result == None)

    def test_create(self):
        """
        Check that new entities are created within the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        .. versionchanged:: 0.3.0
            Updated to support/test return fields, id generation, etc.
        .. versionchanged:: 0.8.0
            Test that the correct id is generated on create() when first_id has been set
            on the mock shotgun object.
        .. versionchanged:: 0.8.0
            Test that the default value auto-population behaviour is working correctly.
        """
        data = self.session.create('MockEntity', {'field': 'test_value'},
                                   return_fields=['field'])

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data == [data])
        assert_true(data.has_key('field'))

        assert_true(self.session.data[0].has_key('id'))
        assert_true(self.session.data[0]['id'], 1)

        assert_true(self.session.data[0].has_key('type'))
        assert_true(self.session.data[0]['type'] == 'MockEntity')

        assert_true(self.session.data[0].has_key('field'))
        assert_true(self.session.data[0]['field'] == 'test_value')

        # test the special shot entity hack
        data = self.session.create('Shot', {'code': 'test_shot'},
                                   return_fields=['sg_status_list'])

        assert_true(data.has_key('sg_status_list'))
        assert_true(data['sg_status_list'] == '')

        # test the id generation behaviour
        self.session = MockShotgun(first_id=2)
        data = self.session.create('MockEntity', {'field': 'test_value'},
                                   return_fields=['field'])

        assert_true(data['id'] == 2)

        # test the default value auto-population behaviour
        schema = [{
            'MockEntity': {
                'field_one': {},
                'field_two': {
                    'data_type': {
                        'value': 'integer'
                    },
                    'editable': {
                        'value': False
                    },
                    'properties': {
                        'default_value': {
                            'value': 99
                        }
                    }
                }
            }
        }]
        self.session = MockShotgun(schema=schema)
        data = self.session.create('MockEntity', {'field_one': 'test_value'},
                                   return_fields=['field_one', 'field_two'])

        assert_true(data['field_two'], 99)

    def test_update(self):
        """
        Check that the specified entity is updated as expected.
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        data = self.session.create('MockEntity', {'field': 'test_value'})

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'test_value')

        # perform the actual test
        self.session.update('MockEntity', data['id'], {'field': 'updated'})

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'updated')

    def test_delete(self):
        """
        Check that entities are deleted from the mock shotgun object as expected.
        
        .. versionadded:: 0.2.0
        """
        # inject some test data
        data = self.session.create('MockEntity', {'field': 'test_value'})

        assert_true(len(self.session.data) == 1)
        assert_true(self.session.data[0]['field'] == 'test_value')

        # perform the actual test
        self.session.delete('MockEntity', data['id'])

        assert_true(len(self.session.data) == 0)

    def test_upload_thumbnail(self):
        """
        Check that it is possible to upload thumbnails to the mock shotgun object.
        
        .. versionadded:: 0.3.0
        """
        assert_true(hasattr(self.session, 'upload_thumbnail'))

        self.session.upload_thumbnail('MockEntity', 1,
                                      '/drd/transfer/fake_thumbnail.jpg')

        assert_true(
            True
        )  # we can't actually check anything, as the method does nothing ...

    def test_schema_field_read(self):
        """
        Check that the schema_field_read() method works as expected.
        
        .. versionadded:: 0.2.0
        """
        schema = {
            'MockEntity': {
                'field': {
                    'data_type': {
                        'value': 'entity'
                    },
                    'properties': {
                        'valid_values': {
                            'value': ['TestEntity']
                        }
                    }
                }
            }
        }
        self.session.schema = [schema]

        assert_true(
            self.session.schema_field_read('MockEntity') ==
            schema['MockEntity'])
        assert_true(
            self.session.schema_field_read('MockEntity', 'field')['field'] ==
            schema['MockEntity']['field'])
Esempio n. 21
0
    def setup(self):
        """
        Set up the unit test suite.
        
        .. versionadded:: v00_03_00
        .. versionchanged:: v00_08_00
            Added a new field to the schema, to allow testing of default field values.
        .. versionchanged:: 0.9.0
            Added a new field to the schema, to allow testing of read-only field values.
        .. versionchanged:: 1.0.0
            Added a new schema field to allow testing that unsupported API data types are filtered out.
        """
        self.shotgun_schema = [{
            'MockModel': {
                'field_one': {
                    'data_type': {
                        'value': 'entity'
                    },
                    'editable': {
                        'value': True
                    },
                    'properties': {
                        'valid_values': {
                            'value': ['MockModel']
                        }
                    }
                },
                'field_two': {
                    'data_type': {
                        'value': 'entity'
                    },
                    'editable': {
                        'value': True
                    },
                    'properties': {
                        'valid_values': {
                            'value': ['MockModel']
                        }
                    }
                },
                'field_three': {
                    'data_type': {
                        'value': 'entity'
                    },
                    'editable': {
                        'value': True
                    },
                    'properties': {
                        'valid_values': {
                            'value': ['MockModel']
                        }
                    }
                },
                'field_four': {
                    'data_type': {
                        'value': 'string'
                    },
                    'editable': {
                        'value': False
                    },
                    'properties': {
                        'default_value': {
                            'value': "default"
                        }
                    }
                },
                'field_pivot': {
                    'data_type': {
                        'value': 'pivot_column'
                    },
                    'properties': {}
                }
            }
        }]

        self.session = MockShotgun(schema=self.shotgun_schema, data=[])
        self.factory = ModelBuilder()

        self.translator = MockTranslator()