oparl-service/oparl-server/src/test/java/de/twomartens/oparlservice/service/OParlServiceTest.java

122 lines
5.6 KiB
Java

package de.twomartens.oparlservice.service;
import de.twomartens.oparlservice.configs.OParlServiceProperties;
import de.twomartens.oparlservice.entity.internal.System;
import de.twomartens.oparlservice.repository.SystemRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.time.ZonedDateTime;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
class OParlServiceTest {
private OParlServiceProperties properties;
private OParlService service;
private SystemRepository systemRepository;
@BeforeEach
void setUp() {
properties = new OParlServiceProperties();
properties.setUrl("http://localhost");
systemRepository = mock(SystemRepository.class);
service = new OParlService(properties, systemRepository);
}
@Test
void shouldAnnotateSystemWithURLs() {
System internalSystem = new System(0, "https://creativecommons.org/cc-by",
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
assertNotNull(result);
assertEquals(String.valueOf(0), result.getId());
assertEquals("https://schema.oparl.org/1.1/Schema", result.getType());
assertEquals("https://schema.oparl.org/1.1/", result.getOparlVersion());
assertEquals("http://localhost/bodies", result.getBody());
}
@Test
void shouldPickFirstSystem_whenMultipleSystemsAvailable() {
System internalSystem1 = new System(0, "https://creativecommons.org/cc-by",
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
System internalSystem2 = new System(1, "https://creativecommons.org/cc-by-sa",
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
when(systemRepository.findAll()).thenReturn(List.of(internalSystem1, internalSystem2));
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
assertNotNull(result);
assertEquals(String.valueOf(0), result.getId());
assertEquals("https://creativecommons.org/cc-by", result.getLicense());
assertEquals("OParl-Schnittstelle", result.getName());
}
@Test
void shouldPickFirstNotDeletedSystem() {
System internalSystem1 = new System(0, "https://creativecommons.org/cc-by",
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), true);
System internalSystem2 = new System(1, "https://creativecommons.org/cc-by-sa",
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
when(systemRepository.findAll()).thenReturn(List.of(internalSystem1, internalSystem2));
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
assertNotNull(result);
assertEquals(String.valueOf(1), result.getId());
assertEquals("https://creativecommons.org/cc-by-sa", result.getLicense());
assertEquals("OParl-Baustelle", result.getName());
assertFalse(result.isDeleted());
}
@Test
void shouldUseCorrectUrl() {
System internalSystem = new System(1, "https://creativecommons.org/cc-by-sa",
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
de.twomartens.oparlservice.entity.dto.System result1 = service.getSystem();
properties.setUrl("http://test.com");
de.twomartens.oparlservice.entity.dto.System result2 = service.getSystem();
assertNotNull(result1);
assertNotNull(result2);
assertEquals(String.valueOf(1), result1.getId());
assertEquals(String.valueOf(1), result2.getId());
assertEquals("http://localhost/bodies", result1.getBody());
assertEquals("http://test.com/bodies", result2.getBody());
}
@Test
void shouldReturnNonValuesOfInternalEntity() {
System internalSystem = new System(1, "https://creativecommons.org/cc-by-sa",
"OParl-Baustelle", "admin@2martens.de", "Jim Martens",
"https://sitzungsdienst-eimsbuettel.hamburg.de/bi/allris.net.asp", "https://2martens.de",
"https://git.2martens.com/2martens/oparl-service", "http://example.com", ZonedDateTime.now(),
ZonedDateTime.now(),
false);
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
assertEquals("OParl-Baustelle", result.getName());
assertEquals("admin@2martens.de", result.getContactEmail());
assertEquals("Jim Martens", result.getContactName());
assertEquals("https://2martens.de", result.getVendor());
assertEquals("https://sitzungsdienst-eimsbuettel.hamburg.de/bi/allris.net.asp", result.getWebsite());
assertEquals("https://git.2martens.com/2martens/oparl-service", result.getProduct());
assertEquals("http://example.com", result.getWeb());
}
}