package ch.x42.terye; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import javax.jcr.ItemExistsException; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.PathNotFoundException; import javax.jcr.Property; import javax.jcr.PropertyIterator; import javax.jcr.RepositoryException; import javax.jcr.Session; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; public class NodeTest extends BaseTest { private Node node1; @Override @Before public void setUp() throws Exception { super.setUp(); node1 = session.getNode("/node1"); } @Test public void testAddNode() throws RepositoryException { Node node4 = node1.addNode("node4"); assertEquals("node4", node4.getName()); assertEquals("/node1/node4", node4.getPath()); } @Test public void testAddNodeSave() throws RepositoryException { node1.addNode("node4"); session.save(); // verify existence of node in a new session Session session2 = repository.login(); assertTrue(session2.nodeExists("/node1/node4")); } @Test(expected = IllegalArgumentException.class) public void testAddINodellegalArgument() throws RepositoryException { node1.addNode("/not/relative"); } @Test(expected = PathNotFoundException.class) public void testAddNodePathNotFound() throws RepositoryException { node1.addNode("node2/no/where"); } @Test(expected = ItemExistsException.class) public void testAddNodeItemExists() throws RepositoryException { node1.addNode("node2"); } @Test public void testGetNode() throws RepositoryException { Node node2 = node1.getNode("node2"); assertEquals("node2", node2.getName()); assertEquals("/node1/node2", node2.getPath()); } @Test(expected = IllegalArgumentException.class) public void testGetNodeIllegalArgument() throws RepositoryException { node1.getNode("/not/relative"); } @Test(expected = PathNotFoundException.class) public void testGetNodePathNotFound() throws RepositoryException { node1.getNode("node2/no/where"); } @Test public void testGetNodes() throws RepositoryException { NodeIterator iterator = node1.getNodes(); assertEquals(2, iterator.getSize()); Node node2 = iterator.nextNode(); assertEquals("node2", node2.getName()); assertEquals("/node1/node2", node2.getPath()); Node node3 = iterator.nextNode(); assertEquals("node3", node3.getName()); assertEquals("/node1/node3", node3.getPath()); assertFalse(iterator.hasNext()); } @Test public void testHasNode() throws RepositoryException { assertTrue(node1.hasNode("node2")); assertTrue(node1.hasNode("..")); assertFalse(node1.hasNode("node4")); } @Test(expected = IllegalArgumentException.class) public void testHasNodeIllegalArgument() throws RepositoryException { node1.hasNode("/not/relative"); } @Test public void testHasNodes() throws RepositoryException { assertTrue(node1.hasNodes()); Node node2 = node1.getNode("node2"); assertFalse(node2.hasNodes()); } @Test public void testSetProperty() throws RepositoryException { Property property = node1.setProperty("property4", "stuvwx"); assertEquals("property4", property.getName()); assertEquals("/node1/property4", property.getPath()); } @Test public void testSetPropertySave() throws RepositoryException { node1.setProperty("property4", "stuvwx"); session.save(); // verify existence of node in a new session Session session2 = repository.login(); assertTrue(session2.propertyExists("/node1/property4")); } @Ignore("to be done") @Test public void testSetPropertyIllegalArgument() { } @Test public void testGetProperty() throws RepositoryException { Property property2 = node1.getProperty("property2"); assertEquals("property2", property2.getName()); assertEquals("/node1/property2", property2.getPath()); } @Test(expected = IllegalArgumentException.class) public void testGetPropertyIllegalArgument() throws RepositoryException { node1.getProperty("/not/relative"); } @Test(expected = PathNotFoundException.class) public void testGetPathNotFound() throws RepositoryException { node1.getProperty("node2/to/nowhere"); } @Test public void testGetProperties() throws RepositoryException { PropertyIterator iterator = node1.getProperties(); assertEquals(2, iterator.getSize()); Property property2 = iterator.nextProperty(); assertEquals("property2", property2.getName()); assertEquals("/node1/property2", property2.getPath()); Property property3 = iterator.nextProperty(); assertEquals("property3", property3.getName()); assertEquals("/node1/property3", property3.getPath()); assertFalse(iterator.hasNext()); } @Ignore("to be done") @Test public void testOverwriteProperty() throws RepositoryException { } @Test public void testHasProperty() throws RepositoryException { assertTrue(node1.hasProperty("property2")); assertTrue(node1.hasProperty("../property1")); assertFalse(node1.hasProperty("property4")); } @Test(expected = IllegalArgumentException.class) public void testHasPropertyIllegalArgument() throws RepositoryException { node1.hasProperty("/not/relative"); } @Test public void testHasProperties() throws RepositoryException { assertTrue(node1.hasProperties()); Node node2 = node1.getNode("node2"); assertFalse(node2.hasProperties()); } @Test public void testGetParent() throws RepositoryException { Node parent = node1.getParent(); assertEquals(root.getName(), parent.getName()); assertEquals(root.getPath(), parent.getPath()); } @Test(expected = PathNotFoundException.class) public void testRemove() throws RepositoryException { node1.remove(); assertFalse(session.itemExists("/node1")); assertFalse(session.itemExists("/node1/node2")); assertFalse(session.itemExists("/node1/node3")); assertFalse(session.itemExists("/node1/property2")); assertFalse(session.itemExists("/node1/property3")); assertFalse(root.hasNodes()); root.getNode("node1"); } @Test public void testRemoveSave() throws RepositoryException { node1.remove(); session.save(); Session session2 = repository.login(); assertFalse(session2.itemExists("/node1")); assertFalse(session2.itemExists("/node1/node2")); assertFalse(session2.itemExists("/node1/node3")); assertFalse(session2.itemExists("/node1/property2")); assertFalse(session2.itemExists("/node1/property3")); assertFalse(session2.getRootNode().hasNodes()); session2.logout(); } @Test public void testIsNode() throws RepositoryException { assertTrue(node1.isNode()); } }