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