package com.aperture_software.glados_wiki.tests;
import com.aperture_software.glados_wiki.entities.Group;
import com.aperture_software.glados_wiki.junit.MyTestcase;
import com.aperture_software.glados_wiki.services.GroupService;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import junit.framework.Assert;
import org.apache.commons.lang3.ObjectUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* Created by jhyun on 13. 12. 25.
*/
public class GroupServiceTests extends MyTestcase {
@Autowired
private GroupService groupService;
private List<Group> everyGroups = new ArrayList<Group>();
@Before
public void prepare() {
List<String> descs = ImmutableList.<String>builder()
.add("foo").add("bar").add("zoo").add("spam").add("eggs")
.add("alpha").add("bravo").add("charlie").add("delta").add("echo")
.build();
for (String desc : descs) {
final String name = UUID.randomUUID().toString();
Group g = groupService.create(name, desc);
everyGroups.add(g);
}
}
@After
public void cleanup() {
for (Group g : everyGroups) {
groupService.delete(g);
}
}
@Test
public void t_01() {
List<Group> l = groupService.list(Optional.<String>of("o"), 0, Integer.MAX_VALUE);
List<String> l2 = Lists.transform(l, new GroupDescription());
LOG.debug("FOUND GROUPS = " + ObjectUtils.toString(l2));
for (String s : l2) {
Assert.assertTrue(s.toLowerCase().contains("o"));
}
}
@Test
public void t_02() {
List<Group> l = groupService.list(Optional.<String>of("0"), 0, Integer.MAX_VALUE);
List<String> l2 = Lists.transform(l, new GroupName());
LOG.debug("FOUND GROUPS = " + ObjectUtils.toString(l2));
for (String s : l2) {
Assert.assertTrue(s.toLowerCase().contains("0"));
}
}
private static class GroupName implements Function<Group, String> {
@Override
public String apply(Group input) {
if (input != null) {
return input.getName();
} else {
return null;
}
}
}
private static class GroupDescription implements Function<Group, String> {
@Override
public String apply(Group input) {
if (input != null) {
return input.getDescription();
} else {
return null;
}
}
}
}