package in.partake.model.dao.access; import in.partake.app.PartakeApp; import in.partake.base.DateTime; import in.partake.base.PartakeException; import in.partake.base.TimeUtil; import in.partake.model.IPartakeDAOs; import in.partake.model.access.DBAccess; import in.partake.model.dao.DAOException; import in.partake.model.dao.PartakeConnection; import in.partake.model.dao.access.IUserTicketAccess; import in.partake.model.dto.UserTicket; import in.partake.model.dto.auxiliary.AttendanceStatus; import in.partake.model.dto.auxiliary.ModificationStatus; import in.partake.model.dto.auxiliary.ParticipationStatus; import java.util.List; import java.util.UUID; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestName; public class UserTicketAccessTest extends AbstractDaoTestCaseBase<IUserTicketAccess, UserTicket, String> { @Rule public TestName name = new TestName(); @Before public void setup() throws Exception { super.setup(PartakeApp.getDBService().getDAOs().getEnrollmentAccess()); } @Override protected UserTicket create(long pkNumber, String pkSalt, int objNumber) { return new UserTicket( new UUID(("id" + pkSalt).hashCode(), pkNumber).toString(), "userId" + pkSalt + pkNumber, new UUID(0, 0), "eventId" + pkSalt + pkNumber, "comment" + objNumber, ParticipationStatus.ENROLLED, ModificationStatus.CHANGED, AttendanceStatus.UNKNOWN, null, new DateTime(1L), new DateTime(1L), new DateTime(1L)); } @Test public void testGetEmptyPaticipationList() throws Exception { new DBAccess<Void>() { @Override protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException { UUID ticketId = UUID.randomUUID(); List<UserTicket> list = dao.findByTicketId(con, ticketId, 0, 1); Assert.assertTrue(list.isEmpty()); return null; } }.execute(); } @Test public void testPutAndGetPaticipationList() throws Exception { new DBAccess<Void>() { @Override protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException { ParticipationStatus status = ParticipationStatus.ENROLLED; String id = UUID.randomUUID().toString(); String eventId = UUID.randomUUID().toString(); UUID ticketId = UUID.randomUUID(); String userId = UUID.randomUUID().toString(); { con.beginTransaction(); dao.put(con, new UserTicket(id, userId, ticketId, eventId, "", ParticipationStatus.ENROLLED, ModificationStatus.CHANGED, AttendanceStatus.UNKNOWN, null, TimeUtil.getCurrentDateTime(), TimeUtil.getCurrentDateTime(), null)); con.commit(); } List<UserTicket> list = dao.findByTicketId(con, ticketId, 0, Integer.MAX_VALUE); Assert.assertEquals(1, list.size()); UserTicket storedParticipation = list.get(0); Assert.assertNotNull(storedParticipation); Assert.assertEquals(userId, storedParticipation.getUserId()); Assert.assertEquals(ModificationStatus.CHANGED, storedParticipation.getModificationStatus()); Assert.assertEquals(status, storedParticipation.getStatus()); return null; } }.execute(); } @Test public void testPutAndUpdatePaticipationList() throws Exception { new DBAccess<Void>() { @Override protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException { String id = UUID.randomUUID().toString(); String userId = UUID.randomUUID().toString(); String eventId = UUID.randomUUID().toString(); UUID ticketId = UUID.randomUUID(); // create { con.beginTransaction(); dao.put(con, new UserTicket(id, userId, ticketId, eventId, "comment", ParticipationStatus.ENROLLED, ModificationStatus.CHANGED, AttendanceStatus.UNKNOWN, null, TimeUtil.getCurrentDateTime(), TimeUtil.getCurrentDateTime(), null)); con.commit(); } // update { con.beginTransaction(); List<UserTicket> storedList = dao.findByTicketId(con, ticketId, 0, Integer.MAX_VALUE); UserTicket storedParticipation = storedList.get(0); Assert.assertNotNull(storedParticipation); ModificationStatus newStatus = ModificationStatus.NOT_ENROLLED; Assert.assertFalse(newStatus.equals(storedParticipation.getModificationStatus())); UserTicket newStoredParticipation = new UserTicket(storedParticipation); newStoredParticipation.setModificationStatus(ModificationStatus.CHANGED); dao.put(con, newStoredParticipation); con.commit(); } // get { con.beginTransaction(); List<UserTicket> updatedList = dao.findByTicketId(con, ticketId, 0, Integer.MAX_VALUE); Assert.assertEquals(1, updatedList.size()); UserTicket updatedParticipation = updatedList.get(0); Assert.assertEquals(userId, updatedParticipation.getUserId()); Assert.assertEquals(ModificationStatus.CHANGED, updatedParticipation.getModificationStatus()); Assert.assertEquals(ParticipationStatus.ENROLLED, updatedParticipation.getStatus()); con.commit(); } return null; } }.execute(); } }