1

Merge branch 'slight-chganges' into killertester

# Conflicts:
#	src/test/java/mops/gruppen2/service/EventServiceTest.java
This commit is contained in:
Christoph
2020-03-24 15:35:35 +01:00
31 changed files with 488 additions and 483 deletions

View File

@ -0,0 +1,201 @@
package mops.gruppen2;
import com.github.javafaker.Faker;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.Visibility;
import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.DeleteUserEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent;
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
import mops.gruppen2.domain.event.UpdateRoleEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class TestBuilder {
private static final Faker faker = new Faker();
/**
* Generiert ein EventLog mit mehreren Gruppen und Usern.
*
* @param count Gruppenanzahl
* @param membercount Gesamte Mitgliederanzahl
* @return Eventliste
*/
public static List<Event> completeGroups(int count, int membercount) {
int memPerGroup = membercount / count;
return IntStream.rangeClosed(0, count)
.parallel()
.mapToObj(i -> completeGroup(memPerGroup))
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
public static List<Event> completeGroup(int membercount) {
List<Event> eventList = new ArrayList<>();
UUID groupId = UUID.randomUUID();
eventList.add(createGroupEvent(groupId));
eventList.add(updateGroupTitleEvent(groupId));
eventList.add(updateGroupDescriptionEvent(groupId));
eventList.addAll(addUserEvents(membercount, groupId));
return eventList;
}
public static List<Event> completeGroup() {
return completeGroup(100);
}
/**
* Generiert mehrere CreateGroupEvents, 1 <= groupId <= count.
*
* @param count Anzahl der verschiedenen Gruppen
* @return Eventliste
*/
public static List<CreateGroupEvent> createGroupEvents(int count) {
return IntStream.rangeClosed(0, count)
.parallel()
.mapToObj(i -> createGroupEvent())
.collect(Collectors.toList());
}
public static CreateGroupEvent createGroupEvent(UUID groupId) {
return new CreateGroupEvent(
groupId,
faker.random().hex(),
null,
GroupType.SIMPLE,
Visibility.PUBLIC,
10000000L
);
}
public static CreateGroupEvent createGroupEvent() {
return createGroupEvent(UUID.randomUUID());
}
/**
* Generiert mehrere AddUserEvents für eine Gruppe, 1 <= user_id <= count.
*
* @param count Anzahl der Mitglieder
* @param groupId Gruppe, zu welcher geaddet wird
* @return Eventliste
*/
public static List<Event> addUserEvents(int count, UUID groupId) {
return IntStream.rangeClosed(1, count)
.parallel()
.mapToObj(i -> addUserEvent(groupId, String.valueOf(i)))
.collect(Collectors.toList());
}
public static AddUserEvent addUserEvent(UUID groupId, String userId) {
String firstname = firstname();
String lastname = lastname();
return new AddUserEvent(
groupId,
userId,
firstname,
lastname,
firstname + "." + lastname + "@mail.de"
);
}
public static AddUserEvent addUserEvent(UUID groupId) {
return addUserEvent(groupId, faker.random().hex());
}
public static List<Event> deleteUserEvents(int count, List<Event> eventList) {
List<Event> removeEvents = new ArrayList<>();
List<Event> shuffle = eventList.parallelStream()
.filter(event -> event instanceof AddUserEvent)
.collect(Collectors.toList());
Collections.shuffle(shuffle);
for (Event event : shuffle) {
removeEvents.add(new DeleteUserEvent(event.getGroupId(), event.getUserId()));
if (removeEvents.size() >= count) {
break;
}
}
return removeEvents;
}
/**
* Erzeugt mehrere DeleteUserEvents, sodass eine Gruppe komplett geleert wird.
*
* @param group Gruppe welche geleert wird
* @return Eventliste
*/
public static List<DeleteUserEvent> deleteUserEvents(Group group) {
return group.getMembers().parallelStream()
.map(user -> deleteUserEvent(group.getId(), user.getId()))
.collect(Collectors.toList());
}
public static DeleteUserEvent deleteUserEvent(UUID groupId, String userId) {
return new DeleteUserEvent(
groupId,
userId
);
}
public static UpdateGroupDescriptionEvent updateGroupDescriptionEvent(UUID groupId) {
return new UpdateGroupDescriptionEvent(
groupId,
faker.random().hex(),
quote()
);
}
public static UpdateGroupTitleEvent updateGroupTitleEvent(UUID groupId) {
return new UpdateGroupTitleEvent(
groupId,
faker.random().hex(),
champion()
);
}
public static UpdateRoleEvent randomUpdateRoleEvent(UUID groupId, String userId, Role role) {
return new UpdateRoleEvent(
groupId,
userId,
role
);
}
private static String firstname() {
return clean(faker.name().firstName());
}
private static String lastname() {
return clean(faker.name().lastName());
}
private static String champion() {
return clean(faker.leagueOfLegends().champion());
}
private static String quote() {
return clean(faker.leagueOfLegends().quote());
}
private static String clean(String string) {
return string.replaceAll("['\";,]", "");
}
}

View File

@ -1,162 +0,0 @@
package mops.gruppen2.builder;
import com.github.javafaker.Faker;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.User;
import mops.gruppen2.domain.Visibility;
import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.DeleteUserEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent;
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
import mops.gruppen2.domain.event.UpdateRoleEvent;
import java.util.ArrayList;
import java.util.List;
public class EventBuilder {
/**
* Generiert ein EventLog mit mehreren Gruppen nud Usern.
*
* @param count Gruppenanzahl
* @param membercount Gesamte Mitgliederanzahl
* @return Eventliste
*/
public static List<Event> completeGroups(int count, int membercount) {
List<Event> eventList = new ArrayList<>();
for (int i = 1; i <= count; i++) {
eventList.addAll(completeGroup(i, membercount / count));
}
return eventList;
}
public static List<Event> completeGroup(long groupId, int membercount) {
List<Event> eventList = new ArrayList<>();
eventList.add(createGroupEvent(groupId));
eventList.add(updateGroupTitleEvent(groupId));
eventList.add(updateGroupDescriptionEvent(groupId));
eventList.addAll(addUserEvents(membercount, groupId));
return eventList;
}
public static CreateGroupEvent createGroupEvent(long groupId) {
Faker faker = new Faker();
return new CreateGroupEvent(
groupId,
faker.random().hex(),
null,
GroupType.SIMPLE,
Visibility.PRIVATE,
null
);
}
/**
* Generiert mehrere CreateGroupEvents, 1 <= groupId <= count.
*
* @param count Anzahl der verschiedenen Gruppen
* @return Eventliste
*/
public static List<CreateGroupEvent> createGroupEvents(int count) {
List<CreateGroupEvent> eventList = new ArrayList<>();
for (int i = 1; i <= count; i++) {
eventList.add(createGroupEvent(i));
}
return eventList;
}
public static AddUserEvent addUserEvent(long groupId, String userId) {
Faker faker = new Faker();
String firstname = faker.name().firstName();
String lastname = faker.name().lastName();
return new AddUserEvent(
groupId,
userId,
firstname,
lastname,
firstname + "." + lastname + "@mail.de"
);
}
/**
* Generiert mehrere AddUserEvents für eine Gruppe, 1 <= user_id <= count.
*
* @param count Anzahl der Mitglieder
* @param groupId Gruppe, zu welcher geaddet wird
* @return Eventliste
*/
public static List<Event> addUserEvents(int count, long groupId) {
List<Event> eventList = new ArrayList<>();
for (int i = 1; i <= count; i++) {
eventList.add(addUserEvent(groupId, String.valueOf(i)));
}
return eventList;
}
public static DeleteUserEvent deleteUserEvent(long groupId, String userId) {
return new DeleteUserEvent(
groupId,
userId
);
}
/**
* Erzeugt mehrere DeleteUserEvents, sodass eine Gruppe komplett geleert wird.
*
* @param group Gruppe welche geleert wird
* @return Eventliste
*/
public static List<DeleteUserEvent> deleteUserEvents(Group group) {
List<DeleteUserEvent> eventList = new ArrayList<>();
for (User user : group.getMembers()) {
eventList.add(deleteUserEvent(group.getId(), user.getId()));
}
return eventList;
}
public static UpdateGroupDescriptionEvent updateGroupDescriptionEvent(long groupId) {
Faker faker = new Faker();
return new UpdateGroupDescriptionEvent(
groupId,
faker.random().hex(),
faker.leagueOfLegends().quote()
);
}
public static UpdateGroupTitleEvent updateGroupTitleEvent(long groupId) {
Faker faker = new Faker();
return new UpdateGroupTitleEvent(
groupId,
faker.random().hex(),
faker.leagueOfLegends().champion()
);
}
public static UpdateRoleEvent randomUpdateRoleEvent(long groupId, String userId, Role role) {
return new UpdateRoleEvent(
groupId,
userId,
role
);
}
}

View File

@ -1,17 +1,8 @@
package mops.gruppen2.domain.event;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User;
import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.exception.UserAlreadyExistsException;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
class AddUserEventTest {
@Test
/*@Test
void userAlreadyExistExeption() throws EventException {
Group group = new Group();
User user = new User("user1", "Stein", "Speck", "@sdasd");
@ -26,7 +17,7 @@ class AddUserEventTest {
event2.apply(group)
);
assertThat(group.getMembers().size()).isEqualTo(2);
}
}*/
}

View File

@ -1,18 +1,8 @@
package mops.gruppen2.domain.event;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.User;
import mops.gruppen2.domain.exception.EventException;
import mops.gruppen2.domain.exception.UserNotFoundException;
import org.junit.jupiter.api.Test;
import static mops.gruppen2.domain.Role.MEMBER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
class DeleteUserEventTest {
@Test
/*@Test
void applyDeleteUser() throws EventException {
Group group = new Group();
User user = new User("user1", "Stein", "Speck", "@sdasd");
@ -42,5 +32,5 @@ class DeleteUserEventTest {
event.apply(group)
);
assertThat(group.getMembers().size()).isEqualTo(1);
}
}*/
}

View File

@ -1,79 +1,55 @@
package mops.gruppen2.service;
import mops.gruppen2.Gruppen2Application;
import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.Visibility;
import mops.gruppen2.domain.dto.EventDTO;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.event.UpdateRoleEvent;
import mops.gruppen2.repository.EventRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Gruppen2Application.class)
@Rollback
@Transactional
@RunWith(MockitoJUnitRunner.class)
class EventServiceTest {
@Autowired
private EventRepository eventRepository;
@Autowired
private JsonService jsonService;
private EventService eventService;
@BeforeEach
/*@BeforeEach
void setUp() {
eventService = new EventService(jsonService, eventRepository);
eventRepository = mock(EventRepository.class);
eventService = new EventService(mock(JsonService.class), eventRepository);
}
@Disabled
@Test
void getMaxID() {
eventRepository.deleteAll();
UpdateRoleEvent updateRoleEvent = new UpdateRoleEvent(2L, "hi",Role.ADMIN);
eventService.saveEvent(updateRoleEvent);
assertEquals(1L, eventService.getMaxEvent_id()); // funzt noch net richtig weil Autoincrement hochaddiert auch wenn DB leer
when(eventRepository.getHighesEvent_ID()).thenReturn(42L);
assertEquals(eventService.getMaxEvent_id(), 42L);
}
@Test
void checkGroupReturnNextValue() {
eventRepository.deleteAll();
CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), "lol", null, GroupType.SIMPLE, Visibility.PUBLIC, 20L);
eventService.saveEvent(createGroupEvent);
assertEquals(2L, eventService.checkGroup()); // weil in DataSQL eine Gruppe erstellt wird
when(eventRepository.getMaxGroupID()).thenReturn(2L);
assertEquals(eventService.checkGroup(), 3L);
}
@Test
void checkGroupReturnOneIfDBIsEmpty() {
//dafür muss data.sql weg
eventRepository.deleteAll();
assertEquals(1L, eventService.checkGroup());
List<EventDTO> eventDTOS = new ArrayList<>();
when(eventRepository.findAll()).thenReturn(eventDTOS);
assertEquals(eventService.checkGroup(), 1);
}*/
/*@Test
void getDTOOffentlichTest() {
CreateGroupEvent createGroupEvent = new CreateGroupEvent(eventService.checkGroup(), "test", null, GroupType.LECTURE, Visibility.PUBLIC, null);
EventDTO eventDTO = eventService.getDTO(createGroupEvent);
assertTrue(eventDTO.isVisibility());
}
@Test
void translateEventDTOsTest() {
EventDTO eventDTO1 = new EventDTO(1L,1L, "killerbert", "CreateGroupEvent", "{\"type\":\"CreateGroupEvent\",\"groupId\":1,\"userId\":\"orga\",\"groupVisibility\":\"PUBLIC\",\"groupParent\":null,\"groupType\":\"SIMPLE\",\"groupUserMaximum\":2}");
List<EventDTO> eventDTOS1 = new ArrayList<>();
eventDTOS1.add(eventDTO1);
List<Event> events = eventService.translateEventDTOs(eventDTOS1);
assertThat(events.get(0)).isInstanceOf(CreateGroupEvent.class);
}
void getDTOPrivatTest() {
AddUserEvent addUserEvent = new AddUserEvent(eventService.checkGroup(), "test", "franz", "mueller", "a@a");
EventDTO eventDTO = eventService.getDTO(addUserEvent);
assertFalse(eventDTO.isVisibility());
}*/
}

View File

@ -1,19 +1,8 @@
package mops.gruppen2.service;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.GroupType;
import mops.gruppen2.domain.Visibility;
import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.repository.EventRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
class GroupServiceTest {
@ -26,12 +15,12 @@ class GroupServiceTest {
}
@Test
/* @Test
void rightClassForSuccessfulGroup() {
List<Event> eventList = new ArrayList<>();
eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE,1000L));
eventList.add(new AddUserEvent(1L, "Ulli", "Ulli", "Honnis", "FC@B.de"));
List<Group> groups = groupService.projectEventList(eventList);
assertThat(groups.get(0)).isInstanceOf(Group.class);
}
}*/
}