/**
*
*/
package org.minnal.instrument;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.activejpa.enhancer.ActiveJpaAgentLoader;
import org.minnal.core.Application;
import org.minnal.core.Container;
import org.minnal.core.config.ApplicationConfiguration;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author ganeshs
*
*/
public class InstrumentationBundleTest {
private Container container;
private InstrumentationBundle bundle;
private Application<ApplicationConfiguration> application;
private MinnalApplicationEnhancer enhancer;
@BeforeMethod
public void setup() {
container = mock(Container.class);
bundle = spy(new InstrumentationBundle());
enhancer = mock(MinnalApplicationEnhancer.class);
application = mock(Application.class);
when(application.getObjectMapper()).thenReturn(mock(ObjectMapper.class));
ApplicationConfiguration configuration = mock(ApplicationConfiguration.class);
when(application.getConfiguration()).thenReturn(configuration);
}
@Test
public void shouldRegisterContainerListenerOnInit() {
ActiveJpaAgentLoader loader = mock(ActiveJpaAgentLoader.class);
doReturn(loader).when(bundle).getActiveJpaAgentLoader();
bundle.init(container, null);
verify(loader).loadAgent();
verify(container).registerListener(bundle);
}
@Test
public void shouldEnhanceApplicationOnMount() {
ApplicationConfiguration configuration = application.getConfiguration();
when(configuration.isInstrumentationEnabled()).thenReturn(true);
doReturn(enhancer).when(bundle).createApplicationEnhancer(application);
bundle.postMount(application);
verify(enhancer).enhance();
}
@Test
public void shouldNotEnhanceApplicationIfInstrumentationIsDisabled() {
doReturn(enhancer).when(bundle).createApplicationEnhancer(application);
bundle.preMount(application);
verify(enhancer, never()).enhance();
}
}