Package org.impalaframework.spring.module

Source Code of org.impalaframework.spring.module.ProcessTransitionsTest

/*
* Copyright 2007-2010 the original author or authors.
*
* Licensed 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.impalaframework.spring.module;

import static org.easymock.EasyMock.expect;
import static org.easymock.classextension.EasyMock.createMock;
import static org.easymock.classextension.EasyMock.replay;
import static org.easymock.classextension.EasyMock.verify;
import static org.impalaframework.module.holder.SharedModuleDefinitionSources.newTest1;

import java.util.Collections;
import java.util.Set;

import junit.framework.TestCase;

import org.impalaframework.module.RootModuleDefinition;
import org.impalaframework.module.holder.DefaultModuleStateHolder;
import org.impalaframework.module.spi.Application;
import org.impalaframework.module.spi.ApplicationManager;
import org.impalaframework.module.spi.ModuleRuntimeManager;
import org.impalaframework.module.spi.ModuleStateChange;
import org.impalaframework.module.spi.ModuleStateChangeNotifier;
import org.impalaframework.module.spi.TestApplicationManager;
import org.impalaframework.module.spi.Transition;
import org.impalaframework.module.spi.TransitionSet;
import org.impalaframework.module.transition.DefaultTransitionManager;
import org.impalaframework.module.transition.LoadTransitionProcessor;
import org.impalaframework.module.transition.TransitionProcessorRegistry;
import org.impalaframework.module.transition.UnloadTransitionProcessor;
import org.springframework.context.ConfigurableApplicationContext;

public class ProcessTransitionsTest extends TestCase {

    private ApplicationContextLoader loader;
    private ConfigurableApplicationContext parentContext;
    private ConfigurableApplicationContext childContext;
    private DefaultModuleStateHolder moduleStateHolder;
    private LoadTransitionProcessor loadTransitionProcessor;
    private UnloadTransitionProcessor unloadTransitionProcessor;
    private ModuleStateChangeNotifier moduleStateChangeNotifier;
    private ModuleRuntimeManager moduleRuntimeManager;
    private DefaultTransitionManager transitionManager;
    private Application application;
   
    private void replayMocks() {
        replay(loader);
        replay(parentContext);
        replay(childContext);
        replay(moduleStateChangeNotifier);
        replay(moduleRuntimeManager);
    }
   
    private void verifyMocks() {
        verify(loader);
        verify(parentContext);
        verify(childContext);
        verify(moduleStateChangeNotifier);
        verify(moduleRuntimeManager);
    }
   
    public void setUp() {

        loader = createMock(ApplicationContextLoader.class);
        parentContext = createMock(ConfigurableApplicationContext.class);
        childContext = createMock(ConfigurableApplicationContext.class);
        moduleStateChangeNotifier = createMock(ModuleStateChangeNotifier.class);
        moduleRuntimeManager = createMock(ModuleRuntimeManager.class);

        moduleStateHolder = new DefaultModuleStateHolder();
        transitionManager = new DefaultTransitionManager();
       
        ApplicationManager applicationManager = TestApplicationManager.newApplicationManager(null, moduleStateHolder, null);
        application = applicationManager.getCurrentApplication();
       
        TransitionProcessorRegistry transitionProcessors = new TransitionProcessorRegistry();
        loadTransitionProcessor = new LoadTransitionProcessor();
        unloadTransitionProcessor = new UnloadTransitionProcessor();
        SpringModuleRuntime moduleRuntime = new SpringModuleRuntime();
        moduleRuntime.setApplicationContextLoader(loader);
       
        loadTransitionProcessor.setModuleRuntimeManager(moduleRuntimeManager);
       
        transitionProcessors.addItem(Transition.UNLOADED_TO_LOADED, loadTransitionProcessor);
        transitionProcessors.addItem(Transition.LOADED_TO_UNLOADED, unloadTransitionProcessor);
        transitionManager.setTransitionProcessorRegistry(transitionProcessors);
    }
   
    public void testLoadRoot() {
       
        RootModuleDefinition rootModuleDefinition = newTest1().getModuleDefinition();
        rootModuleDefinition.freeze();
       
        ModuleStateChange moduleStateChange = new ModuleStateChange(Transition.UNLOADED_TO_LOADED, rootModuleDefinition);
       
        //expectations (round 1 - loading of parent)
        expect(moduleRuntimeManager.initModule(application, rootModuleDefinition)).andReturn(true);
       
        replayMocks();
       
        Set<ModuleStateChange> singleton = Collections.singleton(moduleStateChange);
        TransitionSet transitionSet = new TransitionSet(singleton, rootModuleDefinition);
        transitionManager.processTransitions(moduleStateHolder, application, transitionSet);
        verifyMocks();
    }
   
    public void testGetRootModuleContext() {
        assertNull(moduleStateHolder.getRootModule());
    }  
}
TOP

Related Classes of org.impalaframework.spring.module.ProcessTransitionsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.