001    /**
002     * Copyright 2005-2011 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.krad.datadictionary;
017    
018    import org.apache.log4j.Logger;
019    import org.junit.After;
020    import org.junit.Before;
021    import org.junit.Test;
022    
023    import static org.junit.Assert.assertTrue;
024    import static org.junit.Assert.fail;
025    
026    /**
027     * This class is used to test the DataDictionaryBuilder.
028     * 
029     * 
030     */
031    
032    public class DataDictionaryBuilderTest {
033        protected final Logger LOG = Logger.getLogger(getClass());
034    
035        static final String PACKAGE_CORE_BO = "org/kuali/rice/krad/bo/datadictionary/";
036    
037            static final String PACKAGE_CORE_DOCUMENT = "org/kuali/rice/krad/document/datadictionary/";
038    
039            static final String PACKAGE_KFS = "org/kuali/kfs/datadictionary/";
040    
041            static final String PACKAGE_CHART = "org/kuali/module/chart/datadictionary/";
042    
043            static final String PACKAGE_CG = "org/kuali/module/cg/datadictionary/";
044    
045            static final String PACKAGE_KRA_BUDGET = "org/kuali/module/kra/budget/datadictionary/";
046    
047            static final String PACKAGE_KRA_ROUTINGFORM = "org/kuali/module/kra/routingform/datadictionary/";
048    
049            static final String TESTPACKAGE_INVALID = "org/kuali/rice/krad/datadictionary/test/invalid/";
050    
051            DataDictionary dd = null;
052    
053            @Before
054            public void setUp() throws Exception {
055    
056                    dd = new DataDictionary();
057            }
058    
059            @After
060            public void tearDown() throws Exception {
061                    dd = null;
062            }
063    
064            @Test
065            public final void testDataDictionaryBuilder_source_invalid() throws Exception {
066                    boolean failedAsExpected = false;
067    
068                    try {
069                            dd.addConfigFileLocation(null);
070                    } catch (DataDictionaryException e) {
071                            failedAsExpected = true;
072                    }
073    
074                    assertTrue(failedAsExpected);
075            }
076    
077            @Test
078            public final void testDataDictionaryBuilder_source_unknownFile() throws Exception {
079                    String INPUT_FILE = TESTPACKAGE_INVALID + "foo.xml";
080    
081                    boolean failedAsExpected = false;
082    
083                    try {
084                            dd.addConfigFileLocation(INPUT_FILE);
085                    } catch (DataDictionaryException e) {
086                            failedAsExpected = true;
087                    }
088    
089                    assertTrue(failedAsExpected);
090            }
091    
092            @Test
093            public final void testDataDictionaryBuilder_source_unknownPackage() throws Exception {
094                    String UNKNOWN_PACKAGE = TESTPACKAGE_INVALID + "foo/";
095    
096                    boolean failedAsExpected = false;
097    
098                    try {
099                            dd.addConfigFileLocation(UNKNOWN_PACKAGE);
100                    } catch (DataDictionaryException e) {
101                            failedAsExpected = true;
102                    }
103    
104                    assertTrue(failedAsExpected);
105            }
106    
107            @Test
108            public final void testDataDictionaryBuilder_invalidXml() throws Exception {
109                    String INPUT_FILE = TESTPACKAGE_INVALID + "InvalidXml.xml";
110    
111                    boolean failedAsExpected = false;
112    
113                    try {
114                            dd.addConfigFileLocation(INPUT_FILE);
115                            dd.parseDataDictionaryConfigurationFiles( false );
116                    } catch (DataDictionaryException e) {
117                            failedAsExpected = true;
118                    } catch (Exception e) {
119                LOG.error("Error loading DD files", e);
120                        fail("Data Dictionary file load failed but with wrong exception type '" + e.getClass().getName() + "'");
121                    }
122    
123                    assertTrue(failedAsExpected);
124            }
125    
126            @Test
127            public final void testDataDictionaryBuilder_getInvalidDictionary() throws Exception {
128                    String INPUT_FILE = TESTPACKAGE_INVALID + "InvalidXml.xml";
129    
130                    boolean failedAsExpected = false;
131    
132                    try {
133                            dd.addConfigFileLocation(INPUT_FILE);
134                            dd.parseDataDictionaryConfigurationFiles( false );
135                    } catch (DataDictionaryException e) {
136                            failedAsExpected = true;
137            } catch (Exception e) {
138                LOG.error("Error loading DD files", e);
139                fail("Data Dictionary file load failed but with wrong exception type '" + e.getClass().getName() + "'");
140                    }
141    
142                    assertTrue(failedAsExpected);
143            }
144    
145    }