001    /*
002     * Copyright 2005-2013 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 edu.samplu.common;
017    
018    import org.junit.runners.BlockJUnit4ClassRunner;
019    import org.junit.runners.model.FrameworkMethod;
020    import org.junit.runners.model.InitializationError;
021    import org.junit.runners.model.Statement;
022    
023    import java.lang.reflect.Method;
024    
025    /**
026     * JUnit Test Runner to run test SmokeTests.  Enables bookmark mode for test methods
027     * ending in Bookmark and navigation mode for test methods ending in Nav.
028     */
029    public class SmokeTestRunner extends BlockJUnit4ClassRunner {
030    
031        /**
032         * SmokeTestRunner constructor
033         * @param type
034         * @throws InitializationError
035         */
036        public SmokeTestRunner(Class<?> type) throws InitializationError {
037            super(type);
038        }
039    
040        @Override
041        protected Statement methodInvoker(FrameworkMethod method, Object test) {
042            Method testMethod = method.getMethod();
043            final String testClass = test.getClass().toString();
044            if (testMethod.getName().endsWith("Bookmark") ||
045               (testClass.endsWith("WDIT")) ||
046               (testClass.endsWith("BkMrkGen"))) {
047                ((SmokeTestBase) test).enableBookmarkMode();
048            } else if (testMethod.getName().endsWith("Nav") ||
049                      (testClass.endsWith("NavIT"))) {
050                ((SmokeTestBase) test).enableNavigationMode();
051            }
052            return super.methodInvoker(method, test);
053        }
054    }