Add unit test for “set trust” job.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / WebOfTrustUpdater.java
index dd3de58..539897a 100644 (file)
@@ -34,6 +34,7 @@ import net.pterodactylus.sone.freenet.wot.WebOfTrustException;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.service.AbstractService;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.Inject;
 
 /**
@@ -258,7 +259,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class WebOfTrustUpdateJob {
+       @VisibleForTesting
+       class WebOfTrustUpdateJob implements Runnable {
 
                /** Object for synchronization. */
                @SuppressWarnings("hiding")
@@ -279,6 +281,7 @@ public class WebOfTrustUpdater extends AbstractService {
                 * <p/>
                 * The implementation of this class does nothing.
                 */
+               @Override
                public void run() {
                        /* does nothing. */
                }
@@ -329,7 +332,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class SetTrustJob extends WebOfTrustUpdateJob {
+       @VisibleForTesting
+       class SetTrustJob extends WebOfTrustUpdateJob {
 
                /** The identity giving the trust. */
                private final OwnIdentity truster;
@@ -357,8 +361,8 @@ public class WebOfTrustUpdater extends AbstractService {
                 *              The comment of the trust relation
                 */
                public SetTrustJob(OwnIdentity truster, Identity trustee, Integer score, String comment) {
-                       this.truster = truster;
-                       this.trustee = trustee;
+                       this.truster = checkNotNull(truster, "truster must not be null");
+                       this.trustee = checkNotNull(trustee, "trustee must not be null");
                        this.score = score;
                        this.comment = comment;
                }
@@ -369,15 +373,11 @@ public class WebOfTrustUpdater extends AbstractService {
                public void run() {
                        try {
                                if (score != null) {
-                                       if (trustee instanceof DefaultIdentity) {
-                                               ((DefaultIdentity) trustee).setTrust(truster, new Trust(score, null, 0));
-                                       }
                                        webOfTrustConnector.setTrust(truster, trustee, score, comment);
+                                       trustee.setTrust(truster, new Trust(score, null, 0));
                                } else {
-                                       if (trustee instanceof DefaultIdentity) {
-                                               ((DefaultIdentity) trustee).setTrust(truster, null);
-                                       }
                                        webOfTrustConnector.removeTrust(truster, trustee);
+                                       trustee.removeTrust(truster);
                                }
                                finish(true);
                        } catch (WebOfTrustException wote1) {
@@ -397,19 +397,19 @@ public class WebOfTrustUpdater extends AbstractService {
                                return false;
                        }
                        SetTrustJob updateJob = (SetTrustJob) object;
-                       return ((truster == null) ? (updateJob.truster == null) : updateJob.truster.equals(truster)) && ((trustee == null) ? (updateJob.trustee == null) : updateJob.trustee.equals(trustee));
+                       return updateJob.truster.equals(truster) && updateJob.trustee.equals(trustee);
                }
 
                /** {@inheritDoc} */
                @Override
                public int hashCode() {
-                       return getClass().hashCode() ^ ((truster == null) ? 0 : truster.hashCode()) ^ ((trustee == null) ? 0 : trustee.hashCode());
+                       return getClass().hashCode() ^ truster.hashCode() ^ trustee.hashCode();
                }
 
                /** {@inheritDoc} */
                @Override
                public String toString() {
-                       return String.format("%s[truster=%s,trustee=%s]", getClass().getSimpleName(), (truster == null) ? null : truster.getId(), (trustee == null) ? null : trustee.getId());
+                       return String.format("%s[truster=%s,trustee=%s]", getClass().getSimpleName(), truster.getId(), trustee.getId());
                }
 
        }
@@ -419,7 +419,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class WebOfTrustContextUpdateJob extends WebOfTrustUpdateJob {
+       @VisibleForTesting
+       class WebOfTrustContextUpdateJob extends WebOfTrustUpdateJob {
 
                /** The own identity whose contexts to manage. */
                protected final OwnIdentity ownIdentity;
@@ -474,7 +475,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class AddContextJob extends WebOfTrustContextUpdateJob {
+       @VisibleForTesting
+       class AddContextJob extends WebOfTrustContextUpdateJob {
 
                /**
                 * Creates a new add-context job.
@@ -509,7 +511,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class RemoveContextJob extends WebOfTrustContextUpdateJob {
+       @VisibleForTesting
+       class RemoveContextJob extends WebOfTrustContextUpdateJob {
 
                /**
                 * Creates a new remove-context job.
@@ -544,7 +547,8 @@ public class WebOfTrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private class SetPropertyJob extends WebOfTrustUpdateJob {
+       @VisibleForTesting
+       class SetPropertyJob extends WebOfTrustUpdateJob {
 
                /** The own identity to update properties on. */
                private final OwnIdentity ownIdentity;