package com.ufund.api.ufundapi.persistence; import java.io.File; import java.io.IOException; import java.time.LocalDateTime; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.ObjectMapper; import com.ufund.api.ufundapi.model.UserAuth; @Tag("Persistence-tier") public class UserAuthFileDAOTest { private UserAuthFIleDAO userAuthFIleDAO; private UserAuth[] userAuths; @BeforeEach public void setupUserAuthFileDAO() throws IOException { ObjectMapper mockObjectMapper = mock(ObjectMapper.class); userAuths = new UserAuth[]{ new UserAuth("123", "Phil", LocalDateTime.MAX), new UserAuth("456", "Bob", LocalDateTime.MAX), new UserAuth("789", "Steve", LocalDateTime.MAX) }; // When the object mapper is supposed to read from the file // the mock object mapper will return the hero array above when(mockObjectMapper .readValue(new File("doesnt_matter.txt"),UserAuth[].class)) .thenReturn(userAuths); userAuthFIleDAO = new UserAuthFIleDAO(mockObjectMapper, "doesnt_matter.txt"); } @Test public void getUserAuthTest() { String key = "123"; UserAuth auth = userAuthFIleDAO.getUserAuth(key); assertEquals(userAuths[0], auth); } @Test public void addUserAuthTest() { UserAuth auth = new UserAuth("999", "Fish", null); assertDoesNotThrow(() -> userAuthFIleDAO.addUserAuth(auth)); } @Test public void removeUserAuthTest() { String key = "123"; assertDoesNotThrow(() -> userAuthFIleDAO.removeUserAuth(key)); } }