I need to test operations and listeners using vocabularies, they are present in my studio package but, from what I understand are not included when the package is deployed locally upon testing.
What am I missing? I have been running in circles for quite some time. I can't seem to find a solution anywhere.
Here is the error raised when running my test:
%ERROR 1,should_Pass(my.package.operations.SomeOperationTest)
%TRACES
org.nuxeo.ecm.directory.DirectoryException: Failed to invoke operation SomeOperation, No directory registered with name: Some_Directory
This is the structure of my core project source folder:
main
|- java
| |- my.package.operations
| | |- SomeOperation.java
test
|- java
| |- my.package.operations
| | |- SomeOperationTest.java
|- resources
| |- directories
| | |- Some_Directory.csv
| |- OSGI-INF
| | |- test-directories-contrib.xml
Here's my test class:
@RunWith(FeaturesRunner.class)
@Features(AutomationFeature.class)
@RepositoryConfig(cleanup = Granularity.METHOD)
@Deploy({
"studio.extensions.my-studio",
"my-bundle-symbolic-name",
"my-bundle-symbolic-name:OSGI-INF/test-directories-contrib.xml"})
public class SomeOperationTest {
@Inject
OperationContext context;
@Inject
AutomationService automation;
@Test
public void should_Pass() throws OperationException {
automation.run(context, "SomeOperation"); // raises exception
// ... some assertion
}
}
The failing operation is this:
@Operation(
id = "SomeOperation",
category = "Some",
label = "Operation",
description = "Opening a directory")
public class SomeOperation {
@OperationMethod()
public void run() {
Framework.getService(DirectoryService.class).open("Some_Directory"); // raises exception
// ... some more code
}
}
The directory contribution:
<?xml version="1.0"?>
<component name="my.package.test.directories">
<extension target="org.nuxeo.ecm.directory.GenericDirectory" point="directories">
<directory name="Some_Directory" extends="template-directory">
<schema>vocabulary</schema>
<idField>id</idField>
<autoincrementIdField>false</autoincrementIdField>
<dataFile>directories/Some_Directory.csv</dataFile>
<createTablePolicy>on_missing_columns</createTablePolicy>
</directory>
</extension>
</component>
The .csv file for the directory looks like this:
id,label,obsolete
"some","entry","0"