package org.springframework.roo.file.monitor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.springframework.roo.file.monitor.event.FileOperation.CREATED;
import static org.springframework.roo.file.monitor.event.FileOperation.DELETED;
import static org.springframework.roo.file.monitor.event.FileOperation.RENAMED;
import static org.springframework.roo.file.monitor.event.FileOperation.UPDATED;
import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.springframework.roo.file.monitor.event.FileOperation;
/**
* Unit test of {@link MonitoringRequest}
*
* @author Andrew Swan
* @since 1.2.0
*/
public class MonitoringRequestTest {
private static final FileOperation[] CRUD_OPERATIONS = {CREATED, RENAMED, UPDATED, DELETED};
/**
* Asserts that the given {@link MonitoringRequest} is for
* {@link #CRUD_OPERATIONS} on the current directory.
*
* @param monitoringRequest the request to check (required)
* @param expectedToWatchSubTree whether we expect the sub-tree to be
* monitored as well
*/
private void assertMonitorsCurrentDirectory(final MonitoringRequest monitoringRequest,
final boolean expectedToWatchSubTree) {
assertEquals(DirectoryMonitoringRequest.class, monitoringRequest.getClass());
assertEquals(expectedToWatchSubTree,
((DirectoryMonitoringRequest) monitoringRequest).isWatchSubtree());
final Collection<FileOperation> notifyOn = monitoringRequest.getNotifyOn();
assertEquals(CRUD_OPERATIONS.length, notifyOn.size());
assertTrue(notifyOn.containsAll(Arrays.asList(CRUD_OPERATIONS)));
assertEquals(new File("."), monitoringRequest.getFile());
}
@Test
public void testGetMonitoringRequestForCurrentDirectoryAndSubTree() {
assertMonitorsCurrentDirectory(MonitoringRequest.getInitialSubTreeMonitoringRequest(null), true);
}
@Test
public void testGetMonitoringRequestForCurrentDirectoryOnly() {
assertMonitorsCurrentDirectory(MonitoringRequest.getInitialMonitoringRequest(null), false);
}
}