test helpers
This commit is contained in:
154
src/test/java/mops/gruppen2/GroupBuilder.java
Normal file
154
src/test/java/mops/gruppen2/GroupBuilder.java
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
package mops.gruppen2;
|
||||||
|
|
||||||
|
import mops.gruppen2.domain.event.AddMemberEvent;
|
||||||
|
import mops.gruppen2.domain.event.CreateGroupEvent;
|
||||||
|
import mops.gruppen2.domain.event.DestroyGroupEvent;
|
||||||
|
import mops.gruppen2.domain.event.Event;
|
||||||
|
import mops.gruppen2.domain.event.KickMemberEvent;
|
||||||
|
import mops.gruppen2.domain.event.SetDescriptionEvent;
|
||||||
|
import mops.gruppen2.domain.event.SetInviteLinkEvent;
|
||||||
|
import mops.gruppen2.domain.event.SetLimitEvent;
|
||||||
|
import mops.gruppen2.domain.event.SetTitleEvent;
|
||||||
|
import mops.gruppen2.domain.event.SetTypeEvent;
|
||||||
|
import mops.gruppen2.domain.event.UpdateRoleEvent;
|
||||||
|
import mops.gruppen2.domain.model.group.Group;
|
||||||
|
import mops.gruppen2.domain.model.group.Role;
|
||||||
|
import mops.gruppen2.domain.model.group.Type;
|
||||||
|
import mops.gruppen2.domain.model.group.User;
|
||||||
|
import mops.gruppen2.domain.model.group.wrapper.Description;
|
||||||
|
import mops.gruppen2.domain.model.group.wrapper.Limit;
|
||||||
|
import mops.gruppen2.domain.model.group.wrapper.Link;
|
||||||
|
import mops.gruppen2.domain.model.group.wrapper.Title;
|
||||||
|
import mops.gruppen2.infrastructure.GroupCache;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static mops.gruppen2.TestHelper.uuid;
|
||||||
|
|
||||||
|
public final class GroupBuilder {
|
||||||
|
|
||||||
|
private final UUID groupid;
|
||||||
|
private int version;
|
||||||
|
private final GroupCache groupCache;
|
||||||
|
private final Group group = Group.EMPTY();
|
||||||
|
|
||||||
|
private GroupBuilder(GroupCache cache, UUID id) {
|
||||||
|
groupCache = cache;
|
||||||
|
groupid = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erzeugt neuen GruppenBuilder mit Cache und ID
|
||||||
|
*/
|
||||||
|
public static GroupBuilder get(GroupCache cache, int id) {
|
||||||
|
return new GroupBuilder(cache, uuid(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisiert Gruppe mit Id, Creator und Zeit
|
||||||
|
*/
|
||||||
|
public GroupBuilder group() {
|
||||||
|
return apply(new CreateGroupEvent(groupid, "TEST", LocalDateTime.now()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialisiert TestAdmin
|
||||||
|
*/
|
||||||
|
public GroupBuilder testadmin() {
|
||||||
|
apply(new AddMemberEvent(groupid, "TEST", "TEST", new User("TEST")));
|
||||||
|
return apply(new UpdateRoleEvent(groupid, "TEST", "TEST", Role.ADMIN));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt Nutzer hinzu
|
||||||
|
*/
|
||||||
|
public GroupBuilder add(String userid) {
|
||||||
|
return apply(new AddMemberEvent(groupid, "TEST", userid, new User(userid)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entfernt Nutzer
|
||||||
|
*/
|
||||||
|
public GroupBuilder kick(String userid) {
|
||||||
|
return apply(new KickMemberEvent(groupid, "TEST", userid));
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupBuilder limit(int i) {
|
||||||
|
return apply(new SetLimitEvent(groupid, "TEST", new Limit(i)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht Nutzer zu Admin
|
||||||
|
*/
|
||||||
|
public GroupBuilder admin(String userid) {
|
||||||
|
return apply(new UpdateRoleEvent(groupid, "TEST", userid, Role.ADMIN));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht Nutzer zu regulärem
|
||||||
|
*/
|
||||||
|
public GroupBuilder regular(String userid) {
|
||||||
|
return apply(new UpdateRoleEvent(groupid, "TEST", userid, Role.REGULAR));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht Gruppe öffentlich
|
||||||
|
*/
|
||||||
|
public GroupBuilder publik() {
|
||||||
|
return apply(new SetTypeEvent(groupid, "TEST", Type.PUBLIC));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht Gruppe privat
|
||||||
|
*/
|
||||||
|
public GroupBuilder privat() {
|
||||||
|
return apply(new SetTypeEvent(groupid, "TEST", Type.PRIVATE));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht Gruppe zu Veranstaltung
|
||||||
|
*/
|
||||||
|
public GroupBuilder lecture() {
|
||||||
|
return apply(new SetTypeEvent(groupid, "TEST", Type.LECTURE));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt Beschreibung
|
||||||
|
*/
|
||||||
|
public GroupBuilder desc(String descr) {
|
||||||
|
return apply(new SetDescriptionEvent(groupid, "TEST", new Description(descr)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt Titel
|
||||||
|
*/
|
||||||
|
public GroupBuilder title(String titl) {
|
||||||
|
return apply(new SetTitleEvent(groupid, "TEST", new Title(titl)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt Link
|
||||||
|
*/
|
||||||
|
public GroupBuilder link(int lnk) {
|
||||||
|
return apply(new SetInviteLinkEvent(groupid, "TEST", new Link(uuid(lnk).toString())));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Löscht Gruppe
|
||||||
|
*/
|
||||||
|
public GroupBuilder destroy() {
|
||||||
|
return apply(new DestroyGroupEvent(groupid, "TEST"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Group build() {
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GroupBuilder apply(Event event) {
|
||||||
|
version++;
|
||||||
|
event.init(version);
|
||||||
|
event.apply(group, groupCache);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
15
src/test/java/mops/gruppen2/TestHelper.java
Normal file
15
src/test/java/mops/gruppen2/TestHelper.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package mops.gruppen2;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public final class TestHelper {
|
||||||
|
|
||||||
|
public static UUID uuid(int id) {
|
||||||
|
String num = String.valueOf(id);
|
||||||
|
String string = "00000000-0000-0000-0000-";
|
||||||
|
string += "0".repeat(12 - num.length());
|
||||||
|
string += num;
|
||||||
|
|
||||||
|
return UUID.fromString(string);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user