package org.priki.bo;
import junit.framework.TestCase;
public class EscortTest extends TestCase {
Wiki all;
protected void setUp() throws Exception {
super.setUp();
all = new Wiki();
}
protected void tearDown() throws Exception {
super.tearDown();
all = null;
}
public User newUser(String name) {
User u = all.getAdmin().getAccessManager().getUser(name);
if (u == null) {
u = new User(name, "password", "completeName", "email");
all.getAdmin().getAccessManager().addUser(u);
u = all.getAdmin().getAccessManager().getUser(name);
}
return u;
}
public void testEscortAutomaticInclusion() {
Wikiword scorpion = all.newWikiword("Scorpion");
User vitor = newUser("Vitor");
User paulo = newUser("Paulo");
Text definitionOfScorpion = new Text(vitor);
definitionOfScorpion.add(all.newWikiword("Venom"));
definitionOfScorpion.add(all.newWikiword("Animal"));
definitionOfScorpion.add(all.newElement("."));
scorpion.setDefinition(definitionOfScorpion);
assertEquals(1, scorpion.getEscortWikiWord().size());
assertTrue(scorpion.getEscortWikiWord().contains(vitor));
// seting another text
Text anotherDefinitionOfScorpion = new Text("127.0.0.1");
anotherDefinitionOfScorpion.add(all.newWikiword("Animal"));
anotherDefinitionOfScorpion.add(all.newWikiword("with"));
anotherDefinitionOfScorpion.add(all.newWikiword("six"));
scorpion.setDefinition(anotherDefinitionOfScorpion);
assertEquals(1, scorpion.getEscortWikiWord().size());
assertTrue(scorpion.getEscortWikiWord().contains(vitor));
// backing the history
scorpion.setDefinition(anotherDefinitionOfScorpion);
assertEquals(1, scorpion.getEscortWikiWord().size());
assertTrue(scorpion.getEscortWikiWord().contains(vitor));
// adding a comment
Text comment = new Text(paulo);
comment.add(all.newWikiword("Simple"));
comment.add(all.newWikiword("comment"));
scorpion.addComment(comment);
assertEquals(2, scorpion.getEscortWikiWord().size());
assertTrue(scorpion.getEscortWikiWord().contains(vitor));
assertTrue(scorpion.getEscortWikiWord().contains(paulo));
scorpion.removeComment(0);
assertEquals(2, scorpion.getEscortWikiWord().size());
assertTrue(scorpion.getEscortWikiWord().contains(vitor));
assertTrue(scorpion.getEscortWikiWord().contains(paulo));
}
public void testEscortManuallyInclusion() {
Wikiword fish = all.newWikiword("Fish");
User vitor = newUser("Vitor");
User paulo = newUser("Paulo");
fish.addEscortWikiword(vitor);
assertEquals(1, fish.getEscortWikiWord().size());
assertTrue(fish.getEscortWikiWord().contains(vitor));
fish.addEscortWikiword(paulo);
assertEquals(2, fish.getEscortWikiWord().size());
assertTrue(fish.getEscortWikiWord().contains(vitor));
assertTrue(fish.getEscortWikiWord().contains(paulo));
fish.removeEscortWikiword(paulo);
assertEquals(1, fish.getEscortWikiWord().size());
assertTrue(fish.getEscortWikiWord().contains(vitor));
assertFalse(fish.getEscortWikiWord().contains(paulo));
}
public void testCheckEscortingGlobal() {
User vitor = newUser("Vitor");
assertEquals(0, all.getAdmin().getAccessManager().getEscortingUsers().size());
vitor.setEscortWiki(true);
assertEquals(1, all.getAdmin().getAccessManager().getEscortingUsers().size());
}
public void testCheckEscortingWithPermittions() {
Wikiword fish = all.newWikiword("Fish");
User vitor = newUser("Vitor");
User paulo = newUser("Paulo");
User pedro = newUser("Pedro");
vitor.setEscortWiki(true);
Text definition = new Text(paulo);
definition.add(all.newWikiword("Test"));
fish.setDefinition(definition);
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).contains(paulo));
assertEquals(2, all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).size());
definition = new Text(vitor);
definition.add(all.newWikiword("Test"));
fish.setDefinition(definition);
assertEquals(2, all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).contains(paulo));
definition = new Text(pedro);
definition.add(all.newWikiword("Test"));
fish.setDefinition(definition);
assertEquals(3, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(paulo));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(pedro));
fish.setVisibility(Wikiword.Visibility.Admin);
assertEquals(0, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
all.getAdmin().getAccessManager().addAdmin(pedro.getIdentifier());
assertEquals(1, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(pedro));
}
public void testCheckEscortingInComments() {
Wikiword fish = all.newWikiword("Fish");
User vitor = newUser("Vitor");
User paulo = newUser("Paulo");
User pedro = newUser("Pedro");
vitor.setEscortWiki(true);
Text definition = new Text(paulo);
definition.add(all.newWikiword("Test"));
fish.setDefinition(definition);
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).contains(paulo));
assertEquals(2, all.getAdmin().getAccessManager().getEscortingUsers(paulo, fish).size());
definition = new Text(vitor);
definition.add(all.newWikiword("Test"));
fish.addComment(definition);
assertEquals(2, all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(vitor, fish).contains(paulo));
definition = new Text(pedro);
definition.add(all.newWikiword("Test"));
fish.addComment(definition);
assertEquals(3, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(vitor));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(paulo));
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(pedro));
fish.setVisibility(Wikiword.Visibility.Admin);
assertEquals(0, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
all.getAdmin().getAccessManager().addAdmin(pedro.getIdentifier());
assertEquals(1, all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).size());
assertTrue(all.getAdmin().getAccessManager().getEscortingUsers(pedro, fish).contains(pedro));
}
}