package com.constellio.app.ui.framework.data; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.wrappers.Category; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.schemas.MetadataSchemaTypesAlteration; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.FakeSessionContext; import com.constellio.sdk.tests.setups.Users; public class RecordTextInputDataProviderAcceptanceTest extends ConstellioTest { RMTestRecords records = new RMTestRecords(zeCollection); Users users = new Users(); RecordTextInputDataProvider dataProvider; @Before public void setUp() throws Exception { prepareSystem(withZeCollection().withConstellioRMModule().withRMTest(records).withAllTest(users) .withFoldersAndContainersOfEveryStatus()); } private RecordTextInputDataProvider newDataProvider(User user, String schemaType, boolean writeAccess) { SessionContext sessionContext = FakeSessionContext.forRealUserIncollection(user); return new RecordTextInputDataProvider(ConstellioFactories.getInstance(), sessionContext, schemaType, writeAccess); } @Test public void whenSearchingCategoriesThenGoodBehavior() throws Exception { getDataLayerFactory().getDataLayerLogger().setPrintAllQueriesLongerThanMS(0); getModelLayerFactory().getMetadataSchemasManager().modify(zeCollection, new MetadataSchemaTypesAlteration() { @Override public void alter(MetadataSchemaTypesBuilder types) { types.getSchema(Category.DEFAULT_SCHEMA).get(Category.KEYWORDS).setSchemaAutocomplete(true).setSearchable(true); } }); Transaction transaction = new Transaction(); transaction.add(records.getCategory_X100()).setKeywords(asList("majestueux bateaux")); transaction.add(records.getCategory_X13()).setKeywords(asList("magnifiques bateaux")); transaction.add(records.getCategory_X120()).setCode("b"); transaction.add(records.getCategory_ZE42()).setCode("Ze-42.05"); transaction.add(records.getCategory_Z110()).setTitle("Dossier d'étudiants au baccalauréat"); transaction.add(records.getCategory_Z111()).setTitle("Dossier étudiant en maîtrise"); getModelLayerFactory().newRecordServices().execute(transaction); dataProvider = newDataProvider(users.adminIn(zeCollection), Category.SCHEMA_TYPE, false); assertThat(dataProvider.getData("X", 0, 20)).containsOnly( "categoryId_X", "categoryId_X100", "categoryId_X110", "categoryId_X120", "categoryId_X13" ); assertThat(dataProvider.getData("X1", 0, 20)).containsOnly( "categoryId_X100", "categoryId_X110", "categoryId_X120", "categoryId_X13" ); assertThat(dataProvider.getData("Ze", 0, 20)).containsOnly("categoryId_ZE42", "categoryId_Z"); assertThat(dataProvider.getData("Ze-", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-4", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-42", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-42.", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-42.0", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-42.05", 0, 20)).containsOnly("categoryId_ZE42"); assertThat(dataProvider.getData("Ze-42.051", 0, 20)).isEmpty(); assertThat(dataProvider.getData("Ze-42.04", 0, 20)).isEmpty(); assertThat(dataProvider.getData("c", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("ca", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("cât", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("cate", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("cateGor", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("cateGorY", 0, 20)).containsOnly("categoryId_X", "categoryId_Z"); assertThat(dataProvider.getData("b", 0, 20)) .containsOnly("categoryId_X100", "categoryId_X13", "categoryId_X120", "categoryId_Z110"); assertThat(dataProvider.getData("bateau", 0, 20)).containsOnly("categoryId_X100", "categoryId_X13"); //assertThat(dataProvider.getData("bateaux", 0, 20)).containsOnly("categoryId_X100", "categoryId_X13"); assertThat(dataProvider.getData("magnifique bateau", 0, 20)).containsOnly("categoryId_X13"); assertThat(dataProvider.getData("magnifique bateaux", 0, 20)).containsOnly("categoryId_X13"); assertThat(dataProvider.getData("magnifiques bateau", 0, 20)).containsOnly("categoryId_X13"); assertThat(dataProvider.getData("magnifiques bateaux", 0, 20)).containsOnly("categoryId_X13"); assertThat(dataProvider.getData("majestueu bateau", 0, 20)).containsOnly("categoryId_X100"); assertThat(dataProvider.getData("majestueu bateaux", 0, 20)).containsOnly("categoryId_X100"); assertThat(dataProvider.getData("majestueux bateau", 0, 20)).containsOnly("categoryId_X100"); assertThat(dataProvider.getData("majestueux bateaux", 0, 20)).containsOnly("categoryId_X100"); assertThat(dataProvider.getData("dossier étudiant", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); //assertThat(dataProvider.getData("dossier d'étudiant", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); assertThat(dataProvider.getData("dossier étudiants", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); //assertThat(dataProvider.getData("dossier d'étudiants", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); assertThat(dataProvider.getData("dossiers étudiant", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); //assertThat(dataProvider.getData("dossiers d'étudiant", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); assertThat(dataProvider.getData("dossiers étudiants", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); //assertThat(dataProvider.getData("dossiers d'étudiants", 0, 20)).containsOnly("categoryId_Z110", "categoryId_Z111"); } @Test public void whenSearchingSecurisedItemsThenSecurityFilter() throws Exception { assertThat(newDataProvider(users.adminIn(zeCollection), Folder.SCHEMA_TYPE, true).getData("b", 0, 1000)) .containsOnly("A04", "A05", "A06", "A07", "A08", "A09", "B02", "C02", "C55"); assertThat(newDataProvider(users.charlesIn(zeCollection), Folder.SCHEMA_TYPE, true).getData("b", 0, 1000)) .containsOnly("A04", "A05", "A06", "A07", "A08", "A09", "B02"); assertThat(newDataProvider(users.aliceIn(zeCollection), Folder.SCHEMA_TYPE, true).getData("b", 0, 1000)).isEmpty(); assertThat(newDataProvider(users.charlesIn(zeCollection), Folder.SCHEMA_TYPE, false).getData("b", 0, 1000)) .containsOnly("A04", "A05", "A06", "A07", "A08", "A09", "B02"); assertThat(newDataProvider(users.aliceIn(zeCollection), Folder.SCHEMA_TYPE, false).getData("b", 0, 1000)) .containsOnly("A04", "A05", "A06", "A07", "A08", "A09", "B02", "C02", "C55"); } }