[dna-commits] DNA SVN: r446 - in trunk/extensions/dna-connector-federation/src: test/java/org/jboss/dna/connector/federation/merge and 1 other directory.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Tue Aug 19 11:04:03 EDT 2008


Author: rhauch
Date: 2008-08-19 11:04:03 -0400 (Tue, 19 Aug 2008)
New Revision: 446

Modified:
   trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java
   trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java
Log:
DNA-188 - Complete the federating command executor
http://jira.jboss.com/jira/browse/DNA-188

Added more unit tests for the FederatedNode class.

Modified: trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java
===================================================================
--- trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java	2008-08-19 14:46:40 UTC (rev 445)
+++ trunk/extensions/dna-connector-federation/src/main/java/org/jboss/dna/connector/federation/merge/FederatedNode.java	2008-08-19 15:04:03 UTC (rev 446)
@@ -34,11 +34,13 @@
  */
 public class FederatedNode extends BasicGetNodeCommand implements CreateNodeCommand {
 
+    protected static final NodeConflictBehavior DEFAULT_CONFLICT_BEHAVIOR = NodeConflictBehavior.UPDATE;
+
     private static final long serialVersionUID = 1L;
 
     private final UUID uuid;
     private MergePlan mergePlan;
-    private NodeConflictBehavior nodeConflictBehavior = NodeConflictBehavior.UPDATE;
+    private NodeConflictBehavior nodeConflictBehavior = DEFAULT_CONFLICT_BEHAVIOR;
 
     /**
      * Create a federated node given the path and UUID.
@@ -136,10 +138,12 @@
     }
 
     /**
-     * @param nodeConflictBehavior Sets nodeConflictBehavior to the specified value.
+     * Set the behavior when node conflicts arise.
+     * 
+     * @param nodeConflictBehavior the conflict behavior, or null if the default should be used
      */
-    public void setNodeConflictBehavior( NodeConflictBehavior nodeConflictBehavior ) {
-        this.nodeConflictBehavior = nodeConflictBehavior;
+    public void setConflictBehavior( NodeConflictBehavior nodeConflictBehavior ) {
+        this.nodeConflictBehavior = nodeConflictBehavior != null ? nodeConflictBehavior : DEFAULT_CONFLICT_BEHAVIOR;
     }
 
 }

Modified: trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java
===================================================================
--- trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java	2008-08-19 14:46:40 UTC (rev 445)
+++ trunk/extensions/dna-connector-federation/src/test/java/org/jboss/dna/connector/federation/merge/FederatedNodeTest.java	2008-08-19 15:04:03 UTC (rev 446)
@@ -21,21 +21,101 @@
  */
 package org.jboss.dna.connector.federation.merge;
 
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNot.not;
+import static org.hamcrest.core.IsNull.nullValue;
+import static org.hamcrest.core.IsSame.sameInstance;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.stub;
+import java.util.UUID;
+import org.jboss.dna.spi.graph.Path;
+import org.jboss.dna.spi.graph.commands.NodeConflictBehavior;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import org.mockito.MockitoAnnotations.Mock;
 
 /**
  * @author Randall Hauch
  */
 public class FederatedNodeTest {
 
+    private FederatedNode node;
+    private UUID uuid;
+    @Mock
+    private Path path;
+
     @Before
     public void beforeEach() {
+        MockitoAnnotations.initMocks(this);
+        uuid = UUID.randomUUID();
+        node = new FederatedNode(path, uuid);
     }
 
     @Test
-    public void shouldDoSomething() {
+    public void shouldHaveSameUuidSuppliedToConstructor() {
+        assertThat(node.getUuid(), is(sameInstance(uuid)));
+    }
 
+    @Test
+    public void shouldHaveSamePathSuppliedToConstructor() {
+        assertThat(node.getPath(), is(sameInstance(path)));
     }
 
+    @Test
+    public void shouldNotHaveMergePlanUponConstruction() {
+        assertThat(node.getMergePlan(), is(nullValue()));
+    }
+
+    @Test
+    public void shouldAllowSettingMergePlan() {
+        MergePlan mergePlan = mock(MergePlan.class);
+        node.setMergePlan(mergePlan);
+        assertThat(node.getMergePlan(), is(sameInstance(mergePlan)));
+    }
+
+    @Test
+    public void shouldHaveDefaultConflictBehaviorUponConstruction() {
+        assertThat(node.getConflictBehavior(), is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+    }
+
+    @Test
+    public void shouldAllowSettingConflictBehavior() {
+        NodeConflictBehavior behavior = NodeConflictBehavior.REPLACE;
+        assertThat(node.getConflictBehavior(), is(not(behavior)));
+        node.setConflictBehavior(behavior);
+        assertThat(node.getConflictBehavior(), is(behavior));
+    }
+
+    @Test
+    public void shouldAllowSettingConflictBehaviorToNull() {
+        node.setConflictBehavior(null);
+        assertThat(node.getConflictBehavior(), is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+
+        // Set to something that is not the default, then set to null
+        NodeConflictBehavior behavior = NodeConflictBehavior.REPLACE;
+        assertThat(node.getConflictBehavior(), is(not(behavior)));
+        node.setConflictBehavior(behavior);
+        assertThat(node.getConflictBehavior(), is(behavior));
+        node.setConflictBehavior(null);
+        assertThat(node.getConflictBehavior(), is(FederatedNode.DEFAULT_CONFLICT_BEHAVIOR));
+    }
+
+    @Test
+    public void shouldCompareFederatedNodesBasedUponPaths() {
+        Path path2 = mock(Path.class);
+        stub(path2.compareTo(path)).toReturn(1);
+        stub(path.compareTo(path2)).toReturn(-1);
+        FederatedNode node2 = new FederatedNode(path2, UUID.randomUUID());
+        assertThat(node.compareTo(node2), is(-1));
+        assertThat(node2.compareTo(node), is(1));
+    }
+
+    @Test
+    public void shouldHaveHashCodeThatIsTheHashCodeOfTheUuid() {
+        node = new FederatedNode(path, uuid);
+        assertThat(node.hashCode(), is(uuid.hashCode()));
+    }
+
 }




More information about the dna-commits mailing list