+package net.pterodactylus.sone.data.impl;
+
+import static org.mockito.Mockito.mock;
+
+import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.freenet.wot.Identity;
+import net.pterodactylus.sone.freenet.wot.OwnIdentity;
+
+import org.junit.Test;
+
+/**
+ * Unit test for {@link AbstractSoneBuilder}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class AbstractSoneBuilderTest {
+
+ private final AbstractSoneBuilder soneBuilder = new AbstractSoneBuilder() {
+ @Override
+ public Sone build() throws IllegalStateException {
+ validate();
+ return null;
+ }
+ };
+
+ @Test
+ public void localSoneIsValidated() {
+ Identity ownIdentity = mock(OwnIdentity.class);
+ soneBuilder.local().from(ownIdentity).build();
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void localSoneIsNotValidatedIfIdentityIsNotAnOwnIdentity() {
+ Identity identity = mock(Identity.class);
+ soneBuilder.local().from(identity).build();
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void localSoneIsNotValidatedIfIdentityIsNull() {
+ soneBuilder.local().build();
+ }
+
+ @Test
+ public void removeSoneIsValidate() {
+ Identity identity = mock(Identity.class);
+ soneBuilder.from(identity).build();
+ }
+
+ @Test(expected = IllegalStateException.class)
+ public void remoteSoneIsNotValidatedIfIdentityIsNull() {
+ soneBuilder.build();
+ }
+
+}