package test.org.korsakow.command; import java.util.Collection; import org.junit.Assert; import org.dsrg.soenea.domain.interf.IDomainObject; import org.dsrg.soenea.uow.UoW; import org.junit.Test; import org.korsakow.domain.ImageFactory; import org.korsakow.domain.InterfaceFactory; import org.korsakow.domain.ProjectFactory; import org.korsakow.domain.SnuFactory; import org.korsakow.domain.SoundFactory; import org.korsakow.domain.VideoFactory; import org.korsakow.domain.command.DeleteImageCommand; import org.korsakow.domain.command.DeleteSoundCommand; import org.korsakow.domain.command.DeleteVideoCommand; import org.korsakow.domain.command.RemoveReferencesToResourceCommand; import org.korsakow.domain.command.Request; import org.korsakow.domain.command.Response; import org.korsakow.domain.interf.IImage; import org.korsakow.domain.interf.IInterface; import org.korsakow.domain.interf.IMedia; import org.korsakow.domain.interf.IProject; import org.korsakow.domain.interf.IResource; import org.korsakow.domain.interf.ISnu; import org.korsakow.domain.interf.ISound; import org.korsakow.ide.DataRegistry; import test.org.korsakow.domain.AbstractDomainObjectTestCase; import test.util.DomainTestUtil; public class TestRemoveReferencesCommand extends AbstractDomainObjectTestCase { @Test public void testDeleteSnuMainMediaFailure() throws Exception { IProject proj = ProjectFactory.createNew(); IMedia media = VideoFactory.createNew(); ISnu snu = SnuFactory.createNew(); snu.setMainMedia(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute();; request = new Request(); request.set("id", media.getId()); new DeleteVideoCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, snu); DomainTestUtil.assertVideoExist(DataRegistry.getFile(), media.getId(), true); } @Test public void testDeleteSnuPreviewSuccess() throws Exception { IProject proj = ProjectFactory.createNew(); IMedia media = VideoFactory.createNew(); ISnu snu = SnuFactory.createNew(); snu.setPreviewMedia(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteVideoCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, snu); DomainTestUtil.assertVideoExist(DataRegistry.getFile(), media.getId(), false); } @Test public void testDeleteSnuBackgroundSoundSuccess() throws Exception { IProject proj = ProjectFactory.createNew(); ISound media = SoundFactory.createNew(); ISnu snu = SnuFactory.createNew(); snu.setBackgroundSound(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteSoundCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, snu); DomainTestUtil.assertSoundNotExist(DataRegistry.getFile(), media.getId()); } @Test public void testDeleteProjectBackgroundSoundSuccess() throws Exception { ISound media = SoundFactory.createNew(); IProject project = ProjectFactory.createNew(); project.setBackgroundSound(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteSoundCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, project); DomainTestUtil.assertSoundNotExist(DataRegistry.getFile(), media.getId()); } @Test public void testDeleteProjectBackgroundImageSuccess() throws Exception { IImage media = ImageFactory.createNew(); IProject project = ProjectFactory.createNew(); project.setBackgroundImage(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteImageCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, project); DomainTestUtil.assertImageNotExist(DataRegistry.getFile(), media.getId()); } @Test public void testDeleteProjectClickSoundSuccess() throws Exception { ISound media = SoundFactory.createNew(); IProject project = ProjectFactory.createNew(); project.setClickSound(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteSoundCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, project); DomainTestUtil.assertSoundNotExist(DataRegistry.getFile(), media.getId()); } @Test public void testDeleteProjectSplashScreenSuccess() throws Exception { IMedia media = ImageFactory.createNew(); IProject project = ProjectFactory.createNew(); project.setSplashScreenMedia(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteImageCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, project); DomainTestUtil.assertImageNotExist(DataRegistry.getFile(), media.getId()); } @Test public void testDeleteInterfaceClickSoundSuccess() throws Exception { IProject proj = ProjectFactory.createNew(); ISound media = SoundFactory.createNew(); IInterface interf = InterfaceFactory.createNew(); interf.setClickSound(media); UoW.getCurrent().commit(); UoW.newCurrent(); Request request = new Request(); request.set("id", media.getId()); new RemoveReferencesToResourceCommand(request, new Response()).execute(); request = new Request(); request.set("id", media.getId()); new DeleteSoundCommand(request, new Response()).execute(); DataRegistry.flush(); assertNotInUse(request, interf); DomainTestUtil.assertSoundNotExist(DataRegistry.getFile(), media.getId()); } private void assertNotInUse(Request response, IDomainObject<Long> referee) { Boolean resourceInUse = (Boolean)response.get("resourceInUse"); Assert.assertFalse("resourceInUse==FALSE", Boolean.FALSE.equals(resourceInUse)); Collection<IResource> references = (Collection<IResource>)response.get("references"); if (references != null) Assert.assertEquals(0, references.size()); } }