1   package com.atlassian.plugin.osgi.factory.transform;
2   
3   import junit.framework.TestCase;
4   import org.dom4j.DocumentHelper;
5   import org.dom4j.Element;
6   
7   import java.io.IOException;
8   
9   public class TestComponentSpringTransformer extends TestCase
10  {
11      public void testTransform() throws IOException
12      {
13          ComponentSpringTransformer transformer = new ComponentSpringTransformer();
14  
15          // private component
16          Element pluginRoot = DocumentHelper.createDocument().addElement("atlassian-plugin");
17          Element component = pluginRoot.addElement("component");
18          component.addAttribute("key", "foo");
19          component.addAttribute("class", "my.Foo");
20          SpringTransformerTestHelper.transform(transformer, pluginRoot, "beans:bean[@id='foo' and @class='my.Foo']");
21  
22          // public component, no interface
23          pluginRoot = DocumentHelper.createDocument().addElement("atlassian-plugin");
24          component = pluginRoot.addElement("component");
25          component.addAttribute("key", "foo");
26          component.addAttribute("class", "my.Foo");
27          component.addAttribute("public", "true");
28          SpringTransformerTestHelper.transform(transformer, pluginRoot, "beans:bean[@id='foo' and @class='my.Foo']",
29                                                                         "osgi:service[@id='foo_osgiService' and @ref='foo']");
30  
31          // public component, interface
32          pluginRoot = DocumentHelper.createDocument().addElement("atlassian-plugin");
33          component = pluginRoot.addElement("component");
34          component.addAttribute("key", "foo");
35          component.addAttribute("class", "my.Foo");
36          component.addAttribute("public", "true");
37          Element inf = component.addElement("interface");
38          inf.setText("my.IFoo");
39          SpringTransformerTestHelper.transform(transformer, pluginRoot, "beans:bean[@id='foo' and @class='my.Foo']",
40                                                                         "osgi:service[@id='foo_osgiService' and @ref='foo']",
41                                                                         "//osgi:interfaces",
42                                                                         "//beans:value[.='my.IFoo']");
43  
44          // No component
45          pluginRoot = DocumentHelper.createDocument().addElement("atlassian-plugin");
46          SpringTransformerTestHelper.transform(transformer, pluginRoot, "count(/atlassian-plugin/child::*)=0");
47      }
48  
49  }