package net.johnpwood.android.standuptimer.test.dao;
import java.util.List;
import net.johnpwood.android.standuptimer.dao.DuplicateTeamException;
import net.johnpwood.android.standuptimer.dao.InvalidTeamNameException;
import net.johnpwood.android.standuptimer.dao.TeamDAO;
import net.johnpwood.android.standuptimer.model.Team;
import android.test.AndroidTestCase;
import android.test.RenamingDelegatingContext;
import android.test.suitebuilder.annotation.MediumTest;
public class TeamDAOTest extends AndroidTestCase {
private TeamDAO dao = null;
@Override
protected void setUp() {
dao = new TeamDAO(new RenamingDelegatingContext(mContext, "test_"));
}
@Override
protected void tearDown() {
dao.deleteAll();
dao.close();
}
@MediumTest
public void test_create_a_team() {
Team team = new Team("Test Team");
team = dao.save(team);
assertNotNull(team.getId());
assertEquals("Test Team", team.getName());
}
@MediumTest
public void test_create_a_team_with_an_apostrophy_in_the_name() {
Team team = new Team("John's Team");
team = dao.save(team);
assertNotNull(team.getId());
assertEquals("John's Team", team.getName());
}
@MediumTest
public void test_find_a_team_by_id() {
Team team = new Team("Another Test Team");
team = dao.save(team);
Team foundTeam = dao.findById(team.getId());
assertEquals(team.getId(), foundTeam.getId());
assertEquals(team.getName(), foundTeam.getName());
}
@MediumTest
public void test_find_all_can_retrieve_all_teams() {
dao.save(new Team("Test Team 1"));
dao.save(new Team("Test Team 2"));
dao.save(new Team("Test Team 3"));
dao.save(new Team("Test Team 4"));
List<String> teams = dao.findAllTeamNames();
assertEquals(4, teams.size());
}
@MediumTest
public void test_can_find_a_team_by_name() {
dao.save(new Team("Test Team 1"));
Team team = dao.findByName("Test Team 1");
assertEquals("Test Team 1", team.getName());
assertNotNull(team.getId());
}
@MediumTest
public void test_find_by_team_returns_null_if_team_cannot_be_found() {
Team team = dao.findByName("Blah Blah Blah");
assertNull(team);
}
@MediumTest
public void test_cannot_create_a_team_with_a_name_that_already_exists() {
dao.save(new Team("Test Team 1"));
try {
dao.save(new Team("Test Team 1"));
assertTrue("Should have thrown an exception", false);
} catch (DuplicateTeamException e) {
assertTrue(true);
}
}
@MediumTest
public void test_cannot_create_a_team_with_an_empty_name() {
try {
dao.save(new Team(""));
assertTrue("Should have thrown an exception", false);
} catch (InvalidTeamNameException e) {
assertTrue(true);
}
try {
dao.save(new Team(" "));
assertTrue("Should have thrown an exception", false);
} catch (InvalidTeamNameException e) {
assertTrue(true);
}
}
@MediumTest
public void test_can_update_an_existing_team() {
Team team1 = dao.save(new Team("Test Team 1"));
dao.save(new Team(team1.getId(), "Test Team 2"));
Team team = dao.findById(team1.getId());
assertEquals("Test Team 2", team.getName());
}
@MediumTest
public void test_can_delete_a_team() {
Team team = dao.save(new Team("Test Team 1"));
assertEquals(1, dao.findAllTeamNames().size());
dao.delete(team);
assertEquals(0, dao.findAllTeamNames().size());
}
}