package design.persistence; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Date; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import design.model.League; import design.model.StrokeLeague; import design.model.Golfer; /** Unit Tests for the JSON Personal Database Singleton * @author Willem Dalton **/ @Tag("Persistence-tier") public class JSONLeagueDatabaseTest { Path tempDB; @BeforeEach void clearDB() throws IOException { tempDB = Files.createTempFile("testleaguedb", ".json"); Files.writeString(tempDB, "[]"); JSONLeagueDatabase.testInstance(tempDB.toString()); } @Test void testInstance() { JSONLeagueDatabase instance = JSONLeagueDatabase.instance(); // makes new instance assertNotNull(instance); JSONLeagueDatabase instance2 = JSONLeagueDatabase.instance(); // instance already exists assertNotNull(instance2); } @Test void testAddRemove() throws IOException { JSONLeagueDatabase instance = JSONLeagueDatabase.testInstance(tempDB.toString()); // makes new instance Golfer testOwner = new Golfer("Jamie Doe", "joe_cool", "12345"); League testLeague = new StrokeLeague("The A Team", new Date(1234), new Date(123), new Date(12345), testOwner); instance.addLeague(testLeague); assertEquals(1, instance.getLeagues().length); assertEquals(testLeague, instance.getLeagues()[0]); instance.removeLeague(testLeague); assertEquals(0, instance.getLeagues().length); } // @Test // void testUpdateGolfer() throws IOException // { // JSONLeagueDatabase instance = JSONLeagueDatabase.testInstance(tempDB.toString()); // makes new instance // Golfer testGolfer = new Golfer("Jamie Doe", "joe_cool", "12345"); // instance.addGolfer(testGolfer); // testGolfer.setUsername("joe_super_cool"); // instance.updateGolfer(testGolfer); // assertEquals(testGolfer, instance.getGolfer("joe_super_cool")); // } }