package dao; import dao.DataAccessException; import dao.Database; import dao.UserDAO; import model.User; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import javax.xml.crypto.Data; import java.sql.Connection; import static org.junit.jupiter.api.Assertions.*; public class UserDAOTest { private Database db; private User insertUser; private User retrieveUser; private User validateUser; private UserDAO uDao; @BeforeEach public void setUp() throws DataAccessException { db = new Database(); insertUser = new User("DanielG", "catsanddogs", "dgood@gmail.com", "Daniel", "Good", "Male", "12345"); retrieveUser = new User("JohnL", "mastodon", "jl123@outlook.com", "John", "Lock", "Male", "54373"); validateUser = new User("DaveQ", "nintendopower", "daveql@gmail.com", "Dave", "Quelle", "Male", "128956"); Connection conn = db.getConnection(); db.clearTables(); uDao = new UserDAO(conn); } @AfterEach public void tearDown() throws DataAccessException { db.closeConnection(false); } @Test public void insertPass() throws DataAccessException { User compareTest = uDao.getUserByID(insertUser.getUsername()); assertNull(compareTest); uDao.createUser(insertUser); compareTest = uDao.getUserByID(insertUser.getUsername()); assertEquals(insertUser, compareTest); } @Test public void insertFail() throws DataAccessException { uDao.createUser(insertUser); assertThrows(DataAccessException.class, ()-> uDao.createUser(insertUser)); } @Test public void retrievalPass() throws DataAccessException { uDao.createUser(retrieveUser); User compareTest = uDao.getUserByID(retrieveUser.getUsername()); assertNotNull(compareTest); assertEquals(retrieveUser, compareTest); } @Test public void retrievalFail() throws DataAccessException { User compareTest = uDao.getUserByID("Adam"); assertNull(compareTest); } @Test public void validatePass() throws DataAccessException { uDao.createUser(validateUser); assertNotNull(uDao.getUserByID(validateUser.getUsername())); assertTrue(uDao.validate(validateUser.getUsername(), validateUser.getPassword())); } @Test public void validateFail() throws DataAccessException { assertFalse(uDao.validate("Jimmy", "bacon")); } @Test public void clearPass() throws DataAccessException { uDao.createUser(insertUser); assertNotNull(uDao.getUserByID(insertUser.getUsername())); assertDoesNotThrow(() -> uDao.removeAllUsers()); assertNull(uDao.getUserByID(insertUser.getUsername())); } }