package com.constellio.app.modules.rm.model.labelTemplate; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; import org.jdom2.Document; import org.jdom2.input.SAXBuilder; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplateField.LabelTemplateFieldHorizontalAlignment; import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplateField.LabelTemplateFieldVerticalAlignment; import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplateManagerRuntimeException.LabelTemplateManagerRuntimeException_CannotCreateLabelTemplate; import com.constellio.app.modules.rm.reports.model.labels.LabelsReportLayout; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.data.dao.managers.config.ConfigManager; import com.constellio.sdk.tests.ConstellioTest; public class LabelTemplateManagerAcceptanceTest extends ConstellioTest { private static final String LABELS_TEMPLATES_FOLDER = "/labelTemplates"; LabelTemplateManager labelTemplateManager; ConfigManager configManager; @Before public void setUp() throws Exception { configManager = getDataLayerFactory().getConfigManager(); labelTemplateManager = getAppLayerFactory().getLabelTemplateManager(); } @Test public void givenNoLabelTemplateWhenListTemplatesThenReturnDefaultLabels() throws Exception { List<LabelTemplate> labelTemplates = labelTemplateManager.listTemplates(Folder.SCHEMA_TYPE); assertThat(labelTemplates).hasSize(8); assertThat(labelTemplates.get(0).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(0).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(0).getLines()).isEqualTo(11); assertThat(labelTemplates.get(0).getKey()).isEqualTo("FOLDER_RIGHT_AVERY_5159"); assertThat(labelTemplates.get(0).getName()).isEqualTo("Code de plan justifié à droite (Avery 5159)"); assertThat(labelTemplates.get(0).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5159); assertThat(labelTemplates.get(0).getFields()).hasSize(5); assertThat(labelTemplates.get(1).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(1).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(1).getLines()).isEqualTo(11); assertThat(labelTemplates.get(1).getKey()).isEqualTo("FOLDER_RIGHT_AVERY_5161"); assertThat(labelTemplates.get(1).getName()).isEqualTo("Code de plan justifié à droite (Avery 5161)"); assertThat(labelTemplates.get(1).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5161); assertThat(labelTemplates.get(1).getFields()).hasSize(5); assertThat(labelTemplates.get(2).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(2).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(2).getLines()).isEqualTo(10); assertThat(labelTemplates.get(2).getKey()).isEqualTo("FOLDER_RIGHT_AVERY_5162"); assertThat(labelTemplates.get(2).getName()).isEqualTo("Code de plan justifié à droite (Avery 5162)"); assertThat(labelTemplates.get(2).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5162); assertThat(labelTemplates.get(2).getFields()).hasSize(5); assertThat(labelTemplates.get(3).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(3).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(3).getLines()).isEqualTo(17); assertThat(labelTemplates.get(3).getKey()).isEqualTo("FOLDER_RIGHT_AVERY_5163"); assertThat(labelTemplates.get(3).getName()).isEqualTo("Code de plan justifié à droite (Avery 5163)"); assertThat(labelTemplates.get(3).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5163); assertThat(labelTemplates.get(3).getFields()).hasSize(6); assertThat(labelTemplates.get(4).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(4).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(4).getLines()).isEqualTo(11); assertThat(labelTemplates.get(4).getKey()).isEqualTo("FOLDER_LEFT_AVERY_5159"); assertThat(labelTemplates.get(4).getName()).isEqualTo("Code de plan justifié à gauche (Avery 5159)"); assertThat(labelTemplates.get(4).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5159); assertThat(labelTemplates.get(4).getFields()).hasSize(5); assertThat(labelTemplates.get(5).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(5).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(5).getLines()).isEqualTo(11); assertThat(labelTemplates.get(5).getKey()).isEqualTo("FOLDER_LEFT_AVERY_5161"); assertThat(labelTemplates.get(5).getName()).isEqualTo("Code de plan justifié à gauche (Avery 5161)"); assertThat(labelTemplates.get(5).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5161); assertThat(labelTemplates.get(5).getFields()).hasSize(5); assertThat(labelTemplates.get(6).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(6).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(6).getLines()).isEqualTo(10); assertThat(labelTemplates.get(6).getKey()).isEqualTo("FOLDER_LEFT_AVERY_5162"); assertThat(labelTemplates.get(6).getName()).isEqualTo("Code de plan justifié à gauche (Avery 5162)"); assertThat(labelTemplates.get(6).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5162); assertThat(labelTemplates.get(6).getFields()).hasSize(5); assertThat(labelTemplates.get(7).getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(labelTemplates.get(7).getColumns()).isEqualTo(30); assertThat(labelTemplates.get(7).getLines()).isEqualTo(13); assertThat(labelTemplates.get(7).getKey()).isEqualTo("FOLDER_LEFT_AVERY_5163"); assertThat(labelTemplates.get(7).getName()).isEqualTo("Code de plan justifié à gauche (Avery 5163)"); assertThat(labelTemplates.get(7).getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5163); assertThat(labelTemplates.get(7).getFields()).hasSize(6); } @Test public void givenCustomLabelTemplatesWhenListFolderTemplatesThenOk() throws Exception { givenCustomTemplates(); List<LabelTemplate> labelTemplates = labelTemplateManager.listTemplates(Folder.SCHEMA_TYPE); assertThat(labelTemplates).hasSize(10); assertThat(labelTemplates).extracting("key").contains("folderTemplate1", "folderTemplate2"); } @Test public void givenCustomLabelTemplatesWhenListTemplatesWithEmptyStringThenOk() throws Exception { givenCustomTemplates(); List<LabelTemplate> labelTemplates = labelTemplateManager.listTemplates(""); assertThat(labelTemplates).hasSize(1); assertThat(labelTemplates.get(0).getKey()).isEqualTo(""); } @Test public void givenCustomLabelTemplatesWhenListTemplatesWithNullStringThenOk() throws Exception { givenCustomTemplates(); List<LabelTemplate> labelTemplates = labelTemplateManager.listTemplates(null); assertThat(labelTemplates).hasSize(1); assertThat(labelTemplates.get(0).getKey()).isEqualTo(""); } @Test public void whenGetTemplateThenOk() throws Exception { givenCustomTemplates(); LabelTemplate template = labelTemplateManager.getLabelTemplate("folderTemplate1.xml"); assertThat(template.getKey()).isEqualTo("folderTemplate1"); assertThat(template.getName()).isEqualTo("nameTemplate1"); assertThat(template.getColumns()).isEqualTo(2); assertThat(template.getLines()).isEqualTo(7); assertThat(template.getLabelsReportLayout()).isEqualTo(LabelsReportLayout.AVERY_5159); assertThat(template.getSchemaType()).isEqualTo(Folder.SCHEMA_TYPE); assertThat(template.getFields()).hasSize(2); assertThat(template.getFields().get(0).getFontName()).isEqualTo("Courier"); assertThat(template.getFields().get(0).getFontSize()).isEqualTo(10); assertThat(template.getFields().get(0).getMaxLength()).isEqualTo(10); assertThat(template.getFields().get(0).getHeight()).isEqualTo(5); assertThat(template.getFields().get(0).getWidth()).isEqualTo(6); assertThat(template.getFields().get(0).getMetadataCode()).isEqualTo("folder_default_title"); assertThat(template.getFields().get(0).getReferenceMetadataCode()).isEqualTo(""); assertThat(template.getFields().get(0).getX()).isEqualTo(1); assertThat(template.getFields().get(0).getY()).isEqualTo(2); assertThat(template.getFields().get(0).getHorizontalAlignment()) .isEqualTo(LabelTemplateFieldHorizontalAlignment.RIGHT); assertThat(template.getFields().get(0).getVerticalAlignment()).isEqualTo(LabelTemplateFieldVerticalAlignment.TOP); assertThat(template.getFields().get(1).getFontName()).isEqualTo("Courier"); assertThat(template.getFields().get(1).getFontSize()).isEqualTo(10); assertThat(template.getFields().get(0).getMaxLength()).isEqualTo(10); assertThat(template.getFields().get(1).getHeight()).isEqualTo(5); assertThat(template.getFields().get(1).getWidth()).isEqualTo(6); assertThat(template.getFields().get(1).getMetadataCode()).isEqualTo("folder_default_administrativeUnitId"); assertThat(template.getFields().get(1).getReferenceMetadataCode()).isEqualTo("administrativeUnit_default_code"); assertThat(template.getFields().get(1).getX()).isEqualTo(5); assertThat(template.getFields().get(1).getY()).isEqualTo(5); assertThat(template.getFields().get(1).getHorizontalAlignment()) .isEqualTo(LabelTemplateFieldHorizontalAlignment.RIGHT); assertThat(template.getFields().get(1).getVerticalAlignment()).isEqualTo(LabelTemplateFieldVerticalAlignment.TOP); } @Test(expected = LabelTemplateManagerRuntimeException_CannotCreateLabelTemplate.class) public void givenInvalidTemplateFileWhenGetTemplateThenException() throws Exception { givenInvalidTemplateFile(); labelTemplateManager.getLabelTemplate("invalidTemplate.xml"); } @Test public void givenInexistentFilenameWhenGetTemplateThenReturnNull() throws Exception { this.givenCustomTemplates(); LabelTemplate template = labelTemplateManager.getLabelTemplate("InexistentFilename.xml"); assertThat(template).isNull(); } public void givenCustomTemplates() throws Exception { List<String> filenames = new ArrayList<>(); String filename1 = "folderTemplate1.xml"; String filename2 = "folderTemplate2.xml"; String filename3 = "containerTemplate1.xml"; filenames.add(filename1); filenames.add(filename2); filenames.add(filename3); for (String filename : filenames) { String path = LABELS_TEMPLATES_FOLDER + "/" + filename; SAXBuilder saxBuilder = new SAXBuilder(); Document document = saxBuilder.build(getTestResourceFile(filename)); configManager.add(path, document); assertThat(configManager.exist(path)).isTrue(); } assertThat(configManager.list(LABELS_TEMPLATES_FOLDER)).hasSize(3); } private void givenInvalidTemplateFile() throws Exception { String filename = "invalidTemplate.xml"; String path = LABELS_TEMPLATES_FOLDER + "/" + filename; SAXBuilder saxBuilder = new SAXBuilder(); Document document = saxBuilder.build(getTestResourceFile(filename)); configManager.add(path, document); assertThat(configManager.exist(path)).isTrue(); assertThat(configManager.list(LABELS_TEMPLATES_FOLDER)).hasSize(1); } }