View Javadoc
1   package com.atlassian.plugin.descriptors;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import org.junit.Test;
5   
6   import static org.junit.Assert.assertFalse;
7   import static org.junit.Assert.assertTrue;
8   import static org.mockito.Mockito.mock;
9   import static org.mockito.Mockito.when;
10  
11  /**
12   * Responsible for testing that the <tt>equals</tt> contract defined by
13   * {@link com.atlassian.plugin.ModuleDescriptor#equals(Object)} is fulfilled by the
14   * {@link ModuleDescriptors.EqualsBuilder} class.
15   *
16   * @since 2.8.0
17   */
18  public class TestModuleDescriptorsEqualsBuilder {
19  
20      @Test
21      public void testAModuleDescriptorMustNotBeEqualToNull() {
22          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
23  
24          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(null));
25      }
26  
27      @Test
28      public void testModuleDescriptorsShouldBeEqualIfTheyHaveTheSameCompleteKey() {
29          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
30          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
31  
32          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
33          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
34  
35          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
36      }
37  
38      @Test
39      public void testModuleDescriptorsShouldBeUnEqualIfTheyDoNotHaveTheSameCompleteKey() {
40          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
41          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
42  
43          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
44          when(descriptor2.getCompleteKey()).thenReturn("def:xyz");
45  
46          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
47      }
48  
49      @Test
50      public void testAModuleDescriptorMustNotBeEqualToAnObjectThatIsNotAModuleDescriptor() {
51          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
52          final Object anObjectThatIsNotAModuleDescriptor = new Object();
53  
54          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(anObjectThatIsNotAModuleDescriptor));
55      }
56  
57      @Test
58      public void testAModuleDescriptorShouldBeEqualToItSelf() {
59          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
60  
61          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(descriptor));
62      }
63  
64      @Test
65      public void testEqualsImplementationIsReflexiveForTwoModuleDescriptorsWithTheSameCompleteKey() {
66          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
67          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
68  
69          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
70          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
71  
72          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
73          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor2).isEqualTo(descriptor1));
74      }
75  
76      @Test
77      public void testEqualsImplementationIsTransitiveForThreeDescriptorsWithTheSameCompleteKey() {
78          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
79          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
80          final ModuleDescriptor descriptor3 = mock(ModuleDescriptor.class);
81  
82  
83          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
84          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
85          when(descriptor3.getCompleteKey()).thenReturn("abc:xyz");
86  
87          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
88          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor2).isEqualTo(descriptor3));
89          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor3));
90      }
91  }