def testDeleteSuccess(self): self.mox.StubOutWithMock(util, 'GetInstance') self.mox.StubOutWithMock(resource, '_IsResourceReferenced') handler = resource.ResourceHandler() dummy_id = object() handler.request = {'resource_id': dummy_id} mock_resource1 = self.mox.CreateMock(model.Resource) mock_resource1.blob = None mock_resource2 = self.mox.CreateMock(model.Resource) mock_resource2.blob = self.mox.CreateMockAnything() dummy_layer = object() util.GetInstance(model.Resource, dummy_id, dummy_layer).AndReturn( mock_resource1) resource._IsResourceReferenced(mock_resource1).AndReturn(False) mock_resource1.delete() util.GetInstance(model.Resource, dummy_id, dummy_layer).AndReturn( mock_resource2) resource._IsResourceReferenced(mock_resource2).AndReturn(False) mock_resource2.delete() mock_resource2.blob.delete() self.mox.ReplayAll() # Blobless resource. handler.Delete(dummy_layer) # Blobful resource. handler.Delete(dummy_layer)
def testIsResourceReferenced(self): layer = model.Layer(name='a', world='earth') layer.put() resource1 = model.Resource(layer=layer, filename='a', type='icon') resource1.put() resource2 = model.Resource(layer=layer, filename='b', type='icon') resource2.put() resource3 = model.Resource(layer=layer, filename='c', type='icon') resource3.put() resource4 = model.Resource(layer=layer, filename='d', type='model') resource4.put() layer.icon = resource1 layer.put() model.Folder(layer=layer, name='a', icon=resource2).put() model.Model(model=resource4, location=db.GeoPt(1, 2)).put() self.assertTrue(resource._IsResourceReferenced(resource1)) self.assertTrue(resource._IsResourceReferenced(resource2)) self.assertFalse(resource._IsResourceReferenced(resource3)) self.assertTrue(resource._IsResourceReferenced(resource4))
def testDeleteFailure(self): self.mox.StubOutWithMock(util, 'GetInstance') self.mox.StubOutWithMock(resource, '_IsResourceReferenced') handler = resource.ResourceHandler() dummy_id = object() handler.request = {'resource_id': dummy_id} mock_resource = self.mox.CreateMock(model.Resource) dummy_layer = object() util.GetInstance(model.Resource, dummy_id, dummy_layer).AndRaise( util.BadRequest) util.GetInstance(model.Resource, dummy_id, dummy_layer).AndReturn( mock_resource) resource._IsResourceReferenced(mock_resource).AndReturn(True) self.mox.ReplayAll() # GetInstance() returns None. self.assertRaises(util.BadRequest, handler.Delete, dummy_layer) # _IsResourceReferenced() returns True. self.assertRaises(util.BadRequest, handler.Delete, dummy_layer)