From 609ef2b705f9c67cc46c8289e794ce7735790611 Mon Sep 17 00:00:00 2001 From: Laurent <58115082+naaturel@users.noreply.github.com> Date: Thu, 20 Mar 2025 17:36:46 +0100 Subject: [PATCH] holy ravioli --- .../letsmeet/dto/httpRequest/AttendeeDTO.java | 3 - .../letsmeet/dto/httpRequest/EventDTO.java | 3 +- .../mappers/requests/AttendeeDTOMapper.java | 3 +- .../mappers/requests/EventDTOMapper.java | 32 +++++++++- .../letsmeet/mappers/DateMapperTest.java | 1 + .../mappers/dto/EventDTOMapperTest.java | 56 ++++++++++++++++++ .../letsmeet/mock/dto/MockAttendeeDTO.java | 11 ++++ .../letsmeet/mock/dto/MockEventDTO.java | 24 ++++++++ .../letsmeet/mock/jpa/MockEventEntity.java | 11 ++++ .../letsmeet/mock/models/MockEventModel.java | 13 ++++ front/src/assets/{ => svg}/arrow-left.svg | 0 front/src/assets/{ => svg}/arrow-right.svg | 0 front/src/assets/{ => svg}/logo.svg | 0 front/src/assets/{ => svg}/logo2.svg | 0 front/src/components/Calendar.vue | 4 +- front/src/components/InputField.vue | 1 - front/src/dto/EventDto.ts | 8 +-- front/src/models/Attendee.ts | 11 +--- front/src/models/Event.ts | 40 +++---------- .../src/models/{TimeStamp.ts => EventDate.ts} | 9 ++- front/src/requests/EventRequests.ts | 14 +++++ front/src/stores/CalendarStore.ts | 10 ++-- front/src/stores/EventStore.ts | 59 ++++++++++++------- front/src/utils/CutomMap.ts | 6 +- front/src/views/CreateView.vue | 6 +- front/src/views/EventView.vue | 9 ++- front/src/views/HomeView.vue | 2 +- front/src/views/JoinView.vue | 2 +- 28 files changed, 245 insertions(+), 93 deletions(-) create mode 100644 back/src/test/java/be/naaturel/letsmeet/mappers/dto/EventDTOMapperTest.java create mode 100644 back/src/test/java/be/naaturel/letsmeet/mock/dto/MockAttendeeDTO.java create mode 100644 back/src/test/java/be/naaturel/letsmeet/mock/dto/MockEventDTO.java create mode 100644 back/src/test/java/be/naaturel/letsmeet/mock/jpa/MockEventEntity.java create mode 100644 back/src/test/java/be/naaturel/letsmeet/mock/models/MockEventModel.java rename front/src/assets/{ => svg}/arrow-left.svg (100%) rename front/src/assets/{ => svg}/arrow-right.svg (100%) rename front/src/assets/{ => svg}/logo.svg (100%) rename front/src/assets/{ => svg}/logo2.svg (100%) rename front/src/models/{TimeStamp.ts => EventDate.ts} (62%) diff --git a/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/AttendeeDTO.java b/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/AttendeeDTO.java index 65d522d..5e64752 100644 --- a/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/AttendeeDTO.java +++ b/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/AttendeeDTO.java @@ -5,7 +5,4 @@ import java.util.Set; public class AttendeeDTO { public String name; - - public Set dates; - } diff --git a/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/EventDTO.java b/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/EventDTO.java index 0b5f927..539e5f9 100644 --- a/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/EventDTO.java +++ b/back/src/main/java/be/naaturel/letsmeet/dto/httpRequest/EventDTO.java @@ -1,10 +1,11 @@ package be.naaturel.letsmeet.dto.httpRequest; +import java.util.Map; import java.util.Set; public class EventDTO { public String name; - public Set attendees; + public Map> dates; } diff --git a/back/src/main/java/be/naaturel/letsmeet/mappers/requests/AttendeeDTOMapper.java b/back/src/main/java/be/naaturel/letsmeet/mappers/requests/AttendeeDTOMapper.java index 5e1299f..deef14c 100644 --- a/back/src/main/java/be/naaturel/letsmeet/mappers/requests/AttendeeDTOMapper.java +++ b/back/src/main/java/be/naaturel/letsmeet/mappers/requests/AttendeeDTOMapper.java @@ -22,13 +22,12 @@ public class AttendeeDTOMapper implements Mapper { public AttendeeDTO toEntity(Attendee d) { AttendeeDTO dto = new AttendeeDTO(); dto.name = d.getName(); - dto.dates = dateMapper.toEntities(d.getDates(), HashSet::new); return dto; } @Override public Attendee toModel(AttendeeDTO d) { - return new Attendee(d.name, dateMapper.toModels(d.dates, HashSet::new)); + return null; } @Override diff --git a/back/src/main/java/be/naaturel/letsmeet/mappers/requests/EventDTOMapper.java b/back/src/main/java/be/naaturel/letsmeet/mappers/requests/EventDTOMapper.java index 2e0caa4..311713c 100644 --- a/back/src/main/java/be/naaturel/letsmeet/mappers/requests/EventDTOMapper.java +++ b/back/src/main/java/be/naaturel/letsmeet/mappers/requests/EventDTOMapper.java @@ -1,30 +1,58 @@ package be.naaturel.letsmeet.mappers.requests; +import be.naaturel.letsmeet.core.models.EventDate; import be.naaturel.letsmeet.dto.httpRequest.EventDTO; import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO; +import be.naaturel.letsmeet.dto.httpRequest.EventDateDTO; import be.naaturel.letsmeet.mappers.Mapper; import be.naaturel.letsmeet.core.models.Event; import be.naaturel.letsmeet.core.models.Attendee; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; +import java.util.Set; import java.util.function.Supplier; public class EventDTOMapper implements Mapper { private final Mapper attendeeMapper = new AttendeeDTOMapper(); + private final Mapper dateMapper = new EventDateDTOMapper(); @Override public EventDTO toEntity(Event event) { EventDTO eventDTO = new EventDTO(); eventDTO.name = event.getName(); - eventDTO.attendees = attendeeMapper.toEntities(event.getAttendees(), HashSet::new); + //eventDTO.dates = attendeeMapper.toEntities(event.getAttendees(), HashSet::new); + + //TODO : MUST BE CLEANED + eventDTO.dates = new HashMap<>(); + event.getAttendees().forEach(a -> { + a.getDates().forEach(d -> { + EventDateDTO dtoD = dateMapper.toEntity(d); + AttendeeDTO dtoA = attendeeMapper.toEntity(a); + String key = String.valueOf(d.getTimeStamp()); + if(eventDTO.dates.containsKey(key)){ + eventDTO.dates.get(key).add(dtoA); + } else { + Set s = new HashSet<>(); + s.add(dtoA); + eventDTO.dates.put(key, s); + } + }); + }); + return eventDTO; } @Override public Event toModel(EventDTO dto) { - return new Event(dto.name, attendeeMapper.toModels(dto.attendees, HashSet::new)); + //return new Event(dto.name, attendeeMapper.toModels(dto.dates, HashSet::new)); + Set set = new HashSet<>(); + for (String key : dto.dates.keySet()) { + set.addAll(attendeeMapper.toModels(dto.dates.get(key), HashSet::new)); + } + return new Event(dto.name, set); } @Override diff --git a/back/src/test/java/be/naaturel/letsmeet/mappers/DateMapperTest.java b/back/src/test/java/be/naaturel/letsmeet/mappers/DateMapperTest.java index 729a6d4..c41f208 100644 --- a/back/src/test/java/be/naaturel/letsmeet/mappers/DateMapperTest.java +++ b/back/src/test/java/be/naaturel/letsmeet/mappers/DateMapperTest.java @@ -1,6 +1,7 @@ package be.naaturel.letsmeet.mappers; import be.naaturel.letsmeet.dto.database.EventDateEntity; +import be.naaturel.letsmeet.mappers.Mapper; import be.naaturel.letsmeet.mappers.database.EventDateMapper; import be.naaturel.letsmeet.core.models.EventDate; import org.junit.jupiter.api.BeforeAll; diff --git a/back/src/test/java/be/naaturel/letsmeet/mappers/dto/EventDTOMapperTest.java b/back/src/test/java/be/naaturel/letsmeet/mappers/dto/EventDTOMapperTest.java new file mode 100644 index 0000000..8eea992 --- /dev/null +++ b/back/src/test/java/be/naaturel/letsmeet/mappers/dto/EventDTOMapperTest.java @@ -0,0 +1,56 @@ +package be.naaturel.letsmeet.mappers.dto; + +import be.naaturel.letsmeet.core.models.Event; +import be.naaturel.letsmeet.dto.httpRequest.EventDTO; +import be.naaturel.letsmeet.mappers.Mapper; +import be.naaturel.letsmeet.mappers.requests.EventDTOMapper; +import be.naaturel.letsmeet.mock.dto.MockEventDTO; +import be.naaturel.letsmeet.mock.models.MockEventModel; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EventDTOMapperTest { + + private static MockEventDTO mockDto; + private static MockEventModel mockModel; + private static Mapper mapper; + + @BeforeAll + static void setup(){ + mockDto = new MockEventDTO(); + mockModel = new MockEventModel(); + mapper = new EventDTOMapper(); + } + + @Test + void single_dto_to_model_test(){ + Event res = mapper.toModel(mockDto); + assertEquals(res.getName(), mockDto.name); + } + + @Test + void single_model_to_dto_test(){ + EventDTO res = mapper.toEntity(mockModel); + assertEquals(res.name, mockModel.getName()); + } + + @Test + void multiple_dto_to_models_test(){ + List res = mapper.toModels(Set.of(mockDto), ArrayList::new); + assertEquals(res.size(), 1); + assertEquals(res.getFirst().getName(), mockDto.name); + } + + @Test + void mulitple_models_to_dto_test(){ + List res = mapper.toEntities(Set.of(mockModel), ArrayList::new); + assertEquals(res.size(), 1); + assertEquals(res.getFirst().name, mockModel.getName()); + } +} diff --git a/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockAttendeeDTO.java b/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockAttendeeDTO.java new file mode 100644 index 0000000..ad7906a --- /dev/null +++ b/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockAttendeeDTO.java @@ -0,0 +1,11 @@ +package be.naaturel.letsmeet.mock.dto; + +import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO; + +public class MockAttendeeDTO extends AttendeeDTO { + + public MockAttendeeDTO(){ + + } + +} diff --git a/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockEventDTO.java b/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockEventDTO.java new file mode 100644 index 0000000..cb29643 --- /dev/null +++ b/back/src/test/java/be/naaturel/letsmeet/mock/dto/MockEventDTO.java @@ -0,0 +1,24 @@ +package be.naaturel.letsmeet.mock.dto; + +import be.naaturel.letsmeet.core.models.Attendee; +import be.naaturel.letsmeet.dto.httpRequest.AttendeeDTO; +import be.naaturel.letsmeet.dto.httpRequest.EventDTO; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +public class MockEventDTO extends EventDTO { + + public MockEventDTO() { + this.name = "Mocked event"; + this.dates = new HashMap<>(); + populate(0, new HashSet<>()); + populate(1, new HashSet<>()); + populate(2, new HashSet<>()); + } + + private void populate(long timestamp, Set attendees){ + this.dates.put(String.valueOf(timestamp), attendees); + } +} diff --git a/back/src/test/java/be/naaturel/letsmeet/mock/jpa/MockEventEntity.java b/back/src/test/java/be/naaturel/letsmeet/mock/jpa/MockEventEntity.java new file mode 100644 index 0000000..27a1c98 --- /dev/null +++ b/back/src/test/java/be/naaturel/letsmeet/mock/jpa/MockEventEntity.java @@ -0,0 +1,11 @@ +package be.naaturel.letsmeet.mock.jpa; + +import be.naaturel.letsmeet.dto.database.EventEntity; + +public class MockEventEntity extends EventEntity { + + public MockEventEntity(){ + + } + +} diff --git a/back/src/test/java/be/naaturel/letsmeet/mock/models/MockEventModel.java b/back/src/test/java/be/naaturel/letsmeet/mock/models/MockEventModel.java new file mode 100644 index 0000000..82a0a94 --- /dev/null +++ b/back/src/test/java/be/naaturel/letsmeet/mock/models/MockEventModel.java @@ -0,0 +1,13 @@ +package be.naaturel.letsmeet.mock.models; + +import be.naaturel.letsmeet.core.models.Attendee; +import be.naaturel.letsmeet.core.models.Event; + +import java.util.HashSet; +import java.util.Set; + +public class MockEventModel extends Event { + public MockEventModel() { + super("Mock event model", new HashSet<>()); + } +} diff --git a/front/src/assets/arrow-left.svg b/front/src/assets/svg/arrow-left.svg similarity index 100% rename from front/src/assets/arrow-left.svg rename to front/src/assets/svg/arrow-left.svg diff --git a/front/src/assets/arrow-right.svg b/front/src/assets/svg/arrow-right.svg similarity index 100% rename from front/src/assets/arrow-right.svg rename to front/src/assets/svg/arrow-right.svg diff --git a/front/src/assets/logo.svg b/front/src/assets/svg/logo.svg similarity index 100% rename from front/src/assets/logo.svg rename to front/src/assets/svg/logo.svg diff --git a/front/src/assets/logo2.svg b/front/src/assets/svg/logo2.svg similarity index 100% rename from front/src/assets/logo2.svg rename to front/src/assets/svg/logo2.svg diff --git a/front/src/components/Calendar.vue b/front/src/components/Calendar.vue index c1effa7..5514e18 100644 --- a/front/src/components/Calendar.vue +++ b/front/src/components/Calendar.vue @@ -1,6 +1,6 @@