package com.constellio.model.services.batch.actions; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.TransactionRecordsReindexation; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.records.RecordProvider; import com.constellio.model.services.schemas.MetadataList; import com.constellio.sdk.tests.ConstellioTest; public class ReindexMetadatasBatchProcessActionTest extends ConstellioTest { @Mock List<String> reindexedMetadataCodes; @Mock MetadataList reindexedMetadatas; @Mock MetadataSchemaTypes schemaTypes; @Mock Record record1; @Mock Record record2; @Mock Record record3; @Mock RecordProvider recordProvider; List<Record> batch; ReindexMetadatasBatchProcessAction action; @Before public void setUp() throws Exception { action = new ReindexMetadatasBatchProcessAction(reindexedMetadataCodes); batch = asList(record1, record2, record3); when(record1.getId()).thenReturn(aString()); when(record2.getId()).thenReturn(aString()); when(record3.getId()).thenReturn(aString()); when(schemaTypes.getMetadatas(reindexedMetadataCodes)).thenReturn(reindexedMetadatas); } @Test public void whenGetParametersThenReturnMetadataCodes() throws Exception { Object[] parameters = action.getInstanceParameters(); assertThat(parameters).containsOnly(reindexedMetadataCodes); } @Test public void whenExecutingThenCreateTransactionSetForcedReindexedFieldsOptionsAndAddRecords() throws Exception { Transaction transaction = action.execute(batch, schemaTypes, recordProvider); assertThat(transaction.getRecordUpdateOptions().getTransactionRecordsReindexation()) .isEqualTo(new TransactionRecordsReindexation(reindexedMetadatas)); assertThat(transaction.getRecords()).containsOnly(record1, record2, record3); } }