diff --git a/web/src/integrationTest/java/de/cotto/lndmanagej/ui/DashboardControllerIT.java b/web/src/integrationTest/java/de/cotto/lndmanagej/ui/DashboardControllerIT.java index 2bfd0f16..0965ad92 100644 --- a/web/src/integrationTest/java/de/cotto/lndmanagej/ui/DashboardControllerIT.java +++ b/web/src/integrationTest/java/de/cotto/lndmanagej/ui/DashboardControllerIT.java @@ -46,7 +46,7 @@ class DashboardControllerIT { void dashboard() throws Exception { OpenChannelDto channel = OPEN_CHANNEL_DTO; NodeDto node = new NodeDto(channel.remotePubkey().toString(), channel.remoteAlias(), true); - when(this.pageService.dashboard()).thenReturn( + when(pageService.dashboard()).thenReturn( new DashboardPage(List.of(channel), List.of(node), new StatusModel(true, 1, NONE)) ); mockMvc.perform(get("/")).andExpect(status().isOk()); diff --git a/web/src/test/java/de/cotto/lndmanagej/ui/page/PageServiceTest.java b/web/src/test/java/de/cotto/lndmanagej/ui/page/PageServiceTest.java new file mode 100644 index 00000000..eac35081 --- /dev/null +++ b/web/src/test/java/de/cotto/lndmanagej/ui/page/PageServiceTest.java @@ -0,0 +1,107 @@ +package de.cotto.lndmanagej.ui.page; + +import de.cotto.lndmanagej.controller.NotFoundException; +import de.cotto.lndmanagej.controller.dto.NodesAndChannelsWithWarningsDto; +import de.cotto.lndmanagej.ui.UiDataService; +import de.cotto.lndmanagej.ui.dto.ChannelDetailsDto; +import de.cotto.lndmanagej.ui.dto.NodeDto; +import de.cotto.lndmanagej.ui.dto.OpenChannelDto; +import de.cotto.lndmanagej.ui.dto.StatusModel; +import de.cotto.lndmanagej.ui.page.channel.ChannelDetailsPage; +import de.cotto.lndmanagej.ui.page.channel.ChannelsPage; +import de.cotto.lndmanagej.ui.page.general.DashboardPage; +import de.cotto.lndmanagej.ui.page.general.ErrorPage; +import de.cotto.lndmanagej.ui.page.node.NodeDetailsPage; +import de.cotto.lndmanagej.ui.page.node.NodesPage; +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.List; + +import static de.cotto.lndmanagej.controller.dto.ChannelDetailsDtoFixture.CHANNEL_DETAILS_DTO; +import static de.cotto.lndmanagej.controller.dto.NodeDetailsDtoFixture.NODE_DETAILS_DTO; +import static de.cotto.lndmanagej.controller.dto.OpenChannelDtoFixture.OPEN_CHANNEL_DTO; +import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID; +import static de.cotto.lndmanagej.model.NodeFixtures.NODE; +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) +class PageServiceTest { + @InjectMocks + private PageService pageService; + + @Mock + private UiDataService dataService; + + @Test + void dashboard() { + List channels = List.of(OPEN_CHANNEL_DTO); + List nodes = List.of(new NodeDto(PUBKEY.toString(), NODE.alias(), true)); + StatusModel statusModel = new StatusModel(true, 123, new NodesAndChannelsWithWarningsDto(List.of(), List.of())); + when(dataService.getOpenChannels()).thenReturn(channels); + when(dataService.createNodeList()).thenReturn(nodes); + when(dataService.getStatus()).thenReturn(statusModel); + + assertThat(pageService.dashboard()).usingRecursiveComparison().isEqualTo( + new DashboardPage(channels, nodes, statusModel) + ); + } + + @Test + void channels() { + when(dataService.getOpenChannels()).thenReturn(List.of(OPEN_CHANNEL_DTO)); + assertThat(pageService.channels()).usingRecursiveComparison().isEqualTo( + new ChannelsPage(List.of(OPEN_CHANNEL_DTO)) + ); + } + + @Test + void channelDetails() throws NotFoundException { + ChannelDetailsDto details = CHANNEL_DETAILS_DTO; + when(dataService.getChannelDetails(CHANNEL_ID)).thenReturn(details); + + assertThat(pageService.channelDetails(CHANNEL_ID)).usingRecursiveComparison().isEqualTo( + new ChannelDetailsPage(details) + ); + } + + @Test + void nodes() { + NodeDto nodeDto = new NodeDto(PUBKEY.toString(), NODE.alias(), true); + when(dataService.createNodeList()).thenReturn(List.of(nodeDto)); + + assertThat(pageService.nodes()).usingRecursiveComparison().isEqualTo( + new NodesPage(List.of(nodeDto)) + ); + } + + @Test + void nodes_for_channels() { + NodeDto nodeDto = new NodeDto(PUBKEY.toString(), NODE.alias(), true); + List channels = List.of(OPEN_CHANNEL_DTO); + when(dataService.createNodeList(channels)).thenReturn(List.of(nodeDto)); + + assertThat(pageService.nodes(channels)).usingRecursiveComparison().isEqualTo( + new NodesPage(List.of(nodeDto)) + ); + } + + @Test + void nodeDetails() { + when(dataService.getNodeDetails(PUBKEY)).thenReturn(NODE_DETAILS_DTO); + assertThat(pageService.nodeDetails(PUBKEY)).usingRecursiveComparison().isEqualTo( + new NodeDetailsPage(NODE_DETAILS_DTO) + ); + } + + @Test + void error() { + String errorMessage = "foo"; + assertThat(pageService.error(errorMessage)).usingRecursiveComparison().isEqualTo(new ErrorPage(errorMessage)); + } +} diff --git a/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/NodeDetailsDtoFixture.java b/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/NodeDetailsDtoFixture.java index a3eab568..1f91f9aa 100644 --- a/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/NodeDetailsDtoFixture.java +++ b/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/NodeDetailsDtoFixture.java @@ -1,21 +1,6 @@ package de.cotto.lndmanagej.controller.dto; -import de.cotto.lndmanagej.controller.dto.BalanceInformationDto; -import de.cotto.lndmanagej.controller.dto.FeeReportDto; -import de.cotto.lndmanagej.controller.dto.FlowReportDto; -import de.cotto.lndmanagej.controller.dto.NodeDetailsDto; -import de.cotto.lndmanagej.controller.dto.OnChainCostsDto; -import de.cotto.lndmanagej.controller.dto.OnlineReportDto; -import de.cotto.lndmanagej.controller.dto.RebalanceReportDto; -import de.cotto.lndmanagej.model.BalanceInformationFixtures; -import de.cotto.lndmanagej.model.ChannelIdFixtures; -import de.cotto.lndmanagej.model.FeeReportFixtures; -import de.cotto.lndmanagej.model.FlowReportFixtures; -import de.cotto.lndmanagej.model.OnChainCostsFixtures; -import de.cotto.lndmanagej.model.OnlineReportFixtures; import de.cotto.lndmanagej.model.PubkeyFixtures; -import de.cotto.lndmanagej.model.RebalanceReportFixtures; -import de.cotto.lndmanagej.model.warnings.ChannelWarningsFixtures; import java.util.List; @@ -25,7 +10,6 @@ import static de.cotto.lndmanagej.model.FeeReportFixtures.FEE_REPORT; import static de.cotto.lndmanagej.model.FlowReportFixtures.FLOW_REPORT; import static de.cotto.lndmanagej.model.OnChainCostsFixtures.ON_CHAIN_COSTS; import static de.cotto.lndmanagej.model.OnlineReportFixtures.ONLINE_REPORT; -import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY; import static de.cotto.lndmanagej.model.RebalanceReportFixtures.REBALANCE_REPORT; import static de.cotto.lndmanagej.model.warnings.ChannelWarningsFixtures.CHANNEL_WARNINGS; diff --git a/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/OpenChannelDtoFixture.java b/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/OpenChannelDtoFixture.java index 5a667792..ae6fccfb 100644 --- a/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/OpenChannelDtoFixture.java +++ b/web/src/testFixtures/java/de/cotto/lndmanagej/controller/dto/OpenChannelDtoFixture.java @@ -1,7 +1,5 @@ package de.cotto.lndmanagej.controller.dto; -import de.cotto.lndmanagej.controller.dto.BalanceInformationDto; -import de.cotto.lndmanagej.controller.dto.PoliciesDto; import de.cotto.lndmanagej.model.BalanceInformation; import de.cotto.lndmanagej.model.ChannelId; import de.cotto.lndmanagej.model.Coins;