package com.aperture_software.glados_wiki.tests;
import com.aperture_software.glados_wiki.entities.*;
import com.aperture_software.glados_wiki.junit.MyTestcase;
import com.aperture_software.glados_wiki.services.GroupService;
import com.aperture_software.glados_wiki.services.PageContentService;
import com.aperture_software.glados_wiki.services.PageService;
import com.aperture_software.glados_wiki.services.UserService;
import com.google.common.base.Optional;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.UUID;
/**
* Created by jhyun on 14. 2. 4.
*/
public class PageReadablesTests extends MyTestcase {
private final String RANDOM_TITLE = UUID.randomUUID().toString();
@Autowired
private PageService pageService;
@Autowired
private PageContentService pageContentService;
@Autowired
private UserService userService;
@Autowired
private GroupService groupService;
private Page page = null;
private PageContent pageContent = null;
private Group admins = null;
private User firstAdmin = null;
@Before
public void prepare() {
// Page, PageContent.
page = pageService.createByTitle(RANDOM_TITLE);
//
pageContent = new PageContent();
pageContent.setPage(page);
pageContent.setContent("foobar");
pageContentService.save(pageContent);
//
pageService.addContent(pageContent);
page.setCurrent(pageContent);
pageService.update(page);
// Example User, Group.
Optional<Group> ADMINS_ = groupService.getByName(GroupService.ADMIN_ROLE);
Assert.assertTrue(ADMINS_.isPresent());
//
admins = ADMINS_.get();
List<User> users = userService.list(Optional.<String>absent(), Optional.of(admins.getName()), 0, Integer.MAX_VALUE);
Assert.assertTrue(users.size() > 0);
firstAdmin = users.get(0);
}
@After
public void cleanup() {
if (pageContent != null) {
pageContentService.delete(pageContent);
}
if (page != null) {
pageService.delete(page);
}
}
@Test
public void t_01() {
//
page.getReadables().add(admins);
page.getReadables().add(firstAdmin);
pageService.update(page);
//
Optional<Page> p_ = pageService.getPageByTitle(RANDOM_TITLE);
Page p = p_.get();
//
for (UserAuthentication ua : p.getReadables()) {
if (ua instanceof Group) {
Group g = (Group) ua;
Assert.assertEquals(g.getName(), admins.getName());
} else if (ua instanceof User) {
User u = (User) ua;
Assert.assertEquals(u.getUsername(), firstAdmin.getUsername());
} else {
Assert.assertFalse("UNEXPECTED-TYPED READABLES MEMBER!!!", false);
}
}
}
}