Merge branch 'KON_39-Maske-Interne-Person-hinzufuegen' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.backend into DEVELOP
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 02b0d1c..b88907b 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -96,6 +96,7 @@
 
         existingCompany.setCompanyName(companyDto.getCompanyName());
         existingCompany.setCompanyType(companyDto.getCompanyType());
+        existingCompany.setHrNumber(companyDto.getHrNumber());
 
         setFromCompanyDto( existingCompany, companyDto );
         companyUpdated = companyRepository.save(existingCompany);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
index 6963a09..c10b9d6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -104,6 +104,9 @@
         existingInternalPerson.setLastName(internalPersonDto.getLastName());
         existingInternalPerson.setFirstName(internalPersonDto.getFirstName());
         existingInternalPerson.setTitle(internalPersonDto.getTitle());
+        existingInternalPerson.setDepartment(internalPersonDto.getDepartment());
+        existingInternalPerson.setUid(internalPersonDto.getUid());
+        existingInternalPerson.setUserRef(internalPersonDto.getUserRef());
 
         setFromInternalPersonDto( existingInternalPerson, internalPersonDto );
         internalPersonUpdated = internalPersonRepository.save(existingInternalPerson);
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
new file mode 100644
index 0000000..ba0b175
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * 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.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.model.TblCompany;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.eclipse.openk.contactbasedata.repository.CompanyRepository;
+import org.eclipse.openk.contactbasedata.repository.ContactRepository;
+import org.eclipse.openk.contactbasedata.repository.PersonTypeRepository;
+import org.eclipse.openk.contactbasedata.repository.SalutationRepository;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+import org.junit.jupiter.api.Test;
+import org.mockito.stubbing.Answer;
+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.Optional;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+
+public class CompanyServiceTest {
+    @Qualifier("myCompanyService")
+    @Autowired
+    private CompanyService companyService;
+
+    @MockBean
+    private CompanyRepository companyRepository;
+
+    @MockBean
+    private ContactRepository contactRepository;
+
+    @MockBean
+    private SalutationRepository salutationRepository;
+
+    @MockBean
+    private PersonTypeRepository personTypeRepository;
+
+    @Test
+    public void shouldFindACompanyProperly() {
+        TblCompany ep = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ep));
+        CompanyDto dto = companyService.findCompany(UUID.randomUUID());
+
+        assertEquals(ep.getContact().getUuid(), dto.getContactUuid());
+    }
+
+    @Test
+    public void shouldThrowInErrorCaseWithCompany() {
+        TblCompany ep = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+        assertThrows(NotFoundException.class, () -> companyService.findCompany(UUID.randomUUID()));
+    }
+
+    @Test
+    public void shouldUpdateCompany() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        TblCompany epTbl = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(epTbl));
+        when(salutationRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+        when(personTypeRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        CompanyDto savedDto = companyService.updateCompany(epDto);
+        assertEquals(epTbl.getContact().getUuid(), savedDto.getContactUuid());
+        assertEquals(epTbl.getContact().getNote(), savedDto.getContactNote());
+        assertEquals(epTbl.getContact().getContactType(), savedDto.getContactType());
+        assertEquals(epTbl.getCompanyName(), savedDto.getCompanyName());
+        assertEquals(epTbl.getCompanyType(), savedDto.getCompanyType());
+    }
+
+    @Test
+    public void shouldNotUpdateCompany_Exception1() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        TblCompany epTbl = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+        when(salutationRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+        when(personTypeRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        assertThrows( NotFoundException.class, () -> companyService.updateCompany(epDto));
+    }
+
+    @Test
+    public void shouldInsertCompany() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        epDto.setContactUuid(null);
+
+        when(contactRepository.save(any(TblContact.class)))
+                .then((Answer<TblContact>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblContact) args[0];
+                });
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        CompanyDto savedDto = companyService.insertCompany(epDto);
+        assertNotNull(savedDto.getContactUuid());
+        assertEquals(epDto.getContactNote(), savedDto.getContactNote());
+        assertEquals(epDto.getContactType(), savedDto.getContactType());
+        assertEquals(epDto.getCompanyName(), savedDto.getCompanyName());
+        assertEquals(epDto.getCompanyType(), savedDto.getCompanyType());
+    }
+}
\ No newline at end of file