001 package org.hackystat.dailyprojectdata.resource.issue; 002 003 import static org.junit.Assert.assertEquals; 004 import javax.xml.datatype.XMLGregorianCalendar; 005 import org.hackystat.dailyprojectdata.client.DailyProjectDataClient; 006 import org.hackystat.dailyprojectdata.resource.issue.jaxb.IssueDailyProjectData; 007 import org.hackystat.dailyprojectdata.resource.issue.jaxb.IssueData; 008 import org.hackystat.dailyprojectdata.test.DailyProjectDataTestHelper; 009 import org.hackystat.sensorbase.client.SensorBaseClient; 010 import org.hackystat.sensorbase.resource.sensordata.jaxb.SensorDatas; 011 import org.hackystat.utilities.tstamp.Tstamp; 012 import org.junit.Test; 013 014 /** 015 * Test Issue REST API. 016 * @author Shaoxuan 017 * 018 */ 019 public class TestIssueRestApi extends DailyProjectDataTestHelper { 020 021 private static final String NEW = "New"; 022 private static final String STARTED = "Started"; 023 private static final String ACCEPTED = "Accepted"; 024 private static final String FIXED = "Fixed"; 025 private static final String DEFECT = "Defect"; 026 private static final String TASK = "Task"; 027 private static final String ENHANCEMENT = "Enhancement"; 028 private static final String MEDIUM = "Medium"; 029 private static final String HIGH = "High"; 030 private static final String CRITICAL = "Critical"; 031 032 private static final String dataOwner = "testDataOwner@hackystat.org"; 033 private static final String testUser1 = "tester1@hackystat.org"; 034 private static final String testUser2 = "tester2@hackystat.org"; 035 036 private static final String defaultProject = "Default"; 037 038 private static final String[] testData1T1 = {"21", DEFECT, ACCEPTED, MEDIUM, "", testUser1, 039 "2008-09-07T11:00:00"}; 040 private static final String[] testData1T2 = {"21", ENHANCEMENT, FIXED, MEDIUM, "8.4", testUser1, 041 "2008-09-07T11:00:00"}; 042 043 private static final String[] testData2T1 = {"23", ENHANCEMENT, ACCEPTED, MEDIUM, "", testUser1, 044 "2009-07-20T00:24:06"}; 045 private static final String[] testData2T2 = {"23", ENHANCEMENT, ACCEPTED, HIGH, "", testUser2, 046 "2009-07-20T00:24:06"}; 047 048 private static final String[] testData3T1 = {"14", ENHANCEMENT, NEW, HIGH, "", testUser2, 049 "2009-06-20T14:35:32"}; 050 051 private static final String[] testData4T1 = {"25", DEFECT, STARTED, CRITICAL, "8.4", testUser1, 052 "2009-07-21T20:00:00"}; 053 054 private static final String[] testData5T1 = {"18", TASK, FIXED, HIGH, "", testUser2, 055 "2009-07-21T18:00:00"}; 056 057 /** 058 * Constructor, prepare the test data. 059 * @throws Exception if error when making XMLGregorianCalendar timestamps. 060 */ 061 @Test public void testIssueRestApi() throws Exception { 062 XMLGregorianCalendar testTime1 = Tstamp.makeTimestamp("2009-07-20T00:00:00"); 063 XMLGregorianCalendar testTime2 = Tstamp.makeTimestamp("2009-07-22T00:00:00"); 064 // First, create a batch of Issue sensor data. 065 final SensorDatas batchData = new SensorDatas(); 066 batchData.getSensorData().add(TestIssueDataParser.makeIssueSensorData(dataOwner, 067 new String[][]{testData1T1, testData1T2}, 068 new XMLGregorianCalendar[]{testTime1, testTime2})); 069 batchData.getSensorData().add(TestIssueDataParser.makeIssueSensorData(dataOwner, 070 new String[][]{testData2T1, testData2T2}, 071 new XMLGregorianCalendar[]{testTime1, testTime2})); 072 batchData.getSensorData().add(TestIssueDataParser.makeIssueSensorData(dataOwner, 073 new String[][]{testData3T1}, new XMLGregorianCalendar[]{testTime1})); 074 batchData.getSensorData().add(TestIssueDataParser.makeIssueSensorData(dataOwner, 075 new String[][]{testData4T1}, new XMLGregorianCalendar[]{testTime2})); 076 batchData.getSensorData().add(TestIssueDataParser.makeIssueSensorData(dataOwner, 077 new String[][]{testData5T1}, new XMLGregorianCalendar[]{testTime2})); 078 079 // Connect to the sensorbase and register the DailyProjectDataDevEvent user. 080 SensorBaseClient.registerUser(getSensorBaseHostName(), dataOwner); 081 final SensorBaseClient client = 082 new SensorBaseClient(getSensorBaseHostName(), dataOwner, dataOwner); 083 client.authenticate(); 084 client.deleteSensorData(dataOwner); 085 // Send the sensor data to the SensorBase. 086 client.putSensorDataBatch(batchData); 087 088 // Now connect to the DPD server. 089 final DailyProjectDataClient dpdClient = 090 new DailyProjectDataClient(getDailyProjectDataHostName(), dataOwner, dataOwner); 091 dpdClient.authenticate(); 092 final IssueDailyProjectData issueT1 = dpdClient.getIssue(dataOwner, defaultProject, testTime1); 093 094 System.out.println("issue dpd for time 1"); 095 for (IssueData data : issueT1.getIssueData()) { 096 System.out.println("#" + data.getId() + "," + data.getType() + "," + data.getStatus()); 097 } 098 099 assertEquals("Checking total issues for time 1.", 3, issueT1.getIssueData().size()); 100 assertEquals("Checking open issues for time 1.", 3, issueT1.getOpenIssues()); 101 102 final IssueDailyProjectData issueT2 = dpdClient.getIssue(dataOwner, defaultProject, testTime2); 103 assertEquals("Checking total issues for time 2.", 5, issueT2.getIssueData().size()); 104 assertEquals("Checking open issues for time 2.", 3, issueT2.getOpenIssues()); 105 //assertEquals("Checking MemberData size", 1, devTime.getMemberData().size()); 106 107 final IssueDailyProjectData issueT3 = 108 dpdClient.getIssue(dataOwner, defaultProject, testTime2, "open"); 109 assertEquals("Checking open issues for time 2 with open status query.", 110 3, issueT3.getIssueData().size()); 111 assertEquals("Checking open issues count for time 2 with open status query.", 112 3, issueT3.getOpenIssues()); 113 114 final IssueDailyProjectData issueT4 = 115 dpdClient.getIssue(dataOwner, defaultProject, testTime2, "closed"); 116 assertEquals("Checking closed issues for time 2 with closed status query.", 117 2, issueT4.getIssueData().size()); 118 assertEquals("Checking open issues for time 2 with closed status query.", 119 0, issueT4.getOpenIssues()); 120 } 121 122 }