package tests; import models.Question; import models.User; import models.database.IDatabase; import models.database.IUserDatabase; import models.database.HotDatabase.HotDatabase; import models.database.HotDatabase.HotUserDatabase; import org.junit.Test; import controllers.Database; public class DatabaseTest extends MockedUnitTest { @Test public void shouldKeepAdmins() { IDatabase db = new HotDatabase(); IUserDatabase userDB = db.users(); User admin = userDB.register("admin", "admin", "admin@example.com"); admin.setModerator(true, null); User user = userDB.register("user", "user", "user@example.com"); assertEquals(2, userDB.all().size()); assertEquals(2, userDB.count()); assertEquals(1, userDB.allModerators().size()); assertTrue(userDB.all().contains(user)); assertTrue(userDB.all().contains(admin)); db.clear(true); assertEquals(1, userDB.all().size()); assertEquals(1, userDB.allModerators().size()); assertFalse(userDB.all().contains(user)); assertTrue(userDB.all().contains(admin)); db.clear(false); assertEquals(0, userDB.all().size()); assertEquals(0, userDB.allModerators().size()); assertFalse(userDB.all().contains(user)); assertFalse(userDB.all().contains(admin)); db.clear(true); } @Test public void shouldSwapAndBack() { IDatabase origDB = Database.swapWith(new HotDatabase()); IDatabase newDB = new HotDatabase(); assertNotSame(newDB.users(), Database.users()); IDatabase current = Database.swapWith(newDB); assertNotSame(current, newDB); assertEquals(newDB.users(), Database.users()); assertEquals(newDB.questions(), Database.questions()); assertEquals(newDB.tags(), Database.tags()); IDatabase prevDB = Database.swapWith(current); assertEquals(prevDB, newDB); assertEquals(current.questions(), Database.questions()); Database.swapWith(origDB); } @Test public void shouldClearDB() { IDatabase db = new HotDatabase(); User user = db.users().register("user", "password", "user@example.com"); Question question = db.questions().add(user, "question"); question.setTagString("tag"); db.users().getModeratorMailbox().notify(null, question); assertEquals(1, db.users().all().size()); assertEquals(1, db.questions().all().size()); assertEquals(1, db.tags().all().size()); assertEquals(1, db.users().getModeratorMailbox().getAllNotifications() .size()); db.clear(false); assertEquals(0, db.users().all().size()); assertEquals(0, db.questions().all().size()); assertEquals(0, db.tags().all().size()); assertEquals(0, db.users().getModeratorMailbox().getAllNotifications() .size()); } @Test public void shouldCleanupUser() { IUserDatabase userDB = new HotUserDatabase(); User user = userDB.register("user", "password", "user@example.com"); assertEquals(1, userDB.all().size()); user.delete(); assertEquals(0, userDB.all().size()); } }