package net.codjo.control.gui.plugin;
import net.codjo.agent.UserId;
import net.codjo.control.gui.data.QuarantineGuiData;
import net.codjo.control.gui.data.QuarantineGuiDataList;
import net.codjo.mad.common.structure.StructureReader;
import net.codjo.mad.common.structure.TableStructure;
import net.codjo.mad.common.structure.DefaultStructureReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import junit.framework.TestCase;
/**
*/
public abstract class QuarantineComplianceTestCase extends TestCase {
private String quarantineResource = "/conf/quarantine.xml";
private String structureResource = "/conf/structure.xml";
protected List<String> hiddenFields = new ArrayList<String>();
protected QuarantineComplianceTestCase() {
}
protected QuarantineComplianceTestCase(String quarantineResource, String structureResource) {
this.quarantineResource = quarantineResource;
this.structureResource = structureResource;
}
public void test_integrity() throws Exception {
QuarantineManager manager = new QuarantineManager(getClass().getResource(quarantineResource),
UserId.createId("user_dev", "samsung"));
QuarantineGuiDataList list = manager.getList();
File structure = new File(getClass().getResource(structureResource).getFile());
StructureReader structureReader = new DefaultStructureReader(new FileReader(structure));
for (QuarantineGuiData guiData : list.getDataList()) {
TableStructure table = structureReader.getTableBySqlName(guiData.getQuarantine());
compare(table, guiData);
}
}
private void compare(TableStructure table, QuarantineGuiData guiData)
throws Exception {
Collection fieldsInGui = guiData.getDetail().getFields();
if (fieldsInGui != null) {
for (Object field : table.getFieldsByJavaKey().keySet()) {
if ("quarantineId".equals(field)) {
continue;
}
else if (hiddenFields.contains(field.toString())) {
continue;
}
assertTrue("Le champ " + field
+ " de la Quarantaine devrait etre affich� dans l'�cran d�tail >"
+ guiData.getName() + "<", fieldsInGui.contains(field));
}
}
}
}