/*
* $Id$
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.server.itests.query;
import java.util.HashSet;
import java.util.List;
import org.testng.annotations.Test;
import ome.conditions.ApiUsageException;
import ome.model.containers.Dataset;
import ome.model.containers.Project;
import ome.model.containers.ProjectDatasetLink;
import ome.server.itests.AbstractManagedContextTest;
@Test(groups = { "query" })
public class SimpleQueriesTest extends AbstractManagedContextTest {
private static final String TICKET_72 = "ticket:72";
private static final String TICKET_347 = "ticket:347";
@Test(groups = { TICKET_72 })
public void test_findAll() throws Exception {
Project p = new Project();
p.setName(TICKET_72);
p = iUpdate.saveAndReturnObject(p);
List<Project> list = iQuery.findAll(Project.class, null);
}
@Test(groups = { TICKET_347, "broken", "Unscheduled" })
public void testRefresh() throws Exception {
Project p = new Project();
p.setName(TICKET_347);
p = iUpdate.saveAndReturnObject(p);
// Test 1
p = iQuery.refresh(p);
assertNotNull(p);
assertNotNull(p.getId());
assertEquals(p.getName(), TICKET_347);
// Test 2
Dataset d = new Dataset();
d.setName(TICKET_347);
p.putAt(Project.DATASETLINKS, new HashSet());
p.linkDataset(d);
// this should fail since dataset is a new instance.
try {
p = iQuery.refresh(p);
fail("refresh should throw ApiUsage on transient entities.");
} catch (ApiUsageException api) {
// ok
}
// Test 3
// now let's try it without transient entities
p = iQuery.get(p.getClass(), p.getId());
d.clearProjectLinks();
p.putAt(Project.DATASETLINKS, new HashSet());
d = iUpdate.saveAndReturnObject(d);
p.linkDataset(d);
p = iUpdate.saveAndReturnObject(p);
p = iQuery.refresh(p);
assertNotNull(p);
assertTrue(p.sizeOfDatasetLinks() == 1);
// Test 4
// now let's add something else to a collection
ProjectDatasetLink link = new ProjectDatasetLink();
link.link(new Project(p.getId(), false), new Dataset(d.getId(), false));
link = iUpdate.saveAndReturnObject(link);
p = iQuery.refresh(p);
assertNotNull(p);
assertTrue(p.sizeOfDatasetLinks() == 2);
// Test 5
// now let's remove something
iUpdate.deleteObject(link);
p = iQuery.refresh(p);
assertNotNull(p);
assertTrue(p.sizeOfDatasetLinks() == 1);
}
}