feat: prepare sellable source delivery edition

This commit is contained in:
liumangmang
2026-04-16 23:28:26 +08:00
parent f606d20000
commit 37dc4d8216
93 changed files with 7649 additions and 3096 deletions
@@ -41,6 +41,7 @@ class SessionTreeLayoutServiceTest {
SessionTreeLayoutDto result = sessionTreeLayoutService.getLayout(1L);
assertTrue(result.getNodes().isEmpty());
assertEquals("manual", result.getSortMode());
}
@Test
@@ -52,6 +53,7 @@ class SessionTreeLayoutServiceTest {
SessionTreeLayoutDto parsed = new SessionTreeLayoutDto(Arrays.asList(
new SessionTreeNodeDto("n1", "folder", "我的连接", null, 0, null, true, 1L, 1L)
));
parsed.setSortMode(null);
when(sessionTreeLayoutRepository.findByUserId(1L)).thenReturn(Optional.of(saved));
when(objectMapper.readValue(saved.getLayoutJson(), SessionTreeLayoutDto.class)).thenReturn(parsed);
@@ -60,12 +62,14 @@ class SessionTreeLayoutServiceTest {
assertEquals(1, result.getNodes().size());
assertEquals("n1", result.getNodes().get(0).getId());
assertEquals("manual", result.getSortMode());
}
@Test
void saveLayoutNormalizesNullNodes() throws Exception {
SessionTreeLayoutDto request = new SessionTreeLayoutDto();
request.setNodes(null);
request.setSortMode("unknown");
when(sessionTreeLayoutRepository.findByUserId(1L)).thenReturn(Optional.empty());
when(objectMapper.writeValueAsString(any(SessionTreeLayoutDto.class))).thenReturn("{\"nodes\":[]}");
@@ -73,6 +77,7 @@ class SessionTreeLayoutServiceTest {
SessionTreeLayoutDto result = sessionTreeLayoutService.saveLayout(1L, request);
assertTrue(result.getNodes().isEmpty());
assertEquals("manual", result.getSortMode());
ArgumentCaptor<SessionTreeLayout> captor = ArgumentCaptor.forClass(SessionTreeLayout.class);
verify(sessionTreeLayoutRepository).save(captor.capture());
assertEquals(1L, captor.getValue().getUserId().longValue());
@@ -87,5 +92,6 @@ class SessionTreeLayoutServiceTest {
SessionTreeLayoutDto result = sessionTreeLayoutService.saveLayout(1L, null);
assertEquals(Collections.emptyList(), result.getNodes());
assertEquals("manual", result.getSortMode());
}
}