package hk.hku.cecid.edi.sfrm.com; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.util.Collection; import java.util.Iterator; import hk.hku.cecid.piazza.commons.test.SystemComponentTest; import hk.hku.cecid.edi.sfrm.com.PackagedPayloadsRepository; import hk.hku.cecid.piazza.commons.test.utils.ResSetter; public class PackagedPayloadsRepositoryTest extends SystemComponentTest<PackagedPayloadsRepository> { private PackagedPayloadsRepository repo; private ResSetter res; private int numOfPayloads = 2; private int numOfReadyPayloads = 2; @Override public String getSystemComponentId() { return "outgoing-payload-repository"; } public void setUp() throws Exception{ res = new ResSetter(this.getClass()); res.restore(); repo = (PackagedPayloadsRepository)TARGET; } public void tearDown() throws Exception{ res.clean(); } @Test public void testFindingRepository() throws Exception{ Assert.assertNotNull("Repository should not be null", repo.getRepository()); } /** * Test number of payload in repository * @throws Exception */ @Test public void testGetPayloads() throws Exception{ Collection payloads = repo.getPayloads(); Assert.assertEquals("Number of payloads should be " + Integer.toString(numOfPayloads) + " but " + Integer.toString(payloads.size()), numOfPayloads, payloads.size()); } /** * Test whether it can retreive the payload that is ready to send * @throws Exception */ @Test public void testGetReadyPayloads() throws Exception{ Collection payloads = repo.getReadyPayloads(); //Check the number of ready to send payload Assert.assertEquals("Number of ready to send payload should be " + Integer.toString(numOfReadyPayloads) + ", but it is " + Integer.toString(payloads.size()), 2, payloads.size()); Iterator iter = payloads.iterator(); while(iter.hasNext()){ PackagedPayloads pp = (PackagedPayloads) iter.next(); Assert.assertEquals("packaged payload partnership_id is not 'partnership'", "partnership", pp.getPartnershipId()); Assert.assertTrue("Message id not match", (pp.getRefMessageId().equals("msg_id_1") || pp.getRefMessageId().equals("msg_id_2"))); } } /** * Test creating a processing payload * @throws Exception */ @Test public void testCreateProcessingPayload() throws Exception{ String partner = "partnerC"; String msg = "msg3"; PackagedPayloads pp = (PackagedPayloads) repo.createPayloads(new Object[]{"partnerC", "msg3"}, PayloadsState.PLS_PROCESSING); Assert.assertEquals("Partnership id not match", partner, pp.getPartnershipId()); Assert.assertEquals("Message id not match", msg, pp.getRefMessageId()); } /** * Test renaming the payload to processed status * @throws Exception */ @Test public void testRenamePayloadToProcessed() throws Exception{ NamedPayloads pp = repo.getPayload("partnership$msg_id_1.sfrm"); boolean flag = pp.setToProcessed(); Assert.assertTrue("Fail on renaming the payload to processing", flag); File fileProcessed = new File(repo.getRepository(), "%%partnership$msg_id_1.sfrm"); File fileReady = new File(repo.getRepository(), "partnership$msg_id_1.sfrm"); Assert.assertFalse("The ready to payload still existing", fileReady.exists()); Assert.assertTrue("Renamed processing payload didn't exist", fileProcessed.exists()); } /** * Test renaming the payload to processing status * @throws Exception */ @Test public void testRenamePayloadToProcessing() throws Exception{ NamedPayloads pp = repo.getPayload("partnership$msg_id_1.sfrm"); boolean flag = pp.setToProcessing(); Assert.assertTrue("Fail on renaming the payload to processing", flag); File fileProcessing = new File(repo.getRepository(), "##partnership$msg_id_1.sfrm"); File fileReady = new File(repo.getRepository(), "partnership$msg_id_1.sfrm"); Assert.assertFalse("The ready to payload still existing", fileReady.exists()); Assert.assertTrue("Renamed processing payload didn't exist", fileProcessing.exists()); } }