package com.constellio.model.services.records; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import com.constellio.model.entities.records.Record; import com.constellio.model.services.records.RecordUtilsAcceptanceTestSchemasSetup.DocumentSchema; import com.constellio.model.services.records.RecordUtilsAcceptanceTestSchemasSetup.FolderSchema; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.TestRecord; public class RecordUtilsAcceptanceTest extends ConstellioTest { RecordUtils recordUtils; RecordUtilsAcceptanceTestSchemasSetup schemas = new RecordUtilsAcceptanceTestSchemasSetup(); FolderSchema folderSchema = schemas.new FolderSchema(); DocumentSchema documentSchema = schemas.new DocumentSchema(); private MetadataSchemasManager schemasManager; private Record parentFolder1; private Record childFolder1; private Record document1; private Record parentFolder2; private Record childFolder2; private Record document2; @Before public void setUp() throws Exception { recordUtils = new RecordUtils(); schemasManager = getModelLayerFactory().getMetadataSchemasManager(); defineSchemasManager().using(schemas.withFolderAndDocumentSchemas()); parentFolder1 = new TestRecord(folderSchema, "parentFolder1"); childFolder1 = new TestRecord(folderSchema, "childFolder1"); childFolder1.set(folderSchema.parent(), parentFolder1); document1 = new TestRecord(documentSchema, "document1"); document1.set(documentSchema.parent(), childFolder1); parentFolder2 = new TestRecord(folderSchema, "parentFolder2"); childFolder2 = new TestRecord(folderSchema, "childFolder2"); childFolder2.set(folderSchema.parent(), parentFolder2); document2 = new TestRecord(documentSchema, "document2"); document2.set(documentSchema.parent(), childFolder2); } @Test public void givenOneHierarchyOf3RecordsThenRecordsSortedRight() throws Exception { List<Record> records = new ArrayList<>(); records.add(document1); records.add(parentFolder1); records.add(childFolder1); List<Record> sortedRecords = recordUtils.sortRecordsOnDependencies(records, schemasManager.getSchemaTypes(zeCollection)); assertThat(sortedRecords).containsExactly(parentFolder1, childFolder1, document1); } @Test public void givenTwoHierarchyOf3RecordsThenRecordsSortedRight() throws Exception { List<Record> records = new ArrayList<>(); records.add(document2); records.add(childFolder2); records.add(document1); records.add(parentFolder1); records.add(childFolder1); records.add(parentFolder2); List<Record> sortedRecords = recordUtils.sortRecordsOnDependencies(records, schemasManager.getSchemaTypes(zeCollection)); assertThat(sortedRecords.indexOf(parentFolder1)).isLessThan(sortedRecords.indexOf(childFolder1)); assertThat(sortedRecords.indexOf(childFolder1)).isLessThan(sortedRecords.indexOf(document1)); assertThat(sortedRecords.indexOf(parentFolder2)).isLessThan(sortedRecords.indexOf(childFolder2)); assertThat(sortedRecords.indexOf(childFolder2)).isLessThan(sortedRecords.indexOf(document2)); } }