1 package io.github.magwas.inez.storage;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.mockito.Mockito.times;
5 import static org.mockito.Mockito.verify;
6 import static org.mockito.Mockito.verifyNoInteractions;
7
8 import java.util.List;
9
10 import org.junit.jupiter.api.DisplayName;
11 import org.junit.jupiter.api.Test;
12 import org.mockito.ArgumentCaptor;
13 import org.mockito.InjectMocks;
14
15 import io.github.magwas.inez.parse.IdTestData;
16 import io.github.magwas.inez.storage.model.BridiReference;
17 import io.github.magwas.testing.TestBase;
18
19 class AddReferencesServiceTest extends TestBase implements IdTestData {
20
21 @InjectMocks
22 AddReferencesService addReferences;
23
24 @Test
25 @DisplayName("for null references does nothing")
26 void test() {
27 addReferences.apply(ALICE_ID, null);
28 verifyNoInteractions(addReferences.bridiReferenceRepository);
29 }
30
31 @Test
32 @DisplayName("for empty references does nothing")
33 void test1() {
34 addReferences.apply(ALICE_ID, List.of());
35 verifyNoInteractions(addReferences.bridiReferenceRepository);
36 }
37
38 @Test
39 @DisplayName("for each reference adds an entry to the bridireferencerepository")
40 void test2() {
41 addReferences.apply(ALICE_ID, List.of(IS_A_ID, SUMTI_ID));
42 ArgumentCaptor<BridiReference> argument = ArgumentCaptor.forClass(BridiReference.class);
43 verify(addReferences.bridiReferenceRepository, times(2)).save(argument.capture());
44 List<BridiReference> values = argument.getAllValues();
45 assertEquals(ALICE_ID, values.get(0).bridiId());
46 assertEquals(ALICE_ID, values.get(1).bridiId());
47 assertEquals(IS_A_ID, values.get(0).selbriId());
48 assertEquals(IS_A_ID, values.get(1).selbriId());
49 assertEquals(IS_A_ID, values.get(0).sumtiId());
50 assertEquals(SUMTI_ID, values.get(1).sumtiId());
51 }
52 }