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:: 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)
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)
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)
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)
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)
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)
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)
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)
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)
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'])
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()