001/*
002 * Licensed to DuraSpace under one or more contributor license agreements.
003 * See the NOTICE file distributed with this work for additional information
004 * regarding copyright ownership.
005 *
006 * DuraSpace licenses this file to you under the Apache License,
007 * Version 2.0 (the "License"); you may not use this file except in
008 * compliance with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.fcrepo.webapp;
019
020import org.fcrepo.kernel.api.exception.MultipleConstraintViolationException;
021import org.junit.Assert;
022import org.fcrepo.kernel.api.exception.ConstraintViolationException;
023import org.fcrepo.kernel.api.exception.RelaxableServerManagedPropertyException;
024
025import org.junit.Test;
026import org.reflections.Reflections;
027
028import java.io.File;
029import java.util.Set;
030
031/**
032 * @author awoods
033 * @since 6/25/15
034 */
035public class ConstraintExceptionsTest {
036
037    @Test
038    public void testConstraintRdfExists() {
039        final Reflections reflections = new Reflections("org.fcrepo");
040        final Set<Class<? extends ConstraintViolationException>> subTypes =
041                reflections.getSubTypesOf(ConstraintViolationException.class);
042        // Multiple is a wrapper to hold other constraint violations, it has no static file.
043        subTypes.remove(MultipleConstraintViolationException.class);
044        // Relaxable is a sub-type of ServerManagedPropertyException to specially handle relaxable properties, it has
045        // no static file.
046        subTypes.remove(RelaxableServerManagedPropertyException.class);
047        subTypes.add(ConstraintViolationException.class);
048
049        for (final Class<? extends ConstraintViolationException> c : subTypes) {
050            final File file = new File("src/main/webapp/static/constraints/" + c.getSimpleName() + ".rdf");
051            Assert.assertTrue("Expected to find: " + file.getPath(), file.exists());
052        }
053    }
054
055}