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
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 }