package hu.sch.web.rest.dto;
import hu.sch.domain.Group;
import hu.sch.domain.Membership;
import hu.sch.domain.Post;
import hu.sch.domain.PostType;
import hu.sch.domain.user.User;
import hu.sch.services.MembershipManagerLocal;
import java.util.Arrays;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import static org.mockito.Mockito.*;
import org.mockito.runners.MockitoJUnitRunner;
/**
*
* @author tomi
*/
@RunWith(MockitoJUnitRunner.class)
public class EntitlementProducerTest {
@Mock
MembershipManagerLocal mock;
User user = new User();
@Test
public void entitleForSingleMembership() {
Membership ms = createMembership();
when(mock.findMembershipsForUser(user)).thenReturn(Arrays.asList(ms));
EntitlementProducer ep = new EntitlementProducer(user, mock);
assertEquals("urn:geant:niif.hu:sch.bme.hu:entitlement:tag:Kir-Dev:1", ep.createEntitlement());
}
@Test
public void noMembershipMeansNoEntitlement() {
EntitlementProducer ep = new EntitlementProducer(user, mock);
assertNull(ep.createEntitlement());
}
@Test
public void everyPostHasItsEntitlement() {
Membership ms = createMembership();
addPost(ms, "körvezető");
addPost(ms, "jani");
when(mock.findMembershipsForUser(user)).thenReturn(Arrays.asList(ms));
String memberEntitlement = "urn:geant:niif.hu:sch.bme.hu:entitlement:tag:Kir-Dev:1";
String leaderEntitlemnet = "urn:geant:niif.hu:sch.bme.hu:entitlement:körvezető:Kir-Dev:1";
String janiEntitlement = "urn:geant:niif.hu:sch.bme.hu:entitlement:jani:Kir-Dev:1";
EntitlementProducer ep = new EntitlementProducer(user, mock);
String entitlement = ep.createEntitlement();
assertTrue(entitlement.contains(memberEntitlement));
assertTrue(entitlement.contains(leaderEntitlemnet));
assertTrue(entitlement.contains(janiEntitlement));
}
@Test
public void semicolonSpeparatesEntitlements() {
Membership ms = createMembership();
addPost(ms, "körvezető");
addPost(ms, "jani");
when(mock.findMembershipsForUser(user)).thenReturn(Arrays.asList(ms));
EntitlementProducer ep = new EntitlementProducer(user, mock);
String entitlement = ep.createEntitlement();
// entitlements are separated by a semicolon
assertEquals(3, entitlement.split(";").length);
}
@Test
public void membershipUnderReviewDoesNotHaveMemberRights() {
Membership ms = createMembership();
PostType pt = new PostType();
pt.setPostName("feldolgozás alatt");
// FIXME: #86/github
pt.setId(6L);
addPost(ms, pt);
when(mock.findMembershipsForUser(user)).thenReturn(Arrays.asList(ms));
String memberEntitlement = "urn:geant:niif.hu:sch.bme.hu:entitlement:tag:Kir-Dev:1";
EntitlementProducer ep = new EntitlementProducer(user, mock);
assertFalse(ep.createEntitlement().contains(memberEntitlement));
}
private Membership createMembership() {
Membership ms = new Membership();
ms.setGroupId(1L);
Group g = new Group();
g.setName("Kir-Dev");
ms.setGroup(g);
user.getMemberships().add(ms);
return ms;
}
private void addPost(Membership ms, String postName) {
PostType pt = new PostType();
pt.setPostName(postName);
addPost(ms, pt);
}
private void addPost(Membership ms, PostType pt) {
Post p = new Post();
p.setPostType(pt);
ms.getPosts().add(p);
}
}