1

Merge remote-tracking branch 'origin/event-db' into html-gruppe

This commit is contained in:
killerber4t
2020-03-09 16:04:19 +01:00
9 changed files with 186 additions and 29 deletions

View File

@ -1,14 +1,16 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import mops.gruppen2.domain.User;
/**
* Fügt einen einzelnen Nutzer einer Gruppe hinzu.
*/
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class AddUserEvent extends Event {
String givenname;
String familyname;

View File

@ -1,10 +1,12 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CreateGroupEvent extends Event {
String groupTitle;
String groupDescription;

View File

@ -1,13 +1,13 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.*;
/**
* Entfernt ein einzelnes Mitglied einer Gruppe.
*/
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class DeleteUserEvent extends Event {
public DeleteUserEvent(long event_id, long group_id, String user_id) {

View File

@ -1,12 +1,28 @@
package mops.gruppen2.domain.event;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.Value;
import lombok.experimental.NonFinal;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Value
@NonFinal
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
@Getter
@NoArgsConstructor
@AllArgsConstructor
@JsonTypeInfo(
include = JsonTypeInfo.As.PROPERTY,
use = JsonTypeInfo.Id.NAME,
property = "type"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = AddUserEvent.class, name = "AddUserEvent"),
@JsonSubTypes.Type(value = AddUserEvent.class, name = "CreateGroupEvent"),
@JsonSubTypes.Type(value = AddUserEvent.class, name = "DeleteUserEvent"),
@JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupDescriptionEvent"),
@JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupTitleEvent"),
@JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateRoleEvent"),
})
public class Event {
long event_id;
long group_id;

View File

@ -1,13 +1,15 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* Ändert nur die Gruppenbeschreibung.
*/
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UpdateGroupDescriptionEvent extends Event {
String newGroupDescription;

View File

@ -1,13 +1,15 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* Ändert nur den Gruppentitel.
*/
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UpdateGroupTitleEvent extends Event {
String newGroupTitle;

View File

@ -1,14 +1,14 @@
package mops.gruppen2.domain.event;
import lombok.EqualsAndHashCode;
import lombok.Value;
import lombok.*;
import mops.gruppen2.domain.Role;
/**
* Aktualisiert die Gruppenrolle eines Teilnehmers.
*/
@EqualsAndHashCode(callSuper = true)
@Value
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UpdateRoleEvent extends Event {
Role newRole;

View File

@ -0,0 +1,92 @@
package mops.gruppen2.builder;
import com.github.javafaker.Faker;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.event.*;
import java.util.ArrayList;
import java.util.List;
public class EventBuilder {
public static CreateGroupEvent randomCreateGroupEvent() {
Faker faker = new Faker();
return new CreateGroupEvent(
faker.random().nextLong(),
faker.random().nextLong(),
faker.random().hex(),
faker.leagueOfLegends().champion(),
faker.leagueOfLegends().quote()
);
}
public static AddUserEvent randomAddUserEvent() {
Faker faker = new Faker();
String firstname = faker.name().firstName();
String lastname = faker.name().lastName();
return new AddUserEvent(
faker.random().nextLong(),
faker.random().nextLong(),
faker.random().hex(),
firstname,
lastname,
firstname + "." + lastname + "@mail.de"
);
}
public static List<Event> randomAddUserEvents(int count) {
List<Event> eventList = new ArrayList<>();
for (int i = 0; i < count; i++) {
eventList.add(EventBuilder.randomAddUserEvent());
}
return eventList;
}
public static DeleteUserEvent randomDeleteUserEvent(long group_id, String user_id) {
Faker faker = new Faker();
return new DeleteUserEvent(
faker.random().nextLong(),
group_id,
user_id
);
}
public static UpdateGroupDescriptionEvent randomUpdateGroupDescriptionEvent(long group_id) {
Faker faker = new Faker();
return new UpdateGroupDescriptionEvent(
faker.random().nextLong(),
group_id,
faker.random().hex(),
faker.leagueOfLegends().quote()
);
}
public static UpdateGroupTitleEvent randomUpdateGroupTitleEvent(long group_id) {
Faker faker = new Faker();
return new UpdateGroupTitleEvent(
faker.random().nextLong(),
group_id,
faker.random().hex(),
faker.leagueOfLegends().champion()
);
}
public static UpdateRoleEvent randomUpdateRoleEvent(long group_id, String user_id, Role role) {
Faker faker = new Faker();
return new UpdateRoleEvent(
faker.random().nextLong(),
group_id,
user_id,
role
);
}
}

View File

@ -0,0 +1,41 @@
package mops.gruppen2.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.repository.EventRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class SerializationServiceTest {
EventRepository eventRepository;
Event event;
@BeforeEach
public void setUp(){
}
@Disabled
@Test
void applyEvent() {
}
@Test
void serializeEventTest() {
event = new Event(1,1,"1");
SerializationService serializationService = new SerializationService(eventRepository);
try {
assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}");
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}