/*
* 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.RepositoryException;
import javax.jcr.version.Version;
import javax.jcr.version.VersionManager;
/**
* <code>GetPredecessorsTest</code> provides test methods covering {@link
* Version#getPredecessors()}, {@link Version#getLinearPredecessor()} and
* {@link Version#getLinearSuccessor()}.
*
*/
public class GetPredecessorsTest extends AbstractVersionTest {
/**
* Returns the predecessor versions of this version. This corresponds to
* returning all the nt:version nodes whose jcr:successors property includes
* a reference to the nt:version node that represents this version. A
* RepositoryException is thrown if an error occurs.
*/
public void testGetPredecessors() throws RepositoryException {
// create a new version
versionableNode.checkout();
Version version = versionableNode.checkin();
assertTrue("Version should have at minimum one predecessor version.", version.getPredecessors().length > 0);
}
/**
* Checks ontaining the linear predecessor.
* @since JCR 2.0
*/
public void testGetLinearPredecessorSuccessor() throws RepositoryException {
String path = versionableNode.getPath();
VersionManager vm = versionableNode.getSession().getWorkspace().getVersionManager();
// get the previous version
Version pred = vm.getBaseVersion(path);
// shouldn't have a successor yet
assertNull(pred.getLinearSuccessor());
// check root version
Version root = vm.getVersionHistory(path).getRootVersion();
assertNull(root.getLinearSuccessor());
// create a new version
vm.checkout(path);
Version version = vm.checkin(path);
// refresh the predecessor
pred = (Version)versionableNode.getSession().getNode(pred.getPath());
assertTrue("linear predecessor of new version should be previous version",
version.getLinearPredecessor().isSame(pred));
assertTrue("linear successor of previous version should be new version",
pred.getLinearSuccessor().isSame(version));
}
}