/* * Copyright 2010 Glencoe Software, Inc. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package integration.delete; import integration.AbstractServerTest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import ome.specification.XMLMockObjects; import ome.specification.XMLWriter; import ome.xml.model.OME; import omero.cmd.Delete2; import omero.cmd.graphs.ChildOption; import omero.gateway.util.Requests; import omero.model.Experiment; import omero.model.Pixels; import omero.model.Plate; import omero.model.Screen; import omero.model.WellSample; import org.testng.annotations.Test; import static org.testng.AssertJUnit.*; /** * Tests for deleting screen/plate/wells * * @since 4.2.1 */ @Test(groups = "ticket:2615") public class SpwDeleteTest extends AbstractServerTest { @Test(groups = {"ticket12601", "ticket:3102", "ticket:11540"}) public void testScreen() throws Exception { newUserAndGroup("rw----"); List<Pixels> pixels = createScreen(); Experiment exp = null; Screen screen = null; List<Plate> plates = new ArrayList<Plate>(); List<WellSample> samples = new ArrayList<WellSample>(); for (Pixels p : pixels) { Experiment e = getExperiment(p); if (exp == null) { exp = e; } else { assertEquals(exp.getId().getValue(), e.getId().getValue()); } WellSample ws = getWellSample(p); Plate plate = ws.getWell().getPlate(); Screen s = plate.copyScreenLinks().get(0).getParent(); if (screen == null) { screen = s; } else { assertEquals(screen.getId().getValue(), s.getId().getValue()); } } // In order to avoid omero.LockTimeout // see XMLMockObjects.createScreen() scalingFactor *= 1*2*2*2*2; final Delete2 dc = Requests.delete("Screen", screen.getId().getValue()); callback(true, client, dc); assertDoesNotExist(screen); assertNoneExist(plates.toArray(new Plate[0])); assertNoneExist(samples.toArray(new WellSample[0])); assertNoneExist(pixels.toArray(new Pixels[0])); } /** * Tests to delete a screen and keep the plate. * * @throws Exception * Thrown if an error occurred. */ public void testScreenKeepPlates() throws Exception { newUserAndGroup("rw----"); List<Pixels> pixels = createScreen(); Pixels p = pixels.get(0); WellSample ws = getWellSample(p); Plate plate = ws.getWell().getPlate(); Screen screen = plate.copyScreenLinks().get(0).getParent(); long sid = screen.getId().getValue(); final ChildOption option = Requests.option(null, "Plate"); final Delete2 dc = Requests.delete("Screen", sid, option); callback(true, client, dc); assertDoesNotExist(screen); assertExists(plate); } @Test(groups = {"ticket12601", "ticket:3890"}) public void testImportMultiplePlates() throws Exception { create(new Creator() { public OME create(XMLMockObjects xml) { return xml.createPopulatedScreen(2, 2, 2, 2, 2); } }); } // // Helpers // interface Creator { OME create(XMLMockObjects xml); } private List<Pixels> createScreen() throws IOException, Exception { return create(new Creator() { public OME create(XMLMockObjects xml) { return xml.createPopulatedScreen(); } }); } private List<Pixels> create(Creator creator) throws Exception { File f = File.createTempFile("testImportPlate", ".ome.xml"); f.deleteOnExit(); XMLMockObjects xml = new XMLMockObjects(); XMLWriter writer = new XMLWriter(); OME ome = creator.create(xml); writer.writeFile(f, ome, true); List<Pixels> pixels = null; try { pixels = importFile(f, "ome.xml"); } catch (Throwable e) { throw new Exception("cannot import the plate", e); } return pixels; } }