From 65b59d1aec41f6931f44e9657f6ebc15b255f67c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 20 Aug 2019 13:40:05 +0200 Subject: [PATCH] expose plugin dependencies --- .../java/sonia/scm/api/v2/resources/PluginDto.java | 3 +++ .../sonia/scm/api/v2/resources/PluginDtoMapper.java | 1 + .../scm/api/v2/resources/PluginDtoMapperTest.java | 12 ++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java index b096266537..07ccb3203e 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java @@ -6,6 +6,8 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.Set; + @Getter @Setter @NoArgsConstructor @@ -18,6 +20,7 @@ public class PluginDto extends HalRepresentation { private String author; private String category; private String avatarUrl; + private Set dependencies; public PluginDto(Links links) { add(links); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java index bef5a9b496..193aa3af26 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java @@ -22,6 +22,7 @@ public abstract class PluginDtoMapper { public PluginDto map(Plugin plugin) { PluginDto dto = createDto(plugin); + dto.setDependencies(plugin.getDescriptor().getDependencies()); map(plugin.getDescriptor().getInformation(), dto); if (dto.getCategory() == null) { dto.setCategory("Miscellaneous"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java index df3b8e101b..3eaeb7a2cc 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java @@ -1,6 +1,6 @@ package sonia.scm.api.v2.resources; -import org.junit.jupiter.api.BeforeEach; +import com.google.common.collect.ImmutableSet; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -14,7 +14,6 @@ import sonia.scm.plugin.PluginState; import java.net.URI; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.in; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -89,6 +88,15 @@ class PluginDtoMapperTest { assertThat(dto.getCategory()).isEqualTo("Miscellaneous"); } + @Test + void shouldAppendDependencies() { + Plugin plugin = createPlugin(PluginState.AVAILABLE); + when(plugin.getDescriptor().getDependencies()).thenReturn(ImmutableSet.of("one", "two")); + + PluginDto dto = mapper.map(plugin); + assertThat(dto.getDependencies()).containsOnly("one", "two"); + } + private Plugin createPlugin(PluginState state) { return createPlugin(createPluginInformation(), state); }