--- /dev/null
+package net.pterodactylus.sone.template;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import net.pterodactylus.sone.data.Profile;
+import net.pterodactylus.sone.data.Sone;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit test for {@link CollectionAccessor}.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+public class CollectionAccessorTest {
+
+ private final CollectionAccessor accessor = new CollectionAccessor();
+ private final Collection<Object> collection = new ArrayList<Object>();
+
+ @Before
+ public void setupCollection() {
+ collection.add(new Object());
+ collection.add(createSone("One", "1.", "First"));
+ collection.add(new Object());
+ collection.add(createSone("Two", "2.", "Second"));
+ }
+
+ private Sone createSone(String firstName, String middleName,
+ String lastName) {
+ Sone sone = mock(Sone.class);
+ Profile profile = new Profile(sone);
+ profile.setFirstName(firstName).setMiddleName(middleName).setLastName(
+ lastName);
+ when(sone.getProfile()).thenReturn(profile);
+ return sone;
+ }
+
+ @Test
+ public void soneNamesAreConcatenatedCorrectly() {
+ assertThat(accessor.get(null, collection, "soneNames"),
+ is((Object) "One 1. First, Two 2. Second"));
+ }
+
+ @Test
+ public void sizeIsReportedCorrectly() {
+ assertThat(accessor.get(null, collection, "size"),
+ is((Object) Integer.valueOf(4)));
+ }
+
+}