From 70e7683fcb245642e55d6f47adc28f6e3825ac05 Mon Sep 17 00:00:00 2001 From: Carsten Otto Date: Fri, 12 Nov 2021 09:22:20 +0100 Subject: [PATCH] add ChannelService --- .../lndmanagej/service/ChannelService.java | 24 +++++++++++ .../cotto/lndmanagej/service/NodeService.java | 10 ++--- .../controller/LegacyControllerTest.java | 2 +- .../service/ChannelServiceTest.java | 43 +++++++++++++++++++ .../lndmanagej/service/NodeServiceTest.java | 23 +++------- 5 files changed, 77 insertions(+), 25 deletions(-) create mode 100644 application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java create mode 100644 application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java diff --git a/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java b/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java new file mode 100644 index 00000000..45774d5b --- /dev/null +++ b/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java @@ -0,0 +1,24 @@ +package de.cotto.lndmanagej.service; + +import de.cotto.lndmanagej.grpc.GrpcChannels; +import de.cotto.lndmanagej.model.Channel; +import de.cotto.lndmanagej.model.Node; +import org.springframework.stereotype.Component; + +import java.util.Set; +import java.util.stream.Collectors; + +@Component +public class ChannelService { + private final GrpcChannels grpcChannels; + + public ChannelService(GrpcChannels grpcChannels) { + this.grpcChannels = grpcChannels; + } + + public Set getOpenChannelsWith(Node node) { + return grpcChannels.getChannels().stream() + .filter(c -> c.getNodes().contains(node)) + .collect(Collectors.toSet()); + } +} diff --git a/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java b/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java index b65690b6..4a7c5eef 100644 --- a/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java +++ b/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java @@ -1,6 +1,5 @@ package de.cotto.lndmanagej.service; -import de.cotto.lndmanagej.grpc.GrpcChannels; import de.cotto.lndmanagej.grpc.GrpcNodeInfo; import de.cotto.lndmanagej.model.Channel; import de.cotto.lndmanagej.model.ChannelId; @@ -14,17 +13,16 @@ import java.util.stream.Collectors; @Component public class NodeService { private final GrpcNodeInfo grpcNodeInfo; - private final GrpcChannels grpcChannels; + private final ChannelService channelService; - public NodeService(GrpcNodeInfo grpcNodeInfo, GrpcChannels grpcChannels) { + public NodeService(GrpcNodeInfo grpcNodeInfo, ChannelService channelService) { this.grpcNodeInfo = grpcNodeInfo; - this.grpcChannels = grpcChannels; + this.channelService = channelService; } public List getOpenChannelIds(Pubkey pubkey) { Node node = getNode(pubkey); - return grpcChannels.getChannels().stream() - .filter(c -> c.getNodes().contains(node)) + return channelService.getOpenChannelsWith(node).stream() .map(Channel::getId) .sorted() .collect(Collectors.toList()); diff --git a/application/src/test/java/de/cotto/lndmanagej/controller/LegacyControllerTest.java b/application/src/test/java/de/cotto/lndmanagej/controller/LegacyControllerTest.java index 324867dd..85865e46 100644 --- a/application/src/test/java/de/cotto/lndmanagej/controller/LegacyControllerTest.java +++ b/application/src/test/java/de/cotto/lndmanagej/controller/LegacyControllerTest.java @@ -16,7 +16,7 @@ import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; -@ExtendWith({MockitoExtension.class}) +@ExtendWith(MockitoExtension.class) class LegacyControllerTest { @InjectMocks private LegacyController legacyController; diff --git a/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java b/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java new file mode 100644 index 00000000..e612ebf1 --- /dev/null +++ b/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java @@ -0,0 +1,43 @@ +package de.cotto.lndmanagej.service; + +import de.cotto.lndmanagej.grpc.GrpcChannels; +import de.cotto.lndmanagej.model.Channel; +import de.cotto.lndmanagej.model.ChannelFixtures; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Set; + +import static de.cotto.lndmanagej.model.ChannelFixtures.CHANNEL; +import static de.cotto.lndmanagej.model.ChannelFixtures.CHANNEL_3; +import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_2; +import static de.cotto.lndmanagej.model.NodeFixtures.NODE; +import static de.cotto.lndmanagej.model.NodeFixtures.NODE_2; +import static de.cotto.lndmanagej.model.NodeFixtures.NODE_3; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class ChannelServiceTest { + @InjectMocks + private ChannelService channelService; + + @Mock + private GrpcChannels grpcChannels; + + @Test + void getOpenChannelsWith() { + when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, CHANNEL_3)); + assertThat(channelService.getOpenChannelsWith(NODE_2)).containsExactlyInAnyOrder(CHANNEL, CHANNEL_3); + } + + @Test + void getOpenChannelsWith_ignores_channel_to_other_node() { + Channel channel2 = ChannelFixtures.create(NODE, NODE_3, CHANNEL_ID_2); + when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, channel2, CHANNEL_3)); + assertThat(channelService.getOpenChannelsWith(NODE_2)).containsExactlyInAnyOrder(CHANNEL, CHANNEL_3); + } +} \ No newline at end of file diff --git a/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java b/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java index 5192b8ba..76a83fd8 100644 --- a/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java +++ b/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java @@ -1,9 +1,6 @@ package de.cotto.lndmanagej.service; -import de.cotto.lndmanagej.grpc.GrpcChannels; import de.cotto.lndmanagej.grpc.GrpcNodeInfo; -import de.cotto.lndmanagej.model.Channel; -import de.cotto.lndmanagej.model.ChannelFixtures; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -15,26 +12,24 @@ import java.util.Set; import static de.cotto.lndmanagej.model.ChannelFixtures.CHANNEL; import static de.cotto.lndmanagej.model.ChannelFixtures.CHANNEL_3; import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID; -import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_2; import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_3; import static de.cotto.lndmanagej.model.NodeFixtures.ALIAS; import static de.cotto.lndmanagej.model.NodeFixtures.NODE; import static de.cotto.lndmanagej.model.NodeFixtures.NODE_2; -import static de.cotto.lndmanagej.model.NodeFixtures.NODE_3; import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; -@ExtendWith({MockitoExtension.class}) +@ExtendWith(MockitoExtension.class) class NodeServiceTest { @InjectMocks private NodeService nodeService; @Mock - private GrpcNodeInfo grpcNodeInfo; + private ChannelService channelService; @Mock - private GrpcChannels grpcChannels; + private GrpcNodeInfo grpcNodeInfo; @Test void getAlias() { @@ -45,22 +40,14 @@ class NodeServiceTest { @Test void getOpenChannelIds() { when(grpcNodeInfo.getNode(PUBKEY)).thenReturn(NODE_2); - when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, CHANNEL_3)); + when(channelService.getOpenChannelsWith(NODE_2)).thenReturn(Set.of(CHANNEL, CHANNEL_3)); assertThat(nodeService.getOpenChannelIds(PUBKEY)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); } @Test void getOpenChannelIds_ordered() { when(grpcNodeInfo.getNode(PUBKEY)).thenReturn(NODE_2); - when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL_3, CHANNEL)); - assertThat(nodeService.getOpenChannelIds(PUBKEY)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); - } - - @Test - void getOpenChannelIds_ignores_channel_to_other_node() { - when(grpcNodeInfo.getNode(PUBKEY)).thenReturn(NODE_2); - Channel channel2 = ChannelFixtures.create(NODE, NODE_3, CHANNEL_ID_2); - when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, channel2, CHANNEL_3)); + when(channelService.getOpenChannelsWith(NODE_2)).thenReturn(Set.of(CHANNEL_3, CHANNEL)); assertThat(nodeService.getOpenChannelIds(PUBKEY)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); } } \ No newline at end of file