/**
* Copyright 2008-2016 Qualogy Solutions B.V.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.qualogy.qafe.service;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.apache.commons.io.FileUtils;
import com.qualogy.qafe.service.domain.DocumentOutput;
import com.qualogy.qafe.service.domain.DocumentParameter;
public class DocumentTest extends TestCase{
DocumentService dus = new DocumentServiceImpl();
public void testSimpleDocumentXLS(){
dus.processExcelUpload(getDocumentParameter("files/sample-excel.xls"));
}
public void testSimpleDocumentXLSWithoutHeader(){
DocumentParameter dp = getDocumentParameter("files/sample-excel.xls");
dp.setFirstFieldHeader(false);
dus.processExcelUpload(dp);
}
public void testSimpleDocumentXLSWithoutHeaderAndPits(){
DocumentParameter dp = getDocumentParameter("files/sample-excel-pits.xls");
dp.setFirstFieldHeader(true);
DocumentOutput docOutput = dus.processExcelUpload(dp);
String[][] refData = createReferenceData4SampleExcelPits();
validate(docOutput, refData);
}
public void testSimpleDocumentCSV(){
DocumentParameter dp = getDocumentParameter("files/sample-csv.xls");
dp.setFirstFieldHeader(false);
dp.setDelimiter("\t");
dus.processExcelUpload(dp);
}
public void testSimpleDocumentCSV3(){
DocumentParameter dp = getDocumentParameter("files/sample-csv.xls");
dp.setFirstFieldHeader(true);
dp.setDelimiter("\t");
dus.processExcelUpload(dp);
}
public void testSimpleDocumentCSV2(){
DocumentParameter dp = getDocumentParameter("files/sample-excelplain.csv");
dp.setFirstFieldHeader(false);
dp.setDelimiter(";");
dus.processExcelUpload(dp);
}
public void testSimpleDocumentXLS2007(){
dus.processExcelUpload(getDocumentParameter("files/sample-excel2007.xlsx"));
}
public void testSimpleDocumentXLS2007WithoutHeader(){
DocumentParameter dp = getDocumentParameter("files/sample-excel2007.xlsx");
dp.setFirstFieldHeader(false);
dus.processExcelUpload(dp);
}
private void validate(DocumentOutput docOutput, String[][] refData) {
List<Map<String,String>> data = docOutput.getData();
for (int i=0; i<data.size(); i++) {
Map<String,String> row = data.get(i);
int colIndex = 0;
Iterator<String> itr = row.keySet().iterator();
while (itr.hasNext()) {
String key = itr.next();
String value = row.get(key);
String refValue = refData[i][colIndex];
if (refValue == null) {
assertNull(value);
} else {
assertTrue(refValue.equalsIgnoreCase(value));
}
colIndex++;
}
}
}
private String[][] createReferenceData4SampleExcelPits() {
String[][] refData = new String[6][3];
refData[0][0] = "beta release begin september";
refData[0][1] = "target is nu begin december. On going";
refData[0][2] = "01-dec-2008";
refData[1][0] = "QAFE Release 2";
refData[1][1] = null;
refData[1][2] = "Mei 2009";
refData[2][0] = "QAFE Release 3";
refData[2][1] = null;
refData[2][2] = "Sept-2009";
refData[3][0] = "QAFE Release 4";
refData[3][1] = null;
refData[3][2] = "Dec 2009";
refData[4][0] = "Dynamic WebService Creation for External parties";
refData[4][1] = "Analyse moet nog beginnen";
refData[4][2] = "Sept-2009";
refData[5][0] = "Geavanceerde tooling";
refData[5][1] = "Volgende generatie tooling voor QAFE";
refData[5][2] = "Nov 2009";
return refData;
}
private byte[] readFile(String fileName){
File f = new File(fileName);
try {
return FileUtils.readFileToByteArray(f);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
DocumentParameter getDocumentParameter(String file){
byte[] bytes = readFile(file);
DocumentParameter dp = new DocumentParameter();
dp.setData(bytes);
return dp;
}
}