// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dq.helper;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.talend.commons.utils.WorkspaceUtils;
import org.talend.core.model.properties.PropertiesFactory;
import org.talend.core.model.properties.Property;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.dq.helper.ReportFileHelper.ReportListParameters;
import org.talend.resource.ResourceManager;
import org.talend.utils.string.StringUtilities;
import org.talend.utils.sugars.ReturnCode;
/**
* DOC xqliu class global comment. Detailled comment
*/
public class ReportUtilsRealTest {
private IProject realProject = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
// do something here
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
// do something here
}
@Before
public void setUp() throws Exception {
realProject = ResourceManager.getRootProject();
}
@After
public void tearDown() throws Exception {
// do something here
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#getTheLatestReport(org.eclipse.core.resources.IFile)}.
*
* @throws Exception
*/
@Test
public void testGetTheLatestReport() throws Exception {
if (this.realProject != null) {
String folderName1 = ERepositoryObjectType.TDQ_DATA_PROFILING.getFolder();
String folderName2 = ERepositoryObjectType.TDQ_REPORT_ELEMENT.getFolder();
String reportName = "B" + StringUtilities.getRandomString(7); //$NON-NLS-1$
UnitTestBuildHelper.createRealFolder(this.realProject, folderName1);
IFolder folder2 = UnitTestBuildHelper.createRealFolder(this.realProject, folderName2);
IFile iFile = UnitTestBuildHelper.createRealFile(folder2, reportName + "_0.1.rep"); //$NON-NLS-1$
assertTrue(iFile.exists());
assertTrue(WorkspaceUtils.ifileToFile(iFile).exists());
ReportFileHelper.recordReportFiles(iFile, "s-20141011-1801-00013", "..s-20141011-1801-00013.pdf", //$NON-NLS-1$ //$NON-NLS-2$
1);
ReportFileHelper.recordReportFiles(iFile, "s-20141011-1802-00026", "..s-20141011-1802-00026.pdf", //$NON-NLS-1$ //$NON-NLS-2$
2);
ReportFileHelper.recordReportFiles(iFile, "s-20141011-1809-00004", "..s-20141011-1809-00004.pdf", //$NON-NLS-1$ //$NON-NLS-2$
3);
ReportListParameters lastest = ReportFileHelper.getTheLatestReport(iFile);
assertNotNull(lastest);
Assert.assertEquals("s-20141011-1809-00004", lastest.getName()); //$NON-NLS-1$
} else {
fail("project is null!"); //$NON-NLS-1$
}
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#getReportListFile(org.eclipse.core.resources.IFile)}.
*/
@Test
public void testGetReportListFile() {
if (this.realProject != null) {
String folderName1 = ERepositoryObjectType.TDQ_DATA_PROFILING.getFolder();
String folderName2 = ERepositoryObjectType.TDQ_REPORT_ELEMENT.getFolder();
String reportName = "B" + StringUtilities.getRandomString(7); //$NON-NLS-1$
UnitTestBuildHelper.createRealFolder(this.realProject, folderName1);
IFolder folder2 = UnitTestBuildHelper.createRealFolder(this.realProject, folderName2);
IFile iFile = UnitTestBuildHelper.createRealFile(folder2, reportName + "_0.1.rep"); //$NON-NLS-1$
assertTrue(iFile.exists());
assertTrue(WorkspaceUtils.ifileToFile(iFile).exists());
File reportListFile = ReportFileHelper.getReportListFile(iFile);
assertTrue(reportListFile.exists());
} else {
fail("project is null!"); //$NON-NLS-1$
}
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#getSimpleName(java.lang.String)}.
*/
@Test
public void testGetSimpleName() {
String reportName = "B" + StringUtilities.getRandomString(7) + "_0.1"; //$NON-NLS-1$ //$NON-NLS-2$
String reportFileName = reportName + ".rep"; //$NON-NLS-1$
String simpleName = ReportFileHelper.getSimpleName(reportFileName);
assertTrue(reportName.equals(simpleName));
reportName = "B" + StringUtilities.getRandomString(7); //$NON-NLS-1$
simpleName = ReportFileHelper.getSimpleName(reportName);
assertNull(simpleName);
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#getSimpleName(org.talend.core.model.properties.Property)} .
*/
@Test
public void testGetSimpleName2() {
Property prop = PropertiesFactory.eINSTANCE.createProperty();
String label = "label"; //$NON-NLS-1$
String version = "0.1"; //$NON-NLS-1$
prop.setLabel(label);
prop.setVersion(version);
String simpleName = ReportFileHelper.getSimpleName(prop);
assertTrue(simpleName.equals(label + "_" + version)); //$NON-NLS-1$
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#initRepListFile(org.eclipse.core.resources.IFile)} .
*/
@Test
public void testInitRepListFile() {
if (this.realProject != null) {
String folderName1 = ERepositoryObjectType.TDQ_DATA_PROFILING.getFolder();
String folderName2 = ERepositoryObjectType.TDQ_REPORT_ELEMENT.getFolder();
String reportName = "B" + StringUtilities.getRandomString(7); //$NON-NLS-1$
UnitTestBuildHelper.createRealFolder(this.realProject, folderName1);
IFolder folder2 = UnitTestBuildHelper.createRealFolder(this.realProject, folderName2);
IFile iFile = UnitTestBuildHelper.createRealFile(folder2, reportName + "_0.1.rep"); //$NON-NLS-1$
assertTrue(iFile.exists());
assertTrue(WorkspaceUtils.ifileToFile(iFile).exists());
IFolder iFolder = UnitTestBuildHelper.createRealFolder(folder2, ReportFileHelper.getOutputFolder(iFile).getFullPath()
.lastSegment());
assertTrue(iFolder.exists());
assertTrue(WorkspaceUtils.ifolderToFile(iFolder).exists());
try {
File repListFile = ReportFileHelper.getReportListFile(iFile);
assertTrue(repListFile.exists());
ReportFileHelper.initRepListFile(iFile);
assertTrue(repListFile.length() > 0);
} catch (Exception e) {
fail(e.getMessage());
}
} else {
fail("project is null!"); //$NON-NLS-1$
}
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#deleteRepOutputFolder(org.eclipse.core.resources.IFile)} .
*/
@Test
public void testDeleteRepOutputFolder() {
if (this.realProject != null) {
String folderName1 = ERepositoryObjectType.TDQ_DATA_PROFILING.getFolder();
String folderName2 = ERepositoryObjectType.TDQ_REPORT_ELEMENT.getFolder();
String reportName = "B" + StringUtilities.getRandomString(7); //$NON-NLS-1$
UnitTestBuildHelper.createRealFolder(this.realProject, folderName1);
IFolder folder2 = UnitTestBuildHelper.createRealFolder(this.realProject, folderName2);
IFile iFile = UnitTestBuildHelper.createRealFile(folder2, reportName + "_0.1.rep"); //$NON-NLS-1$
assertTrue(iFile.exists());
assertTrue(WorkspaceUtils.ifileToFile(iFile).exists());
IFolder iFolder = UnitTestBuildHelper.createRealFolder(folder2, ReportFileHelper.getOutputFolder(iFile).getFullPath()
.lastSegment());
assertTrue(iFolder.exists());
assertTrue(WorkspaceUtils.ifolderToFile(iFolder).exists());
try {
ReportFileHelper.getReportListFile(iFile);
File outputFolder = WorkspaceUtils.ifolderToFile(ReportFileHelper.getOutputFolder(iFile));
assertTrue(outputFolder.exists() && outputFolder.isDirectory());
ReturnCode rc = ReportFileHelper.deleteRepOutputFolder(iFile);
assertTrue(rc.isOk());
assertFalse(outputFolder.exists());
} catch (Exception e) {
fail(e.getMessage());
}
} else {
fail("project is null!"); //$NON-NLS-1$
}
}
/**
* Test method for {@link org.talend.dq.helper.ReportFileHelper#getReportListParameters(java.io.File)} .
*/
@Test
public void testGetReportListParameters() {
try {
File file = new File("./file.txt");
if (file.exists()) {
file.delete();
}
if (file.createNewFile()) {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)));
out.println("\"Name\"\t\"Path\"\t\"CreateTime\"");
out.println("\"a1-20160624-1847-00059\"\t\"..a1-20160624-1847-00059.pdf\"\t\"1466765283837\"");
out.println("\"a2-20160624-1947-00095\"\t\"..a2-20160624-1947-00095.pdf\"\t\"1466795093537\"");
out.close();
List<ReportListParameters> reportListParameters = ReportFileHelper.getReportListParameters(file);
String params = "";
int i = 0;
for (ReportListParameters p : reportListParameters) {
i++;
params += i + ":";
params += "[" + p.getName() + "," + p.getPath() + "," + p.getCreateTime() + "]";
}
Assert.assertEquals(
"1:[a1-20160624-1847-00059,..a1-20160624-1847-00059.pdf,1466765283837]2:[a2-20160624-1947-00095,..a2-20160624-1947-00095.pdf,1466795093537]",
params);
}
if (file.exists()) {
file.delete();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}