From 1941f79bafc7b0ec2394aa8719e14b1b66678365 Mon Sep 17 00:00:00 2001 From: Yaroslav <6i4bbb@gmail.com> Date: Sat, 21 Dec 2024 19:29:31 +0200 Subject: [PATCH 1/3] Add & Delete Testing 2 --- .../gnew/m2/cli/commands/AddContactTest.java | 78 +++++++++++++++++++ .../m2/cli/commands/DeleteContactTest.java | 72 +++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java create mode 100644 src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java new file mode 100644 index 0000000..f30beb1 --- /dev/null +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java @@ -0,0 +1,78 @@ +package ua.com.javarush.gnew.m2.cli.commands; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import picocli.CommandLine; +import ua.com.javarush.gnew.m2.dto.ContactDto; +import ua.com.javarush.gnew.m2.service.PhoneBookInterface; + +import java.lang.reflect.Field; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.*; + +class AddContactTest { + + @Mock + private PhoneBookInterface phoneBookInterface; // Мокаем зависимость + + private AddContact addContact; // Создаём тестируемый объект + + @BeforeEach + void setUp() throws Exception { + MockitoAnnotations.openMocks(this); // Инициализируем моки + + // Создаём новый экземпляр AddContact + addContact = new AddContact(); + + // Используем Reflection для замены значения phoneBookInterface + Field phoneBookInterfaceField = AddContact.class.getDeclaredField("phoneBookInterface"); + phoneBookInterfaceField.setAccessible(true); + phoneBookInterfaceField.set(addContact, phoneBookInterface); + } + + @Test + void testCall_addContactSuccessfully() throws Exception { + + ContactDto savedContact = new ContactDto("Иван Иванов", List.of("123456789"), List.of("ivan@example.com"), "ivanGitHub"); + when(phoneBookInterface.add(any(ContactDto.class))).thenReturn(savedContact); + + String[] args = { + "--name", "Иван Иванов", + "--phone", "123456789", + "--email", "ivan@example.com", + "--github", "ivanGitHub" + }; + CommandLine.populateCommand(addContact, args); + + Integer result = addContact.call(); + + verify(phoneBookInterface, times(1)).add(any(ContactDto.class)); + + assertEquals(0, result); + } + + @Test + void testCall_withException() throws Exception { + + when(phoneBookInterface.add(any(ContactDto.class))).thenThrow(new RuntimeException("Ошибка добавления")); + + String[] args = { + "--name", "Иван Иванов", + "--phone", "123456789" + }; + CommandLine.populateCommand(addContact, args); + + try { + addContact.call(); + } catch (RuntimeException e) { + assertEquals("java.lang.RuntimeException: Ошибка добавления", e.getMessage()); + } + + verify(phoneBookInterface, times(1)).add(any(ContactDto.class)); + } +} \ No newline at end of file diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java new file mode 100644 index 0000000..8b2bf0d --- /dev/null +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java @@ -0,0 +1,72 @@ +package ua.com.javarush.gnew.m2.cli.commands; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import picocli.CommandLine; +import ua.com.javarush.gnew.m2.service.PhoneBookInterface; +import ua.com.javarush.gnew.m2.utils.Utils; + +import java.io.IOException; +import java.util.List; + +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.*; + +class DeleteContactTest { + + @Mock + private PhoneBookInterface phoneBookInterface; + + private DeleteContact deleteContact; + + @BeforeEach + void setUp() throws Exception { + MockitoAnnotations.openMocks(this); + + deleteContact = new DeleteContact(); + var field = DeleteContact.class.getDeclaredField("phoneBookInterface"); + field.setAccessible(true); + field.set(deleteContact, phoneBookInterface); + } + + @Test + void testCall_successfulDeletion() throws Exception { + + doNothing().when(phoneBookInterface).delete(anyLong()); + when(phoneBookInterface.list()).thenReturn(List.of()); + + String[] args = {"123", "456", "789"}; + CommandLine.populateCommand(deleteContact, args); + + Integer result = deleteContact.call(); + + verify(phoneBookInterface, times(1)).delete(123L); + verify(phoneBookInterface, times(1)).delete(456L); + verify(phoneBookInterface, times(1)).delete(789L); + + verify(phoneBookInterface, times(1)).list(); + + assert result == 0; + } + + @Test + void testCall_deletionWithException() throws Exception { + + doNothing().when(phoneBookInterface).delete(123L); + doThrow(new IOException("Ошибка удаления")).when(phoneBookInterface).delete(456L); + + String[] args = {"123", "456"}; + CommandLine.populateCommand(deleteContact, args); + + Integer result = deleteContact.call(); + + verify(phoneBookInterface, times(1)).delete(123L); + verify(phoneBookInterface, times(1)).delete(456L); + + verify(phoneBookInterface, times(1)).list(); + + assert result == 0; + } +} \ No newline at end of file From 833082aad2a2d5ece03321d12d6a6e8b3a82a14c Mon Sep 17 00:00:00 2001 From: Yaroslav <6i4bbb@gmail.com> Date: Sat, 21 Dec 2024 19:54:31 +0200 Subject: [PATCH 2/3] Add & Delete Testing 2 --- .../com/javarush/gnew/m2/cli/commands/AddContactTest.java | 8 +++----- .../javarush/gnew/m2/cli/commands/DeleteContactTest.java | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java index f30beb1..4872d2b 100644 --- a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java @@ -18,18 +18,16 @@ class AddContactTest { @Mock - private PhoneBookInterface phoneBookInterface; // Мокаем зависимость + private PhoneBookInterface phoneBookInterface; - private AddContact addContact; // Создаём тестируемый объект + private AddContact addContact; @BeforeEach void setUp() throws Exception { - MockitoAnnotations.openMocks(this); // Инициализируем моки + MockitoAnnotations.openMocks(this); - // Создаём новый экземпляр AddContact addContact = new AddContact(); - // Используем Reflection для замены значения phoneBookInterface Field phoneBookInterfaceField = AddContact.class.getDeclaredField("phoneBookInterface"); phoneBookInterfaceField.setAccessible(true); phoneBookInterfaceField.set(addContact, phoneBookInterface); diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java index 8b2bf0d..e078949 100644 --- a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java @@ -6,7 +6,6 @@ import org.mockito.MockitoAnnotations; import picocli.CommandLine; import ua.com.javarush.gnew.m2.service.PhoneBookInterface; -import ua.com.javarush.gnew.m2.utils.Utils; import java.io.IOException; import java.util.List; From 6ad122f51c0238709e189e4beaa5ef662a6ab659 Mon Sep 17 00:00:00 2001 From: Yaroslav <6i4bbb@gmail.com> Date: Sun, 22 Dec 2024 12:13:47 +0200 Subject: [PATCH 3/3] Add & Delete Testing 2 --- .../javarush/gnew/m2/cli/commands/AddContactTest.java | 9 ++++++--- .../gnew/m2/cli/commands/DeleteContactTest.java | 11 ++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java index 4872d2b..f10c26a 100644 --- a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/AddContactTest.java @@ -13,7 +13,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.times; + class AddContactTest { @@ -34,7 +37,7 @@ void setUp() throws Exception { } @Test - void testCall_addContactSuccessfully() throws Exception { + void testCallAddContactSuccessfully() throws Exception { ContactDto savedContact = new ContactDto("Иван Иванов", List.of("123456789"), List.of("ivan@example.com"), "ivanGitHub"); when(phoneBookInterface.add(any(ContactDto.class))).thenReturn(savedContact); @@ -55,7 +58,7 @@ void testCall_addContactSuccessfully() throws Exception { } @Test - void testCall_withException() throws Exception { + void testCallWithException() throws Exception { when(phoneBookInterface.add(any(ContactDto.class))).thenThrow(new RuntimeException("Ошибка добавления")); diff --git a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java index e078949..94e7e2e 100644 --- a/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java +++ b/src/test/java/ua/com/javarush/gnew/m2/cli/commands/DeleteContactTest.java @@ -11,7 +11,12 @@ import java.util.List; import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.times; + class DeleteContactTest { @@ -31,7 +36,7 @@ void setUp() throws Exception { } @Test - void testCall_successfulDeletion() throws Exception { + void testCallSuccessfulDeletion() throws Exception { doNothing().when(phoneBookInterface).delete(anyLong()); when(phoneBookInterface.list()).thenReturn(List.of()); @@ -51,7 +56,7 @@ void testCall_successfulDeletion() throws Exception { } @Test - void testCall_deletionWithException() throws Exception { + void testCallDeletionWithException() throws Exception { doNothing().when(phoneBookInterface).delete(123L); doThrow(new IOException("Ошибка удаления")).when(phoneBookInterface).delete(456L);