/*
* Copyright 2015-2017 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.junit.jupiter.engine.execution;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.mockito.Mockito.mock;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.engine.descriptor.ClassBasedContainerExtensionContext;
import org.junit.jupiter.engine.extension.ExtensionRegistry;
import org.junit.platform.engine.ConfigurationParameters;
import org.junit.platform.engine.EngineExecutionListener;
/**
* Microtests for {@link JupiterEngineExecutionContext}.
*
* @since 5.0
*/
class JupiterEngineExecutionContextTests {
private final ConfigurationParameters configParams = mock(ConfigurationParameters.class);
private JupiterEngineExecutionContext originalContext;
private EngineExecutionListener engineExecutionListener;
@BeforeEach
void initOriginalContext() {
engineExecutionListener = mock(EngineExecutionListener.class);
originalContext = new JupiterEngineExecutionContext(engineExecutionListener, configParams);
}
@Test
void executionListenerIsHandedOnWhenContextIsExtended() {
assertSame(engineExecutionListener, originalContext.getExecutionListener());
JupiterEngineExecutionContext newContext = originalContext.extend().build();
assertSame(engineExecutionListener, newContext.getExecutionListener());
}
@Test
void extendWithAllAttributes() {
ClassBasedContainerExtensionContext extensionContext = new ClassBasedContainerExtensionContext(null, null,
null);
ExtensionRegistry extensionRegistry = ExtensionRegistry.createRegistryWithDefaultExtensions(configParams);
TestInstanceProvider testInstanceProvider = mock(TestInstanceProvider.class);
JupiterEngineExecutionContext newContext = originalContext.extend() //
.withExtensionContext(extensionContext) //
.withExtensionRegistry(extensionRegistry) //
.withTestInstanceProvider(testInstanceProvider) //
.build();
assertSame(extensionContext, newContext.getExtensionContext());
assertSame(extensionRegistry, newContext.getExtensionRegistry());
assertSame(testInstanceProvider, newContext.getTestInstanceProvider());
}
@Test
void canOverrideAttributeWhenContextIsExtended() {
ClassBasedContainerExtensionContext extensionContext = new ClassBasedContainerExtensionContext(null, null,
null);
ExtensionRegistry extensionRegistry = ExtensionRegistry.createRegistryWithDefaultExtensions(configParams);
TestInstanceProvider testInstanceProvider = mock(TestInstanceProvider.class);
ClassBasedContainerExtensionContext newExtensionContext = new ClassBasedContainerExtensionContext(
extensionContext, null, null);
JupiterEngineExecutionContext newContext = originalContext.extend() //
.withExtensionContext(extensionContext) //
.withExtensionRegistry(extensionRegistry) //
.withTestInstanceProvider(testInstanceProvider) //
.build() //
.extend() //
.withExtensionContext(newExtensionContext) //
.build();
assertSame(newExtensionContext, newContext.getExtensionContext());
assertSame(extensionRegistry, newContext.getExtensionRegistry());
assertSame(testInstanceProvider, newContext.getTestInstanceProvider());
}
}