org.apache.jackrabbit.test.api.version.VersionGraphTest Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.test.api.version;
import javax.jcr.version.Version;
import javax.jcr.version.VersionManager;
import javax.jcr.RepositoryException;
import javax.jcr.Property;
import javax.jcr.Value;
import javax.jcr.UnsupportedRepositoryOperationException;
/**
* VersionGraphTest
contains test methods related to version graph
* issues.
*
*/
public class VersionGraphTest extends AbstractVersionTest {
/**
* Test that the initial base version after creation of a versionable node
* points to the root version.
*
* @throws javax.jcr.RepositoryException
*/
public void testInitialBaseVersionPointsToRootVersion() throws RepositoryException {
Version rV = versionableNode.getVersionHistory().getRootVersion();
Version bV = versionableNode.getBaseVersion();
assertTrue("After creation of a versionable node the node's baseVersion must point to the rootVersion in the version history.", rV.isSame(bV));
}
/**
* Test that the initial base version after creation of a versionable node
* points to the root version.
*
* @throws javax.jcr.RepositoryException
*/
public void testInitialBaseVersionPointsToRootVersionJcr2() throws RepositoryException {
VersionManager versionManager = versionableNode.getSession().getWorkspace().getVersionManager();
String path = versionableNode.getPath();
Version rV = versionManager.getVersionHistory(path).getRootVersion();
Version bV = versionManager.getBaseVersion(path);
assertTrue("After creation of a versionable node the node's baseVersion must point to the rootVersion in the version history.", rV.isSame(bV));
}
/**
* Test if after creation of a versionable node N the multi-value
* REFERENCE property jcr:predecessors of N is initialized to contain a
* single UUID, that of the root version (the same as jcr:baseVersion).
*
* @throws RepositoryException
*/
public void testInitialNodePredecessors() throws RepositoryException {
Property predecessors = versionableNode.getProperty(jcrPredecessors);
Value[] values = predecessors.getValues();
Version rV = versionableNode.getVersionHistory().getRootVersion();
if (values.length != 1) {
fail("The jcr:predecessors property of a versionable node must be initialized to contain a single value");
}
Value initialVal = values[0];
assertTrue("The jcr:predecessors property of a versionable node is initialized to contain a single UUID, that of the root version", initialVal.equals(superuser.getValueFactory().createValue(rV)));
}
/**
* Test if after creation of a versionable node N the multi-value
* REFERENCE property jcr:predecessors of N is initialized to contain a
* single UUID, that of the root version (the same as jcr:baseVersion).
*
* @throws RepositoryException
*/
public void testInitialNodePredecessorsJcr2() throws RepositoryException {
Property predecessors = versionableNode.getProperty(jcrPredecessors);
Value[] values = predecessors.getValues();
Version rV = versionableNode.getSession().getWorkspace().getVersionManager().getVersionHistory(versionableNode.getPath()).getRootVersion();
if (values.length != 1) {
fail("The jcr:predecessors property of a versionable node must be initialized to contain a single value");
}
Value initialVal = values[0];
assertTrue("The jcr:predecessors property of a versionable node is initialized to contain a single UUID, that of the root version", initialVal.equals(superuser.getValueFactory().createValue(rV)));
}
/**
* Test if the root version does not have any predecessor versions.
*
* @throws RepositoryException
*/
public void testRootVersionHasNoPredecessor() throws RepositoryException {
Version[] predec = versionableNode.getVersionHistory().getRootVersion().getPredecessors();
assertTrue("The root version may not have any predecessors.", predec.length == 0);
}
/**
* Test if the root version does not have any predecessor versions.
*
* @throws RepositoryException
*/
public void testRootVersionHasNoPredecessorJcr2() throws RepositoryException {
Version[] predec = versionableNode.getSession().getWorkspace().getVersionManager().getVersionHistory(versionableNode.getPath()).getRootVersion().getPredecessors();
assertTrue("The root version may not have any predecessors.", predec.length == 0);
}
/**
* Test if UnsupportedRepositoryOperationException is thrown when calling
* Node.getVersionHistory() on a non-versionable node.
*
* @throws RepositoryException
*/
public void testGetBaseVersionOnNonVersionableNode() throws RepositoryException {
try {
nonVersionableNode.getBaseVersion();
fail("Node.getBaseVersion() must throw UnsupportedRepositoryOperationException if the node is not versionable.");
} catch (UnsupportedRepositoryOperationException e) {
//success
}
}
/**
* Test if UnsupportedRepositoryOperationException is thrown when calling
* Node.getVersionHistory() on a non-versionable node.
*
* @throws RepositoryException
*/
public void testGetBaseVersionOnNonVersionableNodeJcr2() throws RepositoryException {
try {
nonVersionableNode.getSession().getWorkspace().getVersionManager().getBaseVersion(nonVersionableNode.getPath());
fail("Node.getBaseVersion() must throw UnsupportedRepositoryOperationException if the node is not versionable.");
} catch (UnsupportedRepositoryOperationException e) {
//success
}
}
}