Skip to content

Commit

Permalink
get All Evens add isOrganizedByFriend (#6740)
Browse files Browse the repository at this point in the history
  • Loading branch information
LiliaMokhnatska authored Dec 5, 2023
1 parent 45e4ccf commit 18b5be7
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
2 changes: 2 additions & 0 deletions service-api/src/main/java/greencity/dto/event/EventDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ public class EventDto {

private int countComments;

private boolean isOrganizedByFriend;

/**
* Return String of event tags in English.
*
Expand Down
16 changes: 16 additions & 0 deletions service/src/main/java/greencity/service/EventServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,22 @@ private PageableAdvancedDto<EventDto> buildPageableAdvancedDto(Page<Event> event
new TypeToken<List<EventDto>>() {
}.getType());

if (Objects.nonNull(eventDtos)) {
eventDtos.forEach(eventDto -> {
if (Objects.nonNull(eventDto.getOrganizer())) {
Long idOrganizer = eventDto.getOrganizer().getId();
if (Objects.nonNull(idOrganizer)) {
boolean isOrganizedByFriend = userRepo.isFriend(idOrganizer, userId);
eventDto.setOrganizedByFriend(isOrganizedByFriend);
} else {
eventDto.setOrganizedByFriend(false);
}
} else {
eventDto.setOrganizedByFriend(false);
}
});
}

if (CollectionUtils.isNotEmpty(eventDtos)) {
setSubscribes(eventDtos, userId);
setFollowers(eventDtos, userId);
Expand Down
69 changes: 69 additions & 0 deletions service/src/test/java/greencity/service/EventServiceImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import greencity.dto.PageableAdvancedDto;
import greencity.dto.event.AddEventDtoRequest;
import greencity.dto.event.EventAttenderDto;
import greencity.dto.event.EventAuthorDto;
import greencity.dto.event.EventDto;
import greencity.dto.event.UpdateEventDto;
import greencity.dto.event.AddressDto;
Expand Down Expand Up @@ -1180,6 +1181,74 @@ void getAllWithCurrentUser() {
verify(eventRepo).findSubscribedAmongEventIds(eventIds, user.getId());
}

@Test
void getAllWithCurrentUser_WithNullInOrganizerEvent() {
List<Event> events = List.of(ModelUtils.getEvent().setOrganizer(null));
EventDto expected = ModelUtils.getEventDto().setOrganizer(null);
Principal principal = ModelUtils.getPrincipal();
PageRequest pageRequest = PageRequest.of(0, 1);

when(eventRepo.findAllByOrderByIdDesc(pageRequest))
.thenReturn(new PageImpl<>(events, pageRequest, events.size()));
when(restClient.findByEmail(principal.getName())).thenReturn(TEST_USER_VO);
when(modelMapper.map(TEST_USER_VO, User.class)).thenReturn(ModelUtils.getUser());
when(modelMapper.map(events,
new TypeToken<List<EventDto>>() {
}.getType())).thenReturn(List.of(expected));

PageableAdvancedDto<EventDto> eventDtoPageableAdvancedDto = eventService.getAll(pageRequest, principal);
EventDto actual = eventDtoPageableAdvancedDto.getPage().get(0);

assertEquals(expected.getId(), actual.getId());
assertEquals(expected.getDescription(), actual.getDescription());

verify(modelMapper).map(events,
new TypeToken<List<EventDto>>() {
}.getType());

verify(eventRepo).findAllByOrderByIdDesc(any());
verify(restClient).findByEmail(any());
verify(modelMapper).map(TEST_USER_VO, User.class);

verify(modelMapper).map(events,
new TypeToken<List<EventDto>>() {
}.getType());
}

@Test
void getAllWithCurrentUser_WithNullInIdOrganizerEvent() {
User user = ModelUtils.getUser();
List<Event> events = List.of(ModelUtils.getEvent().setOrganizer(user.setId(null)));
EventDto expected = ModelUtils.getEventDto().setOrganizer(EventAuthorDto.builder()
.name("User")
.id(null)
.build());
Principal principal = ModelUtils.getPrincipal();
PageRequest pageRequest = PageRequest.of(0, 1);

when(eventRepo.findAllByOrderByIdDesc(pageRequest))
.thenReturn(new PageImpl<>(events, pageRequest, events.size()));
when(restClient.findByEmail(principal.getName())).thenReturn(TEST_USER_VO);
when(modelMapper.map(TEST_USER_VO, User.class)).thenReturn(ModelUtils.getUser());
when(modelMapper.map(events,
new TypeToken<List<EventDto>>() {
}.getType())).thenReturn(List.of(expected));

PageableAdvancedDto<EventDto> eventDtoPageableAdvancedDto = eventService.getAll(pageRequest, principal);
EventDto actual = eventDtoPageableAdvancedDto.getPage().get(0);

assertEquals(expected.getId(), actual.getId());
assertEquals(expected.getDescription(), actual.getDescription());

verify(eventRepo).findAllByOrderByIdDesc(any());
verify(restClient).findByEmail(any());
verify(modelMapper).map(TEST_USER_VO, User.class);

verify(modelMapper).map(events,
new TypeToken<List<EventDto>>() {
}.getType());
}

@Test
void searchEventsBy() {
List<Event> events = Collections.singletonList(ModelUtils.getEvent());
Expand Down

0 comments on commit 18b5be7

Please sign in to comment.