package net.johnpwood.android.standuptimer.test;
import java.util.GregorianCalendar;
import net.johnpwood.android.standuptimer.MeetingDetails;
import net.johnpwood.android.standuptimer.R;
import net.johnpwood.android.standuptimer.dao.DAOFactory;
import net.johnpwood.android.standuptimer.dao.MeetingDAO;
import net.johnpwood.android.standuptimer.dao.TeamDAO;
import net.johnpwood.android.standuptimer.model.Meeting;
import net.johnpwood.android.standuptimer.model.Team;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.test.ActivityInstrumentationTestCase2;
import android.test.RenamingDelegatingContext;
import android.test.TouchUtils;
import android.test.suitebuilder.annotation.MediumTest;
import android.view.KeyEvent;
import android.widget.TextView;
public class MeetingDetailsTest extends ActivityInstrumentationTestCase2<MeetingDetails> {
private MeetingDetails a = null;
private MeetingDAO meetingDao = null;
private TeamDAO teamDao = null;
private Meeting meetingToDelete = null;
private DAOFactory daoFactory = DAOFactory.getInstance();
public MeetingDetailsTest() {
super("net.johnpwood.android.standuptimer", MeetingDetails.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
daoFactory.setCacheDAOInstances(true);
createTestData();
Intent intent = new Intent();
intent.putExtra("teamName", meetingToDelete.getTeam().getName());
intent.putExtra("meetingTime", meetingToDelete.getDescription());
setActivityIntent(intent);
a = getActivity();
daoFactory.setGlobalContext(new RenamingDelegatingContext(a, "test_"));
meetingDao = daoFactory.getMeetingDAO(a);
teamDao = daoFactory.getTeamDAO(a);
}
@Override
protected void tearDown() throws Exception {
meetingDao.deleteAll();
teamDao.deleteAll();
super.tearDown();
}
@MediumTest
public void test_stats_tab_should_show_stats_for_the_meeting() {
assertEquals("Test Team", ((TextView) a.findViewById(R.id.meeting_details_team_name)).getText());
assertEquals("01/07/2010 10:16:00am", ((TextView) a.findViewById(R.id.meeting_time)).getText());
assertEquals("2", ((TextView) a.findViewById(R.id.number_of_participants)).getText());
assertEquals("3:54", ((TextView) a.findViewById(R.id.individual_status_length)).getText());
assertEquals("5:00", ((TextView) a.findViewById(R.id.meeting_length)).getText());
assertEquals("0:23", ((TextView) a.findViewById(R.id.quickest_status)).getText());
assertEquals("2:02", ((TextView) a.findViewById(R.id.longest_status)).getText());
}
@MediumTest
public void test_can_delete_an_existing_meeting() {
sendKeys(KeyEvent.KEYCODE_MENU, KeyEvent.KEYCODE_D);
TouchUtils.clickView(this, a.getConfirmDeleteMeetingDialog().getButton(AlertDialog.BUTTON_POSITIVE));
assertNull(meetingDao.findById(meetingToDelete.getId()));
}
@MediumTest
public void test_deleting_a_team_can_be_aborted() {
sendKeys(KeyEvent.KEYCODE_MENU, KeyEvent.KEYCODE_D);
TouchUtils.clickView(this, a.getConfirmDeleteMeetingDialog().getButton(AlertDialog.BUTTON_NEGATIVE));
assertNotNull(meetingDao.findById(meetingToDelete.getId()));
}
private void createTestData() {
Context context = new RenamingDelegatingContext(getInstrumentation().getTargetContext(), "test_");
TeamDAO teamFixturesDao = daoFactory.getTeamDAO(context);
MeetingDAO meetingFixturesDao = daoFactory.getMeetingDAO(context);
Team team = teamFixturesDao.save(new Team("Test Team"));
meetingFixturesDao.save(new Meeting(team, new GregorianCalendar(2010, 0, 5, 10, 15, 0).getTime(), 5, 301, 343, 30, 65));
meetingFixturesDao.save(new Meeting(team, new GregorianCalendar(2010, 0, 6, 10, 17, 0).getTime(), 8, 534, 550, 32, 120));
meetingToDelete = meetingFixturesDao.save(new Meeting(team, new GregorianCalendar(2010, 0, 7, 10, 16, 0).getTime(), 2, 234, 300, 23, 122));
meetingFixturesDao.save(new Meeting(team, new GregorianCalendar(2010, 0, 8, 10, 14, 0).getTime(), 3, 765, 765, 15, 78));
meetingFixturesDao.save(new Meeting(team, new GregorianCalendar(2010, 0, 9, 10, 12, 0).getTime(), 9, 444, 445, 10, 93));
}
}