thymeleaf dashboard

This commit is contained in:
danielbroll
2022-05-01 14:08:05 +02:00
committed by Carsten Otto
parent 8574e9d54b
commit 647de17c17
53 changed files with 2024 additions and 1 deletions

View File

@@ -0,0 +1,38 @@
package de.cotto.lndmanagej.ui;
import de.cotto.lndmanagej.controller.ChannelIdConverter;
import de.cotto.lndmanagej.ui.controller.ChanDetailsController;
import de.cotto.lndmanagej.ui.page.PageService;
import de.cotto.lndmanagej.ui.page.channel.ChannelDetailsPage;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static de.cotto.lndmanagej.ui.model.ChanDetailsDtoFixture.CHAN_DETAILS_DTO;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(controllers = ChanDetailsController.class)
class ChanDetailsControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private PageService pageService;
@SuppressWarnings("unused")
@MockBean
private ChannelIdConverter channelIdConverter;
@Test
void testNodeDetailsPage() throws Exception {
given(this.pageService.channelDetails(any())).willReturn(new ChannelDetailsPage(CHAN_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/channel/783231610496155649"))
.andExpect(status().isOk());
}
}

View File

@@ -0,0 +1,50 @@
package de.cotto.lndmanagej.ui;
import de.cotto.lndmanagej.controller.ChannelIdConverter;
import de.cotto.lndmanagej.ui.dto.StatusModel;
import de.cotto.lndmanagej.ui.model.OpenChannelDtoFixture;
import de.cotto.lndmanagej.ui.controller.DashboardController;
import de.cotto.lndmanagej.ui.dto.NodeDto;
import de.cotto.lndmanagej.ui.dto.OpenChannelDto;
import de.cotto.lndmanagej.ui.page.general.DashboardPage;
import de.cotto.lndmanagej.ui.page.PageService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import java.util.List;
import static de.cotto.lndmanagej.controller.dto.NodesAndChannelsWithWarningsDto.NONE;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(controllers = DashboardController.class)
class DashboardControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private PageService pageService;
@SuppressWarnings("unused")
@MockBean
private ChannelIdConverter channelIdConverter;
@Test
void testEmptyDashboard() throws Exception {
given(this.pageService.dashboard()).willReturn(new DashboardPage(List.of(), List.of(), new StatusModel(true, 1, NONE)));
mockMvc.perform(MockMvcRequestBuilders.get("/")).andExpect(status().isOk());
}
@Test
void testDashboard() throws Exception {
OpenChannelDto channel = OpenChannelDtoFixture.OPEN_CHANNEL_DTO;
NodeDto node = new NodeDto(channel.remotePubkey().toString(), channel.remoteAlias(), true);
given(this.pageService.dashboard()).willReturn(new DashboardPage(List.of(channel), List.of(node), new StatusModel(true, 1, NONE)));
mockMvc.perform(MockMvcRequestBuilders.get("/")).andExpect(status().isOk());
}
}

View File

@@ -0,0 +1,38 @@
package de.cotto.lndmanagej.ui;
import de.cotto.lndmanagej.controller.ChannelIdConverter;
import de.cotto.lndmanagej.ui.controller.NodeDetailsController;
import de.cotto.lndmanagej.ui.page.PageService;
import de.cotto.lndmanagej.ui.page.node.NodeDetailsPage;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static de.cotto.lndmanagej.ui.model.NodeDetailsDtoFixture.NODE_DETAILS_DTO;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(controllers = NodeDetailsController.class)
class NodeDetailsControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private PageService pageService;
@SuppressWarnings("unused")
@MockBean
private ChannelIdConverter channelIdConverter;
@Test
void testNodeDetailsPage() throws Exception {
given(this.pageService.nodeDetails(any())).willReturn(new NodeDetailsPage(NODE_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/node/027abc123abc123abc123abc123123abc123abc123abc123abc123abc123abc121"))
.andExpect(status().isOk());
}
}

View File

@@ -0,0 +1,106 @@
package de.cotto.lndmanagej.ui;
import de.cotto.lndmanagej.controller.ChannelIdConverter;
import de.cotto.lndmanagej.ui.model.NodeDtoFixture;
import de.cotto.lndmanagej.ui.model.OpenChannelDtoFixture;
import de.cotto.lndmanagej.ui.controller.SearchController;
import de.cotto.lndmanagej.ui.page.PageService;
import de.cotto.lndmanagej.ui.page.channel.ChannelDetailsPage;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import java.util.List;
import static de.cotto.lndmanagej.ui.model.ChanDetailsDtoFixture.CHAN_DETAILS_DTO;
import static de.cotto.lndmanagej.ui.model.NodeDetailsDtoFixture.NODE_DETAILS_DTO;
import static de.cotto.lndmanagej.ui.model.OpenChannelDtoFixture.OPEN_CHANNEL_DTO;
import static de.cotto.lndmanagej.ui.model.OpenChannelDtoFixture.WOS;
import static org.hamcrest.Matchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@WebMvcTest(controllers = SearchController.class)
class SearchControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private UiDataService dataService;
@MockBean
private PageService pageService;
@SuppressWarnings("unused")
@MockBean
private ChannelIdConverter channelIdConverter;
@Test
void search_noOpenChannels_errorPage() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of());
given(this.pageService.error(any())).willReturn(new ErrorPage("myErrorMessage"));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=783231610496155649"))
.andExpect(status().isOk())
.andExpect(model().attribute("error", "myErrorMessage"))
.andExpect(view().name("error"));
}
@Test
void searchForChannelId_viaShortChannelId_found() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of(OpenChannelDtoFixture.createFrom(CHAN_DETAILS_DTO)));
given(this.pageService.channelDetails(any())).willReturn(new ChannelDetailsPage(CHAN_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=783231610496155649") )
.andExpect(status().isOk())
.andExpect(model().attribute("id", is(CHAN_DETAILS_DTO.channelId())))
.andExpect(view().name("channel-details"));
}
@Test
void searchForChannelId_viaCompactChannelId_found() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of(OpenChannelDtoFixture.createFrom(CHAN_DETAILS_DTO)));
given(this.pageService.channelDetails(any())).willReturn(new ChannelDetailsPage(CHAN_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=712345x123x1") )
.andExpect(status().isOk())
.andExpect(model().attribute("id", is(CHAN_DETAILS_DTO.channelId())))
.andExpect(view().name("channel-details"));
}
@Test
void searchForPubkey_found() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of(OPEN_CHANNEL_DTO));
given(this.pageService.nodeDetails(any())).willReturn(new NodeDetailsPage(NODE_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=027abc123abc123abc123abc123123abc123abc123abc123abc123abc123abc121"))
.andExpect(status().isOk())
.andExpect(model().attribute("pubkey", is(OPEN_CHANNEL_DTO.remotePubkey())))
.andExpect(view().name("node-details"));
}
@Test
void searchForAlias_found() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of(OPEN_CHANNEL_DTO));
given(this.pageService.nodeDetails(any())).willReturn(new NodeDetailsPage(NODE_DETAILS_DTO));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=albert"))
.andExpect(status().isOk())
.andExpect(model().attribute("pubkey", is(OPEN_CHANNEL_DTO.remotePubkey())))
.andExpect(view().name("node-details"));
}
@Test
void searchForAlias_TwoNodesFound() throws Exception {
given(this.dataService.getOpenChannels()).willReturn(List.of(OPEN_CHANNEL_DTO, WOS)); //ALbert, wALletofsatotoshi
given(this.pageService.nodes(any())).willReturn(new NodesPage(List.of(NodeDtoFixture.createFrom(OPEN_CHANNEL_DTO), NodeDtoFixture.createFrom(WOS))));
mockMvc.perform(MockMvcRequestBuilders.get("/search?q=al"))
.andExpect(status().isOk())
.andExpect(model().attributeExists("nodes"))
.andExpect(view().name("nodes"));
}
}