package com.constellio.app.ui.pages.management.schemas.display.table; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsEnabled; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsMultivalue; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsSearchable; import static com.constellio.sdk.tests.schemas.TestsSchemasSetup.whichIsSortable; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import com.constellio.sdk.tests.MockedNavigation; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.app.entities.schemasDisplay.SchemaDisplayConfig; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; import com.constellio.app.ui.application.CoreViews; import com.constellio.app.ui.entities.FormMetadataVO; import com.constellio.app.ui.framework.builders.MetadataToFormVOBuilder; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.Schemas; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.FakeSessionContext; import com.constellio.sdk.tests.schemas.TestsSchemasSetup; import com.constellio.sdk.tests.schemas.TestsSchemasSetup.ZeCustomSchemaMetadatas; import com.constellio.sdk.tests.schemas.TestsSchemasSetup.ZeSchemaMetadatas; public class TableDisplayConfigPresenterAcceptTest extends ConstellioTest { TestsSchemasSetup setup = new TestsSchemasSetup(zeCollection); ZeSchemaMetadatas zeSchema = setup.new ZeSchemaMetadatas(); ZeCustomSchemaMetadatas zeCustomSchema = setup.new ZeCustomSchemaMetadatas(); TableDisplayConfigPresenter presenter; @Mock TableDisplayConfigView view; MockedNavigation navigator; @Before public void setUp() throws Exception { prepareSystem( withZeCollection() ); navigator = new MockedNavigation(); defineSchemasManager() .using(setup.andCustomSchema() .withAStringMetadataInCustomSchema(whichIsMultivalue, whichIsSearchable) .withAStringMetadata(whichIsSortable, whichIsEnabled).withABooleanMetadata(whichIsEnabled) .withADateMetadata(whichIsEnabled)); when(view.getSessionContext()).thenReturn(FakeSessionContext.adminInCollection(zeCollection)); when(view.getCollection()).thenReturn(zeCollection); when(view.getConstellioFactories()).thenReturn(getConstellioFactories()); when(view.navigate()).thenReturn(navigator); presenter = new TableDisplayConfigPresenter(view); Map<String, String> parameters = new HashMap<>(); parameters.put("schemaTypeCode", setup.zeCustomSchemaTypeCode()); presenter.setParameters(parameters); } @Test public void givenSchemaWhenSaveTableDisplayConfigThenConfigSaved() throws Exception { List<Metadata> metadatas = Arrays.asList(zeSchema.booleanMetadata(), zeSchema.dateMetadata(), zeSchema.stringMetadata()); List<FormMetadataVO> formMetadataVOs = this.getFormVO(metadatas); presenter.setSchemaCode(zeSchema.code()); presenter.saveButtonClicked(formMetadataVOs); SchemasDisplayManager manager = getAppLayerFactory().getMetadataSchemasDisplayManager(); SchemaDisplayConfig config = manager.getSchema(zeCollection, zeSchema.code()); assertThat(config.getTableMetadataCodes()).hasSize(4); assertThat(config.getTableMetadataCodes().get(0)).isEqualTo(zeSchema.code() + "_" + Schemas.TITLE_CODE); assertThat(config.getTableMetadataCodes().get(1)).isEqualTo(zeSchema.booleanMetadata().getCode()); assertThat(config.getTableMetadataCodes().get(2)).isEqualTo(zeSchema.dateMetadata().getCode()); assertThat(config.getTableMetadataCodes().get(3)).isEqualTo(zeSchema.stringMetadata().getCode()); } @Test public void givenDefaultAndCustomSchemasWhenSaveTableDisplayConfigThenEqualsConfigForBoth() throws Exception { List<Metadata> metadatas = Arrays.asList(zeSchema.booleanMetadata(), zeSchema.dateMetadata(), zeSchema.stringMetadata()); List<FormMetadataVO> formMetadataVOs = this.getFormVO(metadatas); presenter.setSchemaCode(zeSchema.code()); presenter.saveButtonClicked(formMetadataVOs); SchemasDisplayManager manager = getAppLayerFactory().getMetadataSchemasDisplayManager(); SchemaDisplayConfig config = manager.getSchema(zeCollection, zeSchema.code()); assertThat(config.getTableMetadataCodes()).hasSize(4); assertThat(config.getTableMetadataCodes().get(0)).isEqualTo(zeSchema.code() + "_" + Schemas.TITLE_CODE); assertThat(config.getTableMetadataCodes().get(1)).isEqualTo(zeSchema.booleanMetadata().getCode()); assertThat(config.getTableMetadataCodes().get(2)).isEqualTo(zeSchema.dateMetadata().getCode()); assertThat(config.getTableMetadataCodes().get(3)).isEqualTo(zeSchema.stringMetadata().getCode()); SchemaDisplayConfig customConfig = manager.getSchema(zeCollection, zeCustomSchema.code()); assertThat(customConfig.getTableMetadataCodes()).hasSize(4); assertThat(customConfig.getTableMetadataCodes().get(0)).isEqualTo(zeCustomSchema.code() + "_" + Schemas.TITLE_CODE); assertThat(customConfig.getTableMetadataCodes().get(1)).isEqualTo(zeCustomSchema.booleanMetadata().getCode()); assertThat(customConfig.getTableMetadataCodes().get(2)).isEqualTo(zeCustomSchema.dateMetadata().getCode()); assertThat(customConfig.getTableMetadataCodes().get(3)).isEqualTo(zeCustomSchema.stringMetadata().getCode()); } @Test public void givenSchemaSavedWhenGetMetadataValueThenCorrect() throws Exception { List<Metadata> metadatas = Arrays.asList(zeSchema.booleanMetadata(), zeSchema.dateMetadata(), zeSchema.stringMetadata()); List<FormMetadataVO> formMetadataVOs = this.getFormVO(metadatas); presenter.setSchemaCode(zeSchema.code()); SchemasDisplayManager manager = getAppLayerFactory().getMetadataSchemasDisplayManager(); SchemaDisplayConfig config = manager.getSchema(zeCollection, zeSchema.code()); config = config.withTableMetadataCodes(getCodeFromMetadata(metadatas)); manager.saveSchema(config); List<FormMetadataVO> result = presenter.getValueMetadatas(); assertThat(result).hasSize(3); assertThat(result).containsExactlyElementsOf(formMetadataVOs); assertThat(result.get(0).getCode()).isEqualTo(zeSchema.booleanMetadata().getCode()); assertThat(result.get(1).getCode()).isEqualTo(zeSchema.dateMetadata().getCode()); assertThat(result.get(2).getCode()).isEqualTo(zeSchema.stringMetadata().getCode()); } @Test public void givenSchemaOrderEditedWhenGetMetadataValueThenCorrectOrder() throws Exception { presenter.setSchemaCode(zeSchema.code()); List<FormMetadataVO> formMetadataVOs = presenter.getMetadatas(); SchemasDisplayManager manager = getAppLayerFactory().getMetadataSchemasDisplayManager(); SchemaDisplayConfig config = manager.getSchema(zeCollection, zeSchema.code()); Collections.shuffle(formMetadataVOs); config = config.withTableMetadataCodes(getCodeFromVO(formMetadataVOs)); manager.saveSchema(config); List<FormMetadataVO> result = presenter.getValueMetadatas(); assertThat(result).containsExactlyElementsOf(formMetadataVOs); // assertThat(result).hasSize(16); // assertThat(result).containsExactlyElementsOf(formMetadataVOs); // assertThat(result.get(0).getCode()).isEqualTo(formMetadataVOs.get(0).getCode()); // assertThat(result.get(1).getCode()).isEqualTo(formMetadataVOs.get(1).getCode()); // assertThat(result.get(2).getCode()).isEqualTo(formMetadataVOs.get(2).getCode()); // assertThat(result.get(3).getCode()).isEqualTo(formMetadataVOs.get(3).getCode()); // assertThat(result.get(4).getCode()).isEqualTo(formMetadataVOs.get(4).getCode()); // assertThat(result.get(5).getCode()).isEqualTo(formMetadataVOs.get(5).getCode()); // assertThat(result.get(6).getCode()).isEqualTo(formMetadataVOs.get(6).getCode()); // assertThat(result.get(7).getCode()).isEqualTo(formMetadataVOs.get(7).getCode()); // assertThat(result.get(8).getCode()).isEqualTo(formMetadataVOs.get(8).getCode()); // assertThat(result.get(9).getCode()).isEqualTo(formMetadataVOs.get(9).getCode()); // assertThat(result.get(10).getCode()).isEqualTo(formMetadataVOs.get(10).getCode()); // assertThat(result.get(11).getCode()).isEqualTo(formMetadataVOs.get(11).getCode()); // assertThat(result.get(12).getCode()).isEqualTo(formMetadataVOs.get(12).getCode()); // assertThat(result.get(13).getCode()).isEqualTo(formMetadataVOs.get(13).getCode()); // assertThat(result.get(14).getCode()).isEqualTo(formMetadataVOs.get(14).getCode()); // assertThat(result.get(15).getCode()).isEqualTo(formMetadataVOs.get(15).getCode()); formMetadataVOs = presenter.getMetadatas(); Collections.shuffle(formMetadataVOs); config = config.withTableMetadataCodes(getCodeFromVO(formMetadataVOs)); manager.saveSchema(config); result = presenter.getValueMetadatas(); assertThat(result).containsExactlyElementsOf(formMetadataVOs); // // assertThat(result).hasSize(16); // assertThat(result).containsExactlyElementsOf(formMetadataVOs); // assertThat(result.get(0).getCode()).isEqualTo(formMetadataVOs.get(0).getCode()); // assertThat(result.get(1).getCode()).isEqualTo(formMetadataVOs.get(1).getCode()); // assertThat(result.get(2).getCode()).isEqualTo(formMetadataVOs.get(2).getCode()); // assertThat(result.get(3).getCode()).isEqualTo(formMetadataVOs.get(3).getCode()); // assertThat(result.get(4).getCode()).isEqualTo(formMetadataVOs.get(4).getCode()); // assertThat(result.get(5).getCode()).isEqualTo(formMetadataVOs.get(5).getCode()); // assertThat(result.get(6).getCode()).isEqualTo(formMetadataVOs.get(6).getCode()); // assertThat(result.get(7).getCode()).isEqualTo(formMetadataVOs.get(7).getCode()); // assertThat(result.get(8).getCode()).isEqualTo(formMetadataVOs.get(8).getCode()); // assertThat(result.get(9).getCode()).isEqualTo(formMetadataVOs.get(9).getCode()); // assertThat(result.get(10).getCode()).isEqualTo(formMetadataVOs.get(10).getCode()); // assertThat(result.get(11).getCode()).isEqualTo(formMetadataVOs.get(11).getCode()); // assertThat(result.get(12).getCode()).isEqualTo(formMetadataVOs.get(12).getCode()); // assertThat(result.get(13).getCode()).isEqualTo(formMetadataVOs.get(13).getCode()); // assertThat(result.get(14).getCode()).isEqualTo(formMetadataVOs.get(14).getCode()); // assertThat(result.get(15).getCode()).isEqualTo(formMetadataVOs.get(15).getCode()); } private List<String> getCodeFromMetadata(List<Metadata> metadatas) { List<String> codeList = new ArrayList<>(); for (Metadata metadata : metadatas) { codeList.add(metadata.getCode()); } return codeList; } private List<String> getCodeFromVO(List<FormMetadataVO> metadataVOs) { List<String> codeList = new ArrayList<>(); for (FormMetadataVO metadata : metadataVOs) { codeList.add(metadata.getCode()); } return codeList; } private List<FormMetadataVO> getFormVO(List<Metadata> metadatas) { MetadataToFormVOBuilder builder = new MetadataToFormVOBuilder(FakeSessionContext.adminInCollection(zeCollection)); List<FormMetadataVO> formMetadataVOs = new ArrayList<>(); for (Metadata metadata : metadatas) { formMetadataVOs.add(builder.build(metadata, getAppLayerFactory().getMetadataSchemasDisplayManager(), setup.zeCustomSchemaTypeCode(), view.getSessionContext())); } return formMetadataVOs; } }