package com.constellio.model.services.batch.controller; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ForkJoinPool; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.model.entities.batchprocess.BatchProcess; import com.constellio.model.entities.batchprocess.BatchProcessAction; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.search.SearchServices; import com.constellio.sdk.tests.ConstellioTest; public class BatchProcessTasksFactoryTest extends ConstellioTest { @Mock ModelLayerFactory modelLayerFactory; @Mock MetadataSchemasManager schemasManager; @Mock MetadataSchemaTypes schemaTypes; @Mock BatchProcessAction action; @Mock List<String> zeUpdatedMetadatasCodes; int numberOfRecordsPerTask = anInteger(); @Mock RecordServices recordServices; @Mock BatchProcess aBatchProcess; BatchProcessTasksFactory tasksFactory; @Mock SearchServices searchServices; @Mock ForkJoinPool pool; @Mock BatchProcessTask aTask; @Mock BatchProcessTask anotherTask; @Mock TaskList taskList; List<Record> records = new ArrayList<>(); @Mock Record record1; @Mock Record record2; List<String> errorsList = new ArrayList<>(); List<BatchProcessTask> tasks = new ArrayList<>(); @Before public void setUp() { when(record1.getId()).thenReturn("record1"); when(record2.getId()).thenReturn("record2"); when(modelLayerFactory.newRecordServices()).thenReturn(recordServices); when(modelLayerFactory.getMetadataSchemasManager()).thenReturn(schemasManager); when(modelLayerFactory.newSearchServices()).thenReturn(searchServices); tasksFactory = spy(new BatchProcessTasksFactory(recordServices, searchServices, taskList)); records.add(record1); records.add(record2); tasks.add(aTask); tasks.add(anotherTask); when(schemasManager.getSchemaTypes("zeCollection")).thenReturn(schemaTypes); when(aBatchProcess.getAction()).thenReturn(action); } @Test public void whenCreatingReindexationTasksThenTasksCreated() { tasks = tasksFactory.createBatchProcessTasks(aBatchProcess, records, errorsList, numberOfRecordsPerTask, schemasManager); assertThat(tasks).isNotEmpty(); } @Test public void whenCreatingTasksThenRightNumberOfTasksCreated() { tasks = tasksFactory.createBatchProcessTasks(aBatchProcess, records, errorsList, 1, schemasManager); assertThat(tasks).hasSize(2); } }