Skip to content

Commit

Permalink
KoraJUnit5Extension exclude mocked component dependency (#210)
Browse files Browse the repository at this point in the history
  • Loading branch information
GoodforGod authored Jul 24, 2023
1 parent 4bd94c9 commit 5102492
Show file tree
Hide file tree
Showing 17 changed files with 253 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.Collections;
import java.util.List;
import java.util.TreeMap;
import java.util.stream.Collectors;

public class ApplicationGraphDraw {

Expand Down Expand Up @@ -101,16 +102,20 @@ static <T> void addNode(ApplicationGraphDraw draw, Node<T> node) {
return draw;
}

public ApplicationGraphDraw subgraph(Node<?>... rootNodes) {
public ApplicationGraphDraw subgraph(List<Node<?>> excludeTransitive, Iterable<Node<?>> rootNodes) {
var seen = new TreeMap<Integer, Integer>();
var excludeTransitiveSet = excludeTransitive.stream().map(n -> n.index).collect(Collectors.toSet());

var subgraph = new ApplicationGraphDraw(this.root);
var visitor = new Object() {
public <T> Node<T> accept(Node<T> node) {
if (!seen.containsKey(node.index)) {
var dependencies = new ArrayList<Node<?>>();
var interceptors = new ArrayList<Node<? extends GraphInterceptor<T>>>();
for (var dependencyNode : node.getDependencyNodes()) {
dependencies.add(this.accept(dependencyNode));
if (!excludeTransitiveSet.contains(node.index)) {
for (var dependencyNode : node.getDependencyNodes()) {
dependencies.add(this.accept(dependencyNode));
}
}
for (var interceptor : node.getInterceptors()) {
interceptors.add(this.accept(interceptor));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ void graphRefreshCallsRefreshListeners() {
@Test
void subgraphTest() {
var graph = ReferenceGraph.graph();
var subgraphDraw = graph.draw.subgraph(graph.object4Node);
var subgraphDraw = graph.draw.subgraph(List.of(), List.of(graph.object4Node));
assertThat(subgraphDraw.getNodes()).hasSize(5);
var subgraph = subgraphDraw.init().block();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ static Set<Node<?>> findNodeByTypeOrAssignable(ApplicationGraphDraw graph, Graph
return findNodeByTypeOrAssignable(graph, candidate.type(), candidate.tagsAsArray());
}

@SuppressWarnings("unchecked")
static Set<Node<?>> findNodeByTypeOrAssignable(ApplicationGraphDraw graph, Type type, Class<?>[] tags) {
if (tags == null || tags.length == 0) {
final Set<Node<?>> nodes = new HashSet<>();
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
@KoraAppTest(TestApplication.class)
public class AddComponentWithGraphTests implements KoraAppTestGraphModifier {

@Tag(LifecycleComponent.class)
@TestComponent
private TestComponent2 component2;

@Override
public @NotNull KoraGraphModification graph() {
return KoraGraphModification.create()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@
import ru.tinkoff.kora.test.extension.junit5.KoraAppGraph;
import ru.tinkoff.kora.test.extension.junit5.KoraAppTest;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestApplication;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestComponent12;

import static org.junit.jupiter.api.Assertions.*;

@KoraAppTest(value = TestApplication.class, initializeMode = KoraAppTest.InitializeMode.PER_CLASS)
@KoraAppTest(value = TestApplication.class,
initializeMode = KoraAppTest.InitializeMode.PER_CLASS,
components = TestComponent12.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class PerClassTests {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import ru.tinkoff.kora.test.extension.junit5.KoraAppGraph;
import ru.tinkoff.kora.test.extension.junit5.KoraAppTest;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestApplication;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestComponent12;

import static org.junit.jupiter.api.Assertions.*;

// Per Method by Default
@KoraAppTest(TestApplication.class)
@KoraAppTest(value = TestApplication.class, components = TestComponent12.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class PerMethodTests {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ void afterEach(@TestComponent TestComponent1 component1) {
assertEquals("1", component1.get());
}

@Test
void empty() {
// do nothing
}

@Test
void injectOne(@TestComponent TestComponent1 component1) {
assertEquals("1", component1.get());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
import ru.tinkoff.kora.test.extension.junit5.KoraAppGraph;
import ru.tinkoff.kora.test.extension.junit5.KoraAppTest;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestApplication;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestComponent2;

import static org.junit.jupiter.api.Assertions.assertNotNull;

@KoraAppTest(TestApplication.class)
@KoraAppTest(value = TestApplication.class, components = TestComponent2.class)
public class InjectParameterGraphTests {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

@KoraAppTest(TestApplication.class)
@KoraAppTest(value = TestApplication.class, components = {TestComponent12.class, TestComponent23.class})
public class MockGraphAddedTests {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

@KoraAppTest(TestApplication.class)
@KoraAppTest(value = TestApplication.class, components = {TestComponent12.class, TestComponent23.class})
public class MockGraphReplacedTests {

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ru.tinkoff.kora.test.extension.junit5.mock;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import ru.tinkoff.kora.application.graph.Graph;
import ru.tinkoff.kora.test.extension.junit5.KoraAppTest;
import ru.tinkoff.kora.test.extension.junit5.MockComponent;
import ru.tinkoff.kora.test.extension.junit5.TestComponent;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestApplication;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestComponent333;
import ru.tinkoff.kora.test.extension.junit5.testdata.TestComponent3333;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

@KoraAppTest(TestApplication.class)
public class MockNodeWithSubnodesTests {

@MockComponent
private TestComponent333 mock;
@TestComponent
private TestComponent3333 bean;

@BeforeEach
void setupMocks() {
assertNull(mock.get());
Mockito.when(mock.get()).thenReturn("??");
}

@Test
void fieldMocked(Graph graph) {
assertEquals("??", mock.get());
assertEquals(2, graph.draw().size());
}

@Test
void fieldMockedAndInBeanDependency(Graph graph) {
assertEquals("??", mock.get());
assertEquals("??3", bean.get());
assertEquals(2, graph.draw().size());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;

@KoraAppTest(TestApplication.class)
@KoraAppTest(value = TestApplication.class, components = TestComponent12.class)
public class MockParametersTests {

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.tinkoff.kora.test.extension.junit5.testdata;

import reactor.core.publisher.Mono;
import ru.tinkoff.kora.common.Component;
import ru.tinkoff.kora.common.annotation.Root;

@Root
@Component
public class TestComponent3 implements LifecycleComponent {

public String get() {
return "3";
}

@Override
public Mono<?> init() {
return Mono.error(() -> new IllegalStateException("OPS"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.tinkoff.kora.test.extension.junit5.testdata;

import ru.tinkoff.kora.common.Component;
import ru.tinkoff.kora.common.annotation.Root;

@Root
@Component
public class TestComponent33 implements LifecycleComponent {

private final TestComponent3 component3;

public TestComponent33(TestComponent3 component3) {
this.component3 = component3;
}

public String get() {
return component3.get() + "3";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.tinkoff.kora.test.extension.junit5.testdata;

import ru.tinkoff.kora.common.Component;
import ru.tinkoff.kora.common.annotation.Root;

@Root
@Component
public class TestComponent333 implements LifecycleComponent {

private final TestComponent33 component33;

public TestComponent333(TestComponent33 component33) {
this.component33 = component33;
}

public String get() {
return component33.get() + "3";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.tinkoff.kora.test.extension.junit5.testdata;

import ru.tinkoff.kora.common.Component;
import ru.tinkoff.kora.common.annotation.Root;

@Root
@Component
public class TestComponent3333 implements LifecycleComponent {

private final TestComponent333 component333;

public TestComponent3333(TestComponent333 component333) {
this.component333 = component333;
}

public String get() {
return component333.get() + "3";
}
}

0 comments on commit 5102492

Please sign in to comment.