1   package com.atlassian.plugins.codegen.modules.jira;
2   
3   import java.io.File;
4   
5   import com.atlassian.plugins.codegen.AbstractCodegenTestCase;
6   import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
7   
8   import org.dom4j.Document;
9   import org.dom4j.Node;
10  import org.junit.Before;
11  import org.junit.Test;
12  
13  import static org.junit.Assert.assertNotNull;
14  
15  /**
16   * @since 3.6
17   */
18  public class WorkflowValidatorTest extends AbstractCodegenTestCase<WorkflowElementProperties>
19  {
20      public static final String PACKAGE_NAME = "com.atlassian.plugins.jira.workflow";
21      public static final String XPATH = "/atlassian-plugin/workflow-validator[@name='My Workflow Validator' and @key='my-workflow-validator' and @i18n-name-key='my-workflow-validator.name' and @class='" + PACKAGE_NAME + ".MyWorkflowValidatorFactory']";
22  
23      protected File templatePath;
24  
25  
26      @Before
27      public void runGenerator() throws Exception
28      {
29          setCreator(new WorkflowValidatorModuleCreator());
30          setModuleLocation(new PluginModuleLocation.Builder(srcDir)
31                  .resourcesDirectory(resourcesDir)
32                  .testDirectory(testDir)
33                  .templateDirectory(templateDir)
34                  .build());
35  
36          setProps(new WorkflowElementProperties(PACKAGE_NAME + ".MyWorkflowValidator"));
37  
38          props.setIncludeExamples(false);
39  
40          templatePath = new File(templateDir, "validators");
41      }
42  
43      @Test
44      public void moduleIsValid() throws Exception
45      {
46  
47          creator.createModule(moduleLocation, props);
48          Document pluginDoc = getXmlDocument(pluginXml);
49          Node moduleNode = pluginDoc.selectSingleNode(XPATH);
50  
51          assertNotNull("valid workflow-validator not found", moduleNode);
52      }
53  
54      @Test
55      public void moduleHasCondition() throws Exception
56      {
57  
58          creator.createModule(moduleLocation, props);
59          Document pluginDoc = getXmlDocument(pluginXml);
60          Node moduleNode = pluginDoc.selectSingleNode(XPATH);
61  
62          String subXpath = "validator-class[text() = '" + PACKAGE_NAME + ".MyWorkflowValidator']";
63  
64          assertNotNull("valid workflow-validator not found", moduleNode);
65          assertNotNull("valid validator-class not found", moduleNode.selectSingleNode(subXpath));
66      }
67  
68  }