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);