package com.constellio.model.services.collections; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.List; import org.junit.Test; import org.mockito.InOrder; import org.mockito.Mock; import com.constellio.data.dao.managers.config.ConfigManager; import com.constellio.data.dao.managers.config.DocumentAlteration; import com.constellio.sdk.tests.ConstellioTest; public class CollectionsListManagerTest extends ConstellioTest { @Mock ConfigManager configManager; private CollectionsListManager collectionsListManager; @Test public void whenCreateCollectionListenerThenRegisterFileListenerInConfigManager() throws Exception { when(configManager.exist("/collections.xml")).thenReturn(true); collectionsListManager = spy(new CollectionsListManager(configManager) { @Override public List<String> readCollections() { return Arrays.asList("collection1", "collection2"); } }); collectionsListManager.initialize(); InOrder inOrder = inOrder(configManager); inOrder.verify(configManager).createXMLDocumentIfInexistent(eq("/collections.xml"), any(DocumentAlteration.class)); inOrder.verify(configManager).registerListener("/collections.xml", collectionsListManager); } @Test public void whenCollectionFileModifiedThenReadItAndOnlySendEventsForNewCollections() throws Exception { when(configManager.exist("/collections.xml")).thenReturn(true); collectionsListManager = spy(new CollectionsListManager(configManager) { @Override public List<String> readCollections() { return Arrays.asList("collection1", "collection2"); } }); collectionsListManager.initialize(); CollectionsListManagerListener listener1 = mock(CollectionsListManagerListener.class); CollectionsListManagerListener listener2 = mock(CollectionsListManagerListener.class); collectionsListManager.registerCollectionsListener(listener1); collectionsListManager.registerCollectionsListener(listener2); doReturn(Arrays.asList("collection1", "collection2", "collection3")) .when(collectionsListManager).readCollections(); collectionsListManager.onConfigUpdated("/collections.xml"); verify(listener1, never()).onCollectionCreated("collection1"); verify(listener1, never()).onCollectionCreated("collection2"); verify(listener1).onCollectionCreated("collection3"); verify(listener2, never()).onCollectionCreated("collection1"); verify(listener2, never()).onCollectionCreated("collection2"); verify(listener2).onCollectionCreated("collection3"); } }