View Javadoc
1   package com.atlassian.plugin.predicate;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import com.atlassian.plugin.descriptors.AbstractModuleDescriptor;
5   import com.atlassian.plugin.descriptors.MockUnusedModuleDescriptor;
6   import com.atlassian.plugin.module.ModuleFactory;
7   import org.junit.Before;
8   import org.junit.Test;
9   
10  import java.util.function.Predicate;
11  
12  import static org.junit.Assert.assertFalse;
13  import static org.junit.Assert.assertTrue;
14  
15  /**
16   * Testing {@link ModuleDescriptorOfClassPredicate}
17   */
18  public class TestModuleDescriptorOfClassPredicate {
19  
20      private Predicate<ModuleDescriptor<?>> moduleDescriptorPredicate;
21  
22      @Before
23      public void setUp() throws Exception {
24          moduleDescriptorPredicate = new ModuleDescriptorOfClassPredicate(ModuleDescriptorStubA.class);
25      }
26  
27      @Test(expected = IllegalArgumentException.class)
28      public void testCannotCreateWithNullModuleDescritptorClassesArray() {
29          new ModuleDescriptorOfClassPredicate((Class[]) null);
30      }
31  
32      @Test
33      public void testMatchesModuleWithModuleDescriptorClassExactlyMatchingClass() {
34          assertTrue(moduleDescriptorPredicate.test(new ModuleDescriptorStubA()));
35      }
36  
37      @Test
38      public void testDoesNotMatchModuleWithModuleDescriptorClassExtendingButNotExactlyMatchingClass() {
39          assertTrue(moduleDescriptorPredicate.test(new ModuleDescriptorStubB()));
40      }
41  
42      @Test
43      public void testDoesNotMatchModuleWithModuleDescriptorClassNotMatchingClass() {
44          assertFalse(moduleDescriptorPredicate.test(new MockUnusedModuleDescriptor()));
45      }
46  
47      private static class ModuleDescriptorStubA extends AbstractModuleDescriptor {
48          ModuleDescriptorStubA() {
49              super(ModuleFactory.LEGACY_MODULE_FACTORY);
50          }
51  
52          public Object getModule() {
53              return null;
54          }
55      }
56  
57      private static class ModuleDescriptorStubB extends ModuleDescriptorStubA {
58      }
59  }