Deliver HgConfigPackages no longer as embedded.

They don't have an own identity in terms of REST and its much simpler
to return a simple list instead of an _embedded list.
Also gets rid of one HgConfigPackageToDtoMapper.
This commit is contained in:
Johannes Schnatterer
2018-08-07 16:47:03 +02:00
parent adde70f090
commit 45822c44cb
12 changed files with 118 additions and 150 deletions

View File

@@ -56,12 +56,12 @@ public class HgConfigPackageResourceTest {
private final URI baseUri = java.net.URI.create("/");
@InjectMocks
private HgConfigPackageToDtoMapperImpl hgConfigPackageToDtoMapper;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private UriInfoStore uriInfoStore;
@InjectMocks
private HgConfigPackagesToDtoMapperImpl mapper;
@Mock
private HgRepositoryHandler repositoryHandler;
@@ -96,11 +96,7 @@ public class HgConfigPackageResourceTest {
String responseString = response.getContentAsString();
ObjectNode responseJson = new ObjectMapper().readValue(responseString, ObjectNode.class);
JsonNode embedded = responseJson.get("_embedded");
assertThat(embedded).isNotNull();
JsonNode packages = embedded.get("packages");
JsonNode packages = responseJson.get("packages");
assertThat(packages).isNotNull();
assertThat(packages).hasSize(2);
@@ -191,9 +187,6 @@ public class HgConfigPackageResourceTest {
}
private void setupResources() {
HgConfigPackageCollectionToDtoMapper mapper =
new HgConfigPackageCollectionToDtoMapper(hgConfigPackageToDtoMapper, uriInfoStore);
HgConfigPackageResource hgConfigPackageResource =
new HgConfigPackageResource(hgPackageReader, advancedHttpClient, repositoryHandler, mapper);

View File

@@ -1,43 +0,0 @@
package sonia.scm.api.v2.resources;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import sonia.scm.installer.HgPackage;
import java.net.URI;
import static org.mockito.Mockito.when;
import static sonia.scm.api.v2.resources.HgConfigTests.assertEqualsPackage;
import static sonia.scm.api.v2.resources.HgConfigTests.createPackage;
@RunWith(MockitoJUnitRunner.class)
public class HgConfigPackageToDtoMapperTest {
private URI baseUri = URI.create("http://example.com/base/");
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private UriInfoStore uriInfoStore;
@InjectMocks
private HgConfigPackageToDtoMapperImpl mapper;
@Before
public void init() {
when(uriInfoStore.get().getBaseUri()).thenReturn(baseUri);
}
@Test
public void shouldMapFields() {
HgPackage hgPackage = createPackage();
HgConfigPackageDto dto = mapper.map(hgPackage);
assertEqualsPackage(dto);
}
}

View File

@@ -9,6 +9,7 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import sonia.scm.installer.HgPackage;
import sonia.scm.installer.HgPackages;
import java.net.URI;
import java.util.Arrays;
@@ -19,12 +20,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
import static sonia.scm.api.v2.resources.HgConfigPackageCollectionToDtoMapper.COLLECTION_NAME;
import static sonia.scm.api.v2.resources.HgConfigTests.assertEqualsPackage;
import static sonia.scm.api.v2.resources.HgConfigTests.createPackage;
@RunWith(MockitoJUnitRunner.class)
public class HgConfigPackageCollectionToDtoMapperTest {
public class HgConfigPackagesToDtoMapperTest {
private URI baseUri = URI.create("http://example.com/base/");
@@ -32,9 +32,7 @@ public class HgConfigPackageCollectionToDtoMapperTest {
private UriInfoStore uriInfoStore;
@InjectMocks
private HgConfigPackageToDtoMapperImpl hgConfigPackageToDtoMapper;
private HgConfigPackageCollectionToDtoMapper mapper;
private HgConfigPackagesToDtoMapperImpl mapper;
private URI expectedBaseUri;
@@ -42,35 +40,29 @@ public class HgConfigPackageCollectionToDtoMapperTest {
public void init() {
when(uriInfoStore.get().getBaseUri()).thenReturn(baseUri);
expectedBaseUri = baseUri.resolve(HgConfigResource.HG_CONFIG_PATH_V2 + "/packages");
mapper = new HgConfigPackageCollectionToDtoMapper(hgConfigPackageToDtoMapper, uriInfoStore);
}
@Test
public void shouldMapFields() {
Collection<HgPackage> hgPackages = createPackages();
HgPackages hgPackages = new HgPackages();
hgPackages.setPackages(createPackages());
HalRepresentation dto = mapper.map(hgPackages);
HgConfigPackagesDto dto = mapper.map(hgPackages);
List<HalRepresentation> itemsBy = dto.getEmbedded().getItemsBy(COLLECTION_NAME);
assertThat(itemsBy).hasSize(2);
assertThat(dto.getPackages()).hasSize(2);
HgConfigPackageDto hgPackageDto1 = assertAndGetAsDto(itemsBy.get(0));
HgConfigPackagesDto.HgConfigPackageDto hgPackageDto1 = dto.getPackages().get(0);
assertEqualsPackage(hgPackageDto1);
HgConfigPackageDto hgPackageDto2 = assertAndGetAsDto(itemsBy.get(1));
assertTrue(hgPackageDto2.getLinks().isEmpty());
HgConfigPackagesDto.HgConfigPackageDto hgPackageDto2 = dto.getPackages().get(1);
// Just verify a random field
assertThat(hgPackageDto2.getId()).isNull();
assertEquals(expectedBaseUri.toString(), dto.getLinks().getLinkBy("self").get().getHref());
}
private HgConfigPackageDto assertAndGetAsDto(HalRepresentation halRepresentation) {
assertThat(halRepresentation).isInstanceOf(HgConfigPackageDto.class);
return (HgConfigPackageDto) halRepresentation;
}
private Collection<HgPackage> createPackages() {
private List<HgPackage> createPackages() {
return Arrays.asList(createPackage(), new HgPackage());
}

View File

@@ -53,7 +53,7 @@ class HgConfigTests {
return hgPackage;
}
static void assertEqualsPackage(HgConfigPackageDto dto) {
static void assertEqualsPackage(HgConfigPackagesDto.HgConfigPackageDto dto) {
assertEquals("arch", dto.getArch());
assertEquals("1", dto.getId());
assertEquals("2", dto.getHgVersion());
@@ -64,8 +64,6 @@ class HgConfigTests {
assertEqualsConfiguration(dto.getHgConfigTemplate());
assertTrue(dto.getHgConfigTemplate().getLinks().isEmpty());
assertTrue(dto.getLinks().isEmpty());
}
}