package net.johnpwood.android.standuptimer.test.model;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import net.johnpwood.android.standuptimer.dao.DAOFactory;
import net.johnpwood.android.standuptimer.dao.DatabaseConstants;
import net.johnpwood.android.standuptimer.dao.TeamDAO;
import net.johnpwood.android.standuptimer.model.Meeting;
import net.johnpwood.android.standuptimer.model.MeetingStats;
import net.johnpwood.android.standuptimer.model.Team;
import android.test.AndroidTestCase;
import android.test.RenamingDelegatingContext;
import android.test.suitebuilder.annotation.MediumTest;
public class TeamTest extends AndroidTestCase implements DatabaseConstants {
private TeamDAO dao = null;
private DAOFactory daoFactory = DAOFactory.getInstance();
@Override
protected void setUp() {
daoFactory.setGlobalContext(new RenamingDelegatingContext(mContext, "test_"));
daoFactory.setCacheDAOInstances(true);
dao = daoFactory.getTeamDAO(mContext);
}
@Override
protected void tearDown() {
dao.deleteAll();
dao.close();
}
@MediumTest
public void test_create_a_team() {
Team team = Team.create("Test Team", mContext);
assertNotNull(team.getId());
}
@MediumTest
public void test_delete_a_team() {
Team team = Team.create("Test Team", mContext);
assertEquals(1, Team.findAllTeamNames(mContext).size());
team.delete(mContext);
assertEquals(0, Team.findAllTeamNames(mContext).size());
}
@MediumTest
public void test_deleting_a_team_deletes_its_meetings_as_well() {
Team team = Team.create("Test Team", mContext);
new Meeting(team, new GregorianCalendar(2010, 1, 5, 10, 15, 0).getTime(), 5, 240, 300, 30, 120).save(mContext);
new Meeting(team, new GregorianCalendar(2010, 1, 4, 10, 15, 0).getTime(), 5, 240, 300, 30, 120).save(mContext);;
assertFalse(Meeting.findAllByTeam(team, mContext).isEmpty());
team.delete(mContext);
assertEquals(0, Team.findAllTeamNames(mContext).size());
assertTrue(Meeting.findAllByTeam(team, mContext).isEmpty());
}
@MediumTest
public void test_find_a_team_by_name() {
Team.create("Test Team", mContext);
assertNotNull(Team.findByName("Test Team", mContext));
}
@MediumTest
public void test_find_all_team_names() {
Team.create("Test Team 1", mContext);
Team.create("Test Team 2", mContext);
Team.create("Test Team 3", mContext);
List<String> teamNames = Team.findAllTeamNames(mContext);
assertEquals(3, teamNames.size());
assertTrue(teamNames.contains("Test Team 1"));
assertTrue(teamNames.contains("Test Team 2"));
assertTrue(teamNames.contains("Test Team 3"));
}
@MediumTest
public void test_get_average_meeting_stats() {
Team team = Team.create("Test Team", mContext);
Date dateTime = new GregorianCalendar(2010, 1, 5, 10, 15, 0).getTime();
new Meeting(team, dateTime, 5, 301, 343, 30, 65).save(mContext);
new Meeting(team, dateTime, 8, 534, 550, 32, 120).save(mContext);
new Meeting(team, dateTime, 2, 234, 300, 23, 122).save(mContext);
new Meeting(team, dateTime, 3, 765, 765, 15, 78).save(mContext);
new Meeting(team, dateTime, 9, 444, 445, 10, 93).save(mContext);
MeetingStats averageStats = team.getAverageMeetingStats(mContext);
assertEquals(5.4f, averageStats.getNumParticipants());
assertEquals(455.6f, averageStats.getIndividualStatusLength());
assertEquals(480.6f, averageStats.getMeetingLength());
assertEquals(22f, averageStats.getQuickestStatus());
assertEquals(95.6f, averageStats.getLongestStatus());
}
@MediumTest
public void test_has_meetings() {
Team team = Team.create("Test Team No Meetings", mContext);
assertFalse(team.hasMeetings(mContext));
new Meeting(team, new GregorianCalendar(2010, 1, 5, 10, 15, 0).getTime(), 5, 301, 343, 30, 65).save(mContext);
assertTrue(team.hasMeetings(mContext));
}
}