KON-7 KON-347 Pflege AdressTypen
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java b/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
index ef8cfd9..e16cc50 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/constants/Constants.java
@@ -16,6 +16,7 @@
public final class Constants {
public static final String PERSON_TYPE_UUID_NOT_EXISTING = "personType.uuid.not.existing";
+ public static final String ADDRESS_TYPE_UUID_NOT_EXISTING = "addressType.uuid.not.existing";
private Constants() {
// empty Constructor for the sake of SONAR
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressTypeController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressTypeController.java
new file mode 100644
index 0000000..8d68b41
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressTypeController.java
@@ -0,0 +1,115 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.controller;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
+import org.eclipse.openk.contactbasedata.service.AddressTypeService;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressTypeDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.annotation.Secured;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
+
+import java.net.URI;
+import java.util.List;
+import java.util.UUID;
+
+@Log4j2
+@RestController
+@RequestMapping("/addressTypes")
+public class AddressTypeController {
+ @Autowired
+ private AddressTypeService addressTypeService;
+
+ @ApiOperation(value = "Anzeigen aller Adresstypen")
+ @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
+ @ResponseStatus(HttpStatus.OK)
+ @GetMapping
+ public List<AddressTypeDto> getAddressType() {
+ return addressTypeService.findAllAddressTypes();
+ }
+
+
+
+ @GetMapping("/{addressTypeUuid}")
+ @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+ @ApiOperation(value = "Suchen eines Adresstyps per UUID")
+ @ResponseStatus(HttpStatus.OK)
+ @ApiResponses(value = {
+ @ApiResponse(code = 400, message = "Ungültige Anfrage."),
+ @ApiResponse(code = 200, message = "Adresstyp gefunden")})
+ public AddressTypeDto getAddressType(@PathVariable UUID addressTypeUuid) {
+
+ return addressTypeService.getAddressTypeByUuid(addressTypeUuid);
+ }
+
+
+ @PostMapping
+ @Secured("ROLE_KON-ADMIN")
+ @ApiOperation(value = "Anlegen eines neuen Adresstyps")
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Adresstyp erfolgreich angelegt"),
+ @ApiResponse(code = 500, message = "Konnte nicht durchgeführt werden")
+ })
+ public ResponseEntity<AddressTypeDto> insertAddressType(@Validated @RequestBody AddressTypeDto addressTypeDto) {
+ AddressTypeDto savedAddressTypeDto = addressTypeService.insertAddressType(addressTypeDto);
+ URI location = ServletUriComponentsBuilder
+ .fromCurrentRequestUri()
+ .path("/{uuid}")
+ .buildAndExpand(savedAddressTypeDto.getUuid())
+ .toUri();
+ return ResponseEntity.created(location).body(savedAddressTypeDto);
+ }
+
+
+ @PutMapping("/{addressTypeUuid}")
+ @Secured("ROLE_KON-ADMIN")
+ @ApiOperation(value = "Ändern eines Adresstyp")
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Adresstyp wurde erfolgreich aktualisiert"),
+ @ApiResponse(code = 400, message = "Ungültige Eingabe"),
+ @ApiResponse(code = 404, message = "Nicht gefunden")})
+ public ResponseEntity updateAddressType(@PathVariable UUID addressTypeUuid, @Validated @RequestBody AddressTypeDto addressTypeDto) {
+
+ if (!addressTypeDto.getUuid().equals(addressTypeUuid)) {
+ throw new BadRequestException("invalid.uuid.path.object");
+ }
+
+ addressTypeService.updateAddressType(addressTypeDto);
+ return ResponseEntity.ok().build();
+ }
+
+
+ @DeleteMapping("/{uuid}")
+ @Secured("ROLE_KON-ADMIN")
+ @ResponseStatus(HttpStatus.OK)
+ @ApiOperation(value = "Adresstyp löschen")
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Erfolgreich durchgeführt"),
+ @ApiResponse(code = 400, message = "Ungültige Anfrage"),
+ @ApiResponse(code = 404, message = "Nicht gefunden")})
+ public void removeAddressType(@PathVariable UUID uuid) {
+ addressTypeService.removeAddressType(uuid);
+ }
+
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressTypeMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressTypeMapper.java
index e77f78d..96376fe 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressTypeMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressTypeMapper.java
@@ -15,12 +15,14 @@
package org.eclipse.openk.contactbasedata.mapper;
import org.eclipse.openk.contactbasedata.model.RefAddressType;
-import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressTypeDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface AddressTypeMapper {
- AddressDto toAddressTypeDto(RefAddressType refAddressType);
+ AddressTypeDto toAddressTypeDto(RefAddressType refAddressType);
+
+ RefAddressType toRefAddressType(AddressTypeDto addressTypeDto);
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressTypeRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressTypeRepository.java
new file mode 100644
index 0000000..969fede
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressTypeRepository.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.repository;
+
+import org.eclipse.openk.contactbasedata.model.RefAddressType;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+public interface AddressTypeRepository extends JpaRepository<RefAddressType, Long> {
+ List< RefAddressType > findAll();
+ Optional<RefAddressType> findByUuid(UUID uuid);
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/AddressTypeService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressTypeService.java
new file mode 100644
index 0000000..c96605e
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressTypeService.java
@@ -0,0 +1,86 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.service;
+
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.constants.Constants;
+import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
+import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.mapper.AddressTypeMapper;
+import org.eclipse.openk.contactbasedata.model.RefAddressType;
+import org.eclipse.openk.contactbasedata.repository.AddressTypeRepository;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressTypeDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+@Log4j2
+@Service
+public class AddressTypeService {
+ @Autowired
+ private AddressTypeRepository addressTypeRepository;
+
+ @Autowired
+ AddressTypeMapper addressTypeMapper;
+
+ public List<AddressTypeDto> findAllAddressTypes() {
+ return addressTypeRepository.findAll().stream()
+ .map( addressTypeMapper::toAddressTypeDto )
+ .collect(Collectors.toList());
+ }
+
+
+ public AddressTypeDto getAddressTypeByUuid(UUID addressTypeUuid) {
+ RefAddressType refAddressType = addressTypeRepository
+ .findByUuid(addressTypeUuid)
+ .orElseThrow(() -> new NotFoundException(Constants.ADDRESS_TYPE_UUID_NOT_EXISTING));
+ return addressTypeMapper.toAddressTypeDto(refAddressType);
+ }
+
+ @Transactional
+ public AddressTypeDto insertAddressType(AddressTypeDto addressTypeDto) {
+ RefAddressType addressTypeToSave = addressTypeMapper.toRefAddressType(addressTypeDto);
+ addressTypeToSave.setUuid(UUID.randomUUID());
+
+ RefAddressType savedAddressType = addressTypeRepository.save(addressTypeToSave);
+ return addressTypeMapper.toAddressTypeDto(savedAddressType);
+ }
+
+ @Transactional
+ public AddressTypeDto updateAddressType(AddressTypeDto addressTypeDto){
+ RefAddressType addressTypeUpdated;
+ RefAddressType addressTypeToSave = addressTypeMapper.toRefAddressType(addressTypeDto);
+ RefAddressType existingAddressType = addressTypeRepository
+ .findByUuid(addressTypeDto.getUuid())
+ .orElseThrow(() -> new NotFoundException(Constants.ADDRESS_TYPE_UUID_NOT_EXISTING));
+ addressTypeToSave.setId(existingAddressType.getId());
+ addressTypeUpdated = addressTypeRepository.save(addressTypeToSave);
+
+ return addressTypeMapper.toAddressTypeDto(addressTypeUpdated);
+ }
+
+ @Transactional
+ public void removeAddressType(UUID uuid) {
+ RefAddressType existingAddressType = addressTypeRepository.findByUuid(uuid)
+ .orElseThrow( () -> new BadRequestException(Constants.ADDRESS_TYPE_UUID_NOT_EXISTING));
+
+ addressTypeRepository.delete(existingAddressType);
+ }
+
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/PersonTypeService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/PersonTypeService.java
index 74f33f8..3c71472 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/PersonTypeService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/PersonTypeService.java
@@ -68,7 +68,7 @@
RefPersonType personTypeToSave = personTypeMapper.toRefPersonType(personTypeDto);
RefPersonType existingPersonType = personTypeRepository
.findByUuid(personTypeDto.getUuid())
- .orElseThrow(() -> new NotFoundException("personType.uuid.not.existing"));
+ .orElseThrow(() -> new NotFoundException(Constants.PERSON_TYPE_UUID_NOT_EXISTING));
personTypeToSave.setId(existingPersonType.getId());
personTypeUpdated = personTypeRepository.save(personTypeToSave);
@@ -78,7 +78,7 @@
@Transactional
public void removePersonType(UUID uuid) {
RefPersonType existingPersonType = personTypeRepository.findByUuid(uuid)
- .orElseThrow( () -> new BadRequestException("personType.uuid.not.existing"));
+ .orElseThrow( () -> new BadRequestException(Constants.PERSON_TYPE_UUID_NOT_EXISTING));
personTypeRepository.delete(existingPersonType);
}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
index 6ebab0c..a5961c3 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -51,6 +51,9 @@
PersonTypeMapper personTypeMapper() { return new PersonTypeMapperImpl(); }
@Bean
+ AddressTypeMapper addressTypeMapper() { return new AddressTypeMapperImpl(); }
+
+ @Bean
AddressMapper addressMapper() { return new AddressMapperImpl(); }
@Bean
@@ -77,6 +80,9 @@
public PersonTypeService myPersonTypeService() { return new PersonTypeService(); }
@Bean
+ public AddressTypeService myAddressTypeService() { return new AddressTypeService(); }
+
+ @Bean
public AddressService myAddressService() { return new AddressService(); }
@Bean
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressTypeControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressTypeControllerTest.java
new file mode 100644
index 0000000..7c629aa
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressTypeControllerTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.controller;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.eclipse.openk.contactbasedata.ContactBaseDataApplication;
+import org.eclipse.openk.contactbasedata.service.AddressTypeService;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressTypeDto;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.util.List;
+import java.util.UUID;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@SpringBootTest(classes = ContactBaseDataApplication.class)
+@AutoConfigureMockMvc
+@ActiveProfiles("test") // Todo: Find a better way to configure the tests
+public class AddressTypeControllerTest {
+
+ @MockBean
+ private AddressTypeService addressTypeService;
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ @Test
+ public void shouldReturnAllAddressTypes() throws Exception {
+ List<AddressTypeDto> sds = MockDataHelper.mockAddressTypesDtos();
+
+ when(addressTypeService.findAllAddressTypes()).thenReturn(sds);
+
+ mockMvc.perform(get("/addressTypes"))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON));
+ }
+
+ @Test
+ public void shouldReturnSingleAddressType() throws Exception {
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+
+ when(addressTypeService.getAddressTypeByUuid(any(UUID.class))).thenReturn(addressTypeDto);
+
+ mockMvc.perform(get("/addressTypes/37454f86-2006-11ea-978f-2e728ce88125"))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON));
+ }
+
+ @Test
+ public void shouldInsertAddressType() throws Exception {
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+ addressTypeDto.setType("Master");
+ addressTypeDto.setDescription("of the universe");
+
+ when(addressTypeService.insertAddressType(any(AddressTypeDto.class)))
+ .thenReturn(addressTypeDto);
+
+ mockMvc.perform(post("/addressTypes")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(addressTypeDto)))
+ .andExpect(jsonPath("$.type", Matchers.is("Master")))
+ .andExpect(jsonPath("$.description", Matchers.is("of the universe" )));
+ }
+
+ @Test
+ public void shouldUpdateAddressType() throws Exception {
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+ addressTypeDto.setUuid(UUID.randomUUID());
+
+ when( addressTypeService.updateAddressType(any(AddressTypeDto.class))).thenReturn(addressTypeDto);
+
+ mockMvc.perform(put("/addressTypes/{uuid}", addressTypeDto.getUuid().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(addressTypeDto)))
+ .andExpect(status().is2xxSuccessful());
+ }
+
+ @Test
+ public void shouldNotUpdateAddressTypeDueToError() throws Exception {
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+ addressTypeDto.setUuid(UUID.randomUUID());
+
+ when( addressTypeService.updateAddressType(any(AddressTypeDto.class))).thenReturn(addressTypeDto);
+
+ // use different UUIDs for path and object
+ mockMvc.perform(put("/addressTypes/{uuid}", UUID.randomUUID().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(addressTypeDto)))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void shouldDeleteAddressType() throws Exception {
+ mockMvc.perform(delete("/addressTypes/05ff2344-20a5-11ea-978f-2e728ce88125")
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().is2xxSuccessful());
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/PersonTypeControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/PersonTypeControllerTest.java
index 9379b1b..d5acbec 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/PersonTypeControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/PersonTypeControllerTest.java
@@ -43,7 +43,7 @@
public class PersonTypeControllerTest {
@MockBean
- private PersonTypeService saluationService;
+ private PersonTypeService personTypeService;
@Autowired
private MockMvc mockMvc;
@@ -52,7 +52,7 @@
public void shouldReturnAllPersonTypes() throws Exception {
List<PersonTypeDto> sds = MockDataHelper.mockPersonTypesDtos();
- when(saluationService.findAllPersonTypes()).thenReturn(sds);
+ when(personTypeService.findAllPersonTypes()).thenReturn(sds);
mockMvc.perform(get("/personTypes"))
.andExpect(status().is2xxSuccessful())
@@ -63,7 +63,7 @@
public void shouldReturnSinglePersonType() throws Exception {
PersonTypeDto personTypeDto = MockDataHelper.mockPersonTypeDto();
- when(saluationService.getPersonTypeByUuid(any(UUID.class))).thenReturn(personTypeDto);
+ when(personTypeService.getPersonTypeByUuid(any(UUID.class))).thenReturn(personTypeDto);
mockMvc.perform(get("/personTypes/37454f86-2006-11ea-978f-2e728ce88125"))
.andExpect(status().is2xxSuccessful())
@@ -76,7 +76,7 @@
personTypeDto.setType("Master");
personTypeDto.setDescription("of the universe");
- when(saluationService.insertPersonType(any(PersonTypeDto.class)))
+ when(personTypeService.insertPersonType(any(PersonTypeDto.class)))
.thenReturn(personTypeDto);
mockMvc.perform(post("/personTypes")
@@ -91,7 +91,7 @@
PersonTypeDto personTypeDto = MockDataHelper.mockPersonTypeDto();
personTypeDto.setUuid(UUID.randomUUID());
- when( saluationService.updatePersonType(any(PersonTypeDto.class))).thenReturn(personTypeDto);
+ when( personTypeService.updatePersonType(any(PersonTypeDto.class))).thenReturn(personTypeDto);
mockMvc.perform(put("/personTypes/{uuid}", personTypeDto.getUuid().toString())
.contentType(MediaType.APPLICATION_JSON)
@@ -104,7 +104,7 @@
PersonTypeDto personTypeDto = MockDataHelper.mockPersonTypeDto();
personTypeDto.setUuid(UUID.randomUUID());
- when( saluationService.updatePersonType(any(PersonTypeDto.class))).thenReturn(personTypeDto);
+ when( personTypeService.updatePersonType(any(PersonTypeDto.class))).thenReturn(personTypeDto);
// use different UUIDs for path and object
mockMvc.perform(put("/personTypes/{uuid}", UUID.randomUUID().toString())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/AddressTypeServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/AddressTypeServiceTest.java
new file mode 100644
index 0000000..fe46a15
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/AddressTypeServiceTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.service;
+
+import org.eclipse.openk.contactbasedata.config.TestConfiguration;
+import org.eclipse.openk.contactbasedata.model.RefAddressType;
+import org.eclipse.openk.contactbasedata.repository.AddressTypeRepository;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressTypeDto;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import static org.hibernate.validator.internal.util.Contracts.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+
+public class AddressTypeServiceTest {
+ @Qualifier("myAddressTypeService")
+ @Autowired
+ private AddressTypeService addressTypeService;
+
+ @MockBean
+ private AddressTypeRepository addressTypeRepository;
+
+ @Test
+ public void shouldFindAllAddressTypesProperly() {
+ List<RefAddressType> rs = MockDataHelper.mockRefAddressTypes();
+ when(addressTypeRepository.findAll()).thenReturn(rs);
+ List<AddressTypeDto> retVals = addressTypeService.findAllAddressTypes();
+
+ assertEquals(rs.size(), retVals.size());
+ assertEquals(rs.size(), 2);
+ assertEquals(rs.get(1).getUuid(), retVals.get(1).getUuid());
+ }
+
+
+ @Test
+ public void shouldReturnAddressTypeByUuid() {
+
+ RefAddressType refAddressType = MockDataHelper.mockRefAddressType();
+ refAddressType.setType("Testtyp");
+ when( addressTypeRepository.findByUuid( any(UUID.class)) ).thenReturn(Optional.of(refAddressType));
+
+ AddressTypeDto addressTypeDto = addressTypeService.getAddressTypeByUuid(UUID.randomUUID());
+ assertEquals( addressTypeDto.getUuid(), refAddressType.getUuid() );
+ assertEquals( addressTypeDto.getType(), refAddressType.getType() );
+ }
+
+ @Test
+ public void shouldInsertAddressType(){
+ RefAddressType refAddressType = MockDataHelper.mockRefAddressType();
+
+ refAddressType.setUuid(UUID.fromString("1468275e-200b-11ea-978f-2e728ce88125"));
+ refAddressType.setType("Viertadresse");
+ refAddressType.setDescription("In der Wildnis");
+
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+ addressTypeDto.setUuid(null);
+
+ when( addressTypeRepository.save( any( RefAddressType.class) )).thenReturn(refAddressType);
+
+ AddressTypeDto savedAddressTypeDto = addressTypeService.insertAddressType(addressTypeDto);
+ assertEquals("Viertadresse", savedAddressTypeDto.getType());
+ assertNotNull( savedAddressTypeDto.getUuid());
+ }
+
+ @Test
+ public void shouldUpdateAddressType() {
+
+ RefAddressType addressType = MockDataHelper.mockRefAddressType();
+ addressType.setType("Viertadresse");
+
+ AddressTypeDto addressTypeDto = MockDataHelper.mockAddressTypeDto();
+ addressTypeDto.setType("Kein guter Mensch");
+
+ when( addressTypeRepository.findByUuid( any(UUID.class)) ).thenReturn(Optional.of(addressType));
+ when( addressTypeRepository.save( any(RefAddressType.class)) ).thenReturn(addressType);
+ AddressTypeDto addressTypeDtoUpdated = addressTypeService.updateAddressType(addressTypeDto);
+
+ assertEquals(addressType.getUuid(), addressTypeDtoUpdated.getUuid());
+ assertEquals("Viertadresse", addressTypeDtoUpdated.getType());
+ }
+
+
+ @Test
+ public void shouldDeleteAddressType() {
+
+ RefAddressType addressType = MockDataHelper.mockRefAddressType();
+
+ when(addressTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(addressType));
+ Mockito.doNothing().when(addressTypeRepository).delete( isA( RefAddressType.class ));
+ addressTypeService.removeAddressType(addressType.getUuid());
+
+ Mockito.verify(addressTypeRepository, times(1)).delete( addressType );
+ }
+}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
index 17ab147..c4724ff 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -168,6 +168,42 @@
return refs;
}
+ public static RefAddressType mockRefAddressType() {
+ RefAddressType refAddressType = new RefAddressType();
+ refAddressType.setId(1L);
+ refAddressType.setUuid(UUID.randomUUID());
+ refAddressType.setDescription("Zweitwohnsitz");
+ refAddressType.setType("Nebenadresse");
+ return refAddressType;
+ }
+
+ public static AddressTypeDto mockAddressTypeDto() {
+ AddressTypeDto addressTypeDto = new AddressTypeDto();
+ addressTypeDto.setUuid(UUID.randomUUID());
+ addressTypeDto.setDescription("Zweitwohnsitz");
+ addressTypeDto.setType("Nebenadresse");
+ return addressTypeDto;
+ }
+
+ public static List<AddressTypeDto> mockAddressTypesDtos() {
+ List<AddressTypeDto> dtos = new LinkedList<>();
+ dtos.add( mockAddressTypeDto() );
+ AddressTypeDto sd2 = mockAddressTypeDto();
+ sd2.setType("Mülltonne");
+ sd2.setDescription("Drittwohnsitz");
+ dtos.add( sd2 );
+ return dtos;
+ }
+
+ public static List<RefAddressType> mockRefAddressTypes() {
+ List<RefAddressType> refs = new LinkedList<>();
+ refs.add( mockRefAddressType() );
+ RefAddressType sd2 = mockRefAddressType();
+ sd2.setType("Mülltonne");
+ sd2.setDescription("Drittwohnsitz");
+ refs.add( sd2 );
+ return refs;
+ }
public static TblAddress mockTblAddress(){
TblAddress tblAddress = new TblAddress();