package me.moodcat.database.controllers; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import me.moodcat.database.DatabaseTestModule; import me.moodcat.database.bootstrapper.BootstrapRule; import me.moodcat.database.bootstrapper.TestBootstrap; import me.moodcat.database.entities.User; import org.jukito.JukitoRunner; import org.jukito.UseModules; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import com.google.inject.Inject; /** * This methods test to persist a User */ @RunWith(JukitoRunner.class) @UseModules(DatabaseTestModule.class) public class UserDAOTest { private final static String USER_NAME = "someName"; private final static Integer SOUNDCLOUD_ID = 12165; /** * The UserDAO. */ @Rule @Inject public BootstrapRule bootstrapRule; // Public for JUnit, it's required. Not unused either :) /** * The UserDAO. */ @Inject private UserDAO userDAO; /** * Persist a user with data. */ @Test public void persistUser() { final User user = new User(); user.setName(USER_NAME); user.setSoundCloudUserId(SOUNDCLOUD_ID); user.setPoints(1); userDAO.persist(user); final User actual = userDAO.findBySoundcloudId(SOUNDCLOUD_ID); assertEquals(user, actual); } @Test @TestBootstrap("/bootstrap/users.json") public void canRetrieveBySoundcloudId() { assertEquals("Gijs", userDAO.findBySoundcloudId(1).getName()); } @Test @TestBootstrap("/bootstrap/users.json") public void cangetLeaderboardStandardFilter() { final int standardFilter = 10; final int expectedNumberOfUsers = 5; assertEquals(expectedNumberOfUsers, userDAO.getLeaderboard(standardFilter).size()); } @Test @TestBootstrap("/bootstrap/users.json") public void cangetLeaderboardSmallFilter() { final int filter = 2; final int expectedNumberOfUsers = 2; assertEquals(expectedNumberOfUsers, userDAO.getLeaderboard(filter).size()); } @Test @TestBootstrap("/bootstrap/users.json") public void testOrder() { final int filter = 2; ArrayList<User> bestUsers = (ArrayList<User>) userDAO.getLeaderboard(filter); assertTrue(bestUsers.get(0).getPoints() > bestUsers.get(1).getPoints()); } @Test @TestBootstrap("/bootstrap/users.json") public void canIncrementPoints() { final int incrementAmount = 6; final int soundCloudId = 1; final User user = userDAO.findBySoundcloudId(soundCloudId); int oldscore = user.getPoints(); userDAO.incrementPoints(user, incrementAmount); assertEquals((oldscore + incrementAmount), user.getPoints()); } @Test @TestBootstrap("/bootstrap/users.json") public void canGetAll() { final int expectedNumberOfUsers = 5; assertEquals(expectedNumberOfUsers, userDAO.getAll().size()); } }