package com.marklogic.client.modulesloader.impl;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import com.marklogic.client.modulesloader.Modules;
import com.marklogic.client.modulesloader.ModulesFinder;
public class DefaultModulesFinderTest extends Assert {
private ModulesFinder sut = new DefaultModulesFinder();
@Test
public void baseDirWithExtensionsOfEachKind() throws IOException {
Modules modules = sut.findModules(getBaseDir("sample-base-dir"));
assertEquals(1, modules.getOptions().size());
assertEquals("Only recognized XQuery files should be included; the XML file should be ignored", 2,
modules.getServices().size());
assertEquals("Only recognized XSL files should be included; the XML file should be ignored", 4,
modules.getTransforms().size());
List<Resource> dirs = modules.getAssetDirectories();
assertEquals(3, dirs.size());
assertEquals("ext", dirs.get(0).getFile().getName());
assertEquals("root", dirs.get(1).getFile().getName());
assertEquals("include-this-too", dirs.get(2).getFile().getName());
assertEquals(
"Namespace files don't have to fit any filename format; the body of the file should be the namespace URI",
1, modules.getNamespaces().size());
}
@Test
public void emptyBaseDir() throws IOException {
Modules files = sut.findModules(getBaseDir("empty-base-dir"));
assertEquals(0, files.getAssetDirectories().size());
assertEquals(0, files.getOptions().size());
assertEquals(0, files.getServices().size());
assertEquals(0, files.getTransforms().size());
}
@Test
public void missingBaseDir() {
Modules files = sut.findModules(new File("base-dir-doesnt-exist"));
assertEquals(0, files.getAssetDirectories().size());
assertEquals(0, files.getOptions().size());
assertEquals(0, files.getServices().size());
assertEquals(0, files.getTransforms().size());
}
private File getBaseDir(String path) {
try {
return new ClassPathResource(path).getFile();
} catch (IOException e) {
throw new RuntimeException(path);
}
}
}