KON-22 Services für Company, Unittesting
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
index 82a85d6..7d35734 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
@@ -61,7 +61,7 @@
@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
public Page<CompanyDto> readCompanys(
@PageableDefault(sort = {"companyName"}, direction = Sort.Direction.ASC) Pageable pageable){
- return companyService.findCompanys(pageable);
+ return companyService.findCompanies(pageable);
}
@PostMapping
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
index 388794a..02b0d1c 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -64,7 +64,7 @@
);
}
- public Page<CompanyDto> findCompanys(Pageable pageable) {
+ public Page<CompanyDto> findCompanies(Pageable pageable) {
return companyRepository.findAll(pageable).map(companyMapper::toCompanyDto);
}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
new file mode 100644
index 0000000..27963ea
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
@@ -0,0 +1,119 @@
+/*
+ *******************************************************************************
+ * 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.CompanyService;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+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.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.util.UUID;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+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 CompanyControllerTest {
+
+ @MockBean
+ private CompanyService companyService;
+
+ @Autowired
+ private MockMvc mockMvc;
+
+
+ @Test
+ public void shouldReturnARequestedExtPerson() throws Exception {
+ CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+ when(companyService.findCompany(any(UUID.class))).thenReturn(ep);
+
+ mockMvc.perform(get("/companies/"+UUID.randomUUID().toString()))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+ .andExpect(jsonPath("companyName", is( ep.getCompanyName())));
+ }
+
+
+ @Test
+ public void shouldReturnAllExtPerson() throws Exception {
+ Page<CompanyDto> epPage = MockDataHelper.mockCompanyDtoPage();
+
+ when(companyService.findCompanies(any(Pageable.class))).thenReturn(epPage);
+
+ mockMvc.perform(get("/companies"))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+ .andExpect(jsonPath("totalElements", is( 2 )));
+ }
+
+ @Test
+ public void shouldUpdateExtPerson() throws Exception {
+ CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+ when( companyService.updateCompany(any(CompanyDto.class))).thenReturn(ep);
+
+ mockMvc.perform(put("/companies/{uuid}", ep.getContactUuid().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(ep)))
+ .andExpect(status().is2xxSuccessful());
+ }
+
+ @Test
+ public void shouldNotUpdateExtPersonDueToException() throws Exception {
+ CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+ when( companyService.updateCompany(any(CompanyDto.class))).thenReturn(ep);
+
+ // provide different exception in url and object
+ mockMvc.perform(put("/companies/{uuid}", UUID.randomUUID().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(ep)))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void shouldInsertExtPerson() throws Exception {
+ CompanyDto companyDto = MockDataHelper.mockCompanyDto();
+
+ when( companyService.insertCompany(any(CompanyDto.class))).thenReturn(companyDto);
+
+ mockMvc.perform(post("/companies")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(companyDto)))
+ .andExpect(jsonPath("$.companyName", is(companyDto.getCompanyName())))
+ .andExpect(jsonPath("$.contactId", not(companyDto.getContactUuid())))
+ .andExpect(jsonPath("$.contactNote", is(companyDto.getContactNote())))
+ .andExpect(status().is2xxSuccessful());
+ }
+}
\ No newline at end of file
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 2ec988e..5850ad6 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -422,9 +422,6 @@
return new PageImpl<>(list, Pageable.unpaged(), list.size());
}
-
-
- xxxx
public static TblCompany mockCompany() {
TblContact c = new TblContact();
c.setId( 10L );
@@ -439,47 +436,32 @@
return tblCompany;
}
- public static InternalPersonDto mockInternalPersonDto() {
- InternalPersonDto ipd = new InternalPersonDto();
- ipd.setContactUuid(UUID.randomUUID());
- ipd.setFirstName("Hella");
- ipd.setLastName("Wahnsinn");
- ipd.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
- ipd.setTitle("Mrs.");
- ipd.setDepartment("Beschwerdemanagement");
- ipd.setUid("222-888");
- ipd.setUserRef("HWAHNS");
- ipd.setPersonTypeUuid(UUID.randomUUID());
- ipd.setSalutationUuid(UUID.randomUUID());
- ipd.setContactNote("Vorsicht");
- return ipd;
+ public static CompanyDto mockCompanyDto() {
+ CompanyDto tblCompany = new CompanyDto();
+ tblCompany.setContactUuid(UUID.randomUUID());
+ tblCompany.setCompanyName("Kuemmelbrot");
+ tblCompany.setCompanyType("GmbH");
+ tblCompany.setContactType(Constants.CONTACT_TYPE_COMPANY);
+
+ tblCompany.setContactNote("Vorsicht");
+ return tblCompany;
}
- public static Page<InternalPersonDto> mockInternalPersonDtoPage(){
+ public static Page<CompanyDto> mockCompanyDtoPage(){
- InternalPersonDto ip1 = mockInternalPersonDto();
+ CompanyDto com1 = mockCompanyDto();
- InternalPersonDto ip2 = new InternalPersonDto();
- ip2.setContactUuid(UUID.randomUUID());
- ip2.setFirstName("Fritz");
- ip2.setLastName("Alter");
- ip2.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
- ip2.setTitle("Dr.");
- ip2.setDepartment("Geschäftsführung");
- ip2.setUid("333-999");
- ip2.setUserRef("FALTER");
- ip2.setPersonTypeUuid(UUID.randomUUID());
- ip2.setSalutationUuid(UUID.randomUUID());
- ip2.setContactNote("Gründer");
+ CompanyDto com2 = new CompanyDto();
+ com2.setContactUuid(UUID.randomUUID());
+ com2.setCompanyName("Sputnik 2000");
+ com2.setCompanyType("AG");
+ com2.setContactType(Constants.CONTACT_TYPE_COMPANY);
+ com2.setContactNote("Gründer");
- List<InternalPersonDto> list = Arrays.asList(ip1, ip2);
+ List<CompanyDto> list = Arrays.asList(com1, com2);
return new PageImpl<>(list, Pageable.unpaged(), list.size());
}
-
- yyyy
-
-
public static TblContact mockTblContact(){
TblContact tblContact = new TblContact();
tblContact.setId(5L);