0

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"

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.