View Javadoc

1   package com.atlassian.plugin.predicate;
2   
3   import com.atlassian.plugin.ModuleDescriptorFactory;
4   import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5   import com.atlassian.plugin.module.ModuleFactory;
6   import com.mockobjects.dynamic.C;
7   import com.mockobjects.dynamic.Mock;
8   import junit.framework.TestCase;
9   
10  /**
11   * Testing {@link ModuleDescriptorOfTypePredicate}
12   */
13  public class TestModuleDescriptorOfTypePredicate extends TestCase
14  {
15      public void testMatchesModuleWithModuleDescriptorMatchingType()
16      {
17          final Mock mockModuleDescriptorFactory = new Mock(ModuleDescriptorFactory.class);
18          mockModuleDescriptorFactory.matchAndReturn("getModuleDescriptorClass", C.ANY_ARGS, ModuleDescriptorStubA.class);
19  
20          final ModuleDescriptorPredicate<Object> moduleDescriptorPredicate = new ModuleDescriptorOfTypePredicate<Object>(
21              (ModuleDescriptorFactory) mockModuleDescriptorFactory.proxy(), "test-module-type");
22          assertTrue(moduleDescriptorPredicate.matches(new ModuleDescriptorStubB()));
23      }
24  
25      public void testDoesNotMatchModuleWithModuleDescriptorNotMatchingType()
26      {
27          final Mock mockModuleDescriptorFactory = new Mock(ModuleDescriptorFactory.class);
28          mockModuleDescriptorFactory.matchAndReturn("getModuleDescriptorClass", C.ANY_ARGS, ModuleDescriptorStubB.class);
29  
30          final ModuleDescriptorPredicate<Object> moduleDescriptorPredicate = new ModuleDescriptorOfTypePredicate<Object>(
31              (ModuleDescriptorFactory) mockModuleDescriptorFactory.proxy(), "test-module-type");
32          assertFalse(moduleDescriptorPredicate.matches(new AbstractModuleDescriptor<Object>(ModuleFactory.LEGACY_MODULE_FACTORY)
33          {
34              @Override
35              public Object getModule()
36              {
37                  throw new UnsupportedOperationException();
38              }
39          }));
40      }
41  
42      private static class ModuleDescriptorStubA extends AbstractModuleDescriptor<Object>
43      {
44          public ModuleDescriptorStubA()
45          {
46              super(ModuleFactory.LEGACY_MODULE_FACTORY);
47          }
48  
49          @Override
50          public Object getModule()
51          {
52              return null;
53          }
54      }
55  
56      private static class ModuleDescriptorStubB extends ModuleDescriptorStubA
57      {}
58  }