+package net.pterodactylus.sone.template;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.mockito.Mockito.when;
+
+import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.util.template.TemplateContext;
+
+import com.google.common.collect.ImmutableMap;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+/**
+ * Unit test for {@link BuildIdFilter}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class BuildIdFilterTest {
+
+ private static final String SONE_ID = "~Yp72VX0c6FLDvgIzip5wIvaGIIrjKcKvnX~pTaMKXs";
+ private static final String ELEMENT_ID = "88CC70AE-E853-4EEE-B245-E4C55F40DDDF";
+ private static final Object EXPECTED_ID = "139a629a13f6a2c4191fb19ecead7e57335ea3deb2a971b88d5e004378c4daad";
+
+ private final BuildIdFilter buildIdFilter = new BuildIdFilter();
+ private final TemplateContext templateContext = null;
+
+ @Test
+ public void filterBuildsCorrectIdsWithSoneAsString() {
+ assertThat(buildIdFilter.format(templateContext, ELEMENT_ID, ImmutableMap.<String, Object>of("sone", SONE_ID)), is(EXPECTED_ID));
+ }
+
+ @Test
+ public void filterBuildsCorrectIdsWithSoneAsSone() {
+ Sone sone = Mockito.mock(Sone.class);
+ when(sone.getId()).thenReturn(SONE_ID);
+ assertThat(buildIdFilter.format(templateContext, ELEMENT_ID, ImmutableMap.<String, Object>of("sone", sone)), is(EXPECTED_ID));
+ }
+
+ @Test
+ public void filterReturnsNullIfSoneNotPresent() {
+ assertThat(buildIdFilter.format(templateContext, ELEMENT_ID, ImmutableMap.<String, Object>of()), nullValue());
+ }
+
+ @Test
+ public void filterReturnsNullIfElementNotPresent() {
+ assertThat(buildIdFilter.format(templateContext, null, ImmutableMap.<String, Object>of("sone", SONE_ID)), nullValue());
+ }
+
+}