Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import com.example.roommate.annotations.ApplicationService;
import com.example.roommate.application.data.RoomApplicationData;
import com.example.roommate.domain.services.RoomDomainService;
import com.example.roommate.interfaces.application.services.IAdminApplicationService;
import com.example.roommate.interfaces.domain.services.IRoomDomainService;
import com.example.roommate.values.domainValues.RoomNumber;
import com.example.roommate.values.forms.RoomDataForm;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
Expand All @@ -12,11 +13,11 @@
@SuppressFBWarnings(value="EI2", justification="RoomDomainService is properly injected")
@ApplicationService

public class AdminApplicationService {
public class AdminApplicationService implements IAdminApplicationService {

final RoomDomainService roomDomainService;
final IRoomDomainService roomDomainService;

public AdminApplicationService(RoomDomainService roomDomainService) {
public AdminApplicationService(IRoomDomainService roomDomainService) {
this.roomDomainService = roomDomainService;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.example.roommate.annotations.ApplicationService;
import com.example.roommate.application.data.RoomApplicationData;
import com.example.roommate.exceptions.domainService.GeneralDomainException;
import com.example.roommate.interfaces.application.services.IBookingApplicationService;
import com.example.roommate.utility.IterableSupport;
import com.example.roommate.values.domainValues.BookedTimeframe;
import com.example.roommate.values.domainValues.IntermediateBookDataForm;
Expand All @@ -24,7 +25,7 @@
import java.time.DayOfWeek;
@ApplicationService
@SuppressFBWarnings(value="EI2", justification="RoomDomainService is properly injected")
public class BookingApplicationService {
public class BookingApplicationService implements IBookingApplicationService {

RoomDomainService roomDomainService;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.roommate.controller;

import com.example.roommate.application.services.BookingApplicationService;
import com.example.roommate.interfaces.application.services.IBookingApplicationService;
import com.example.roommate.utility.IterableSupport;
import com.example.roommate.values.domainValues.DayTimeFrame;
import com.example.roommate.values.models.RoomHomeModel;
Expand All @@ -16,9 +16,9 @@
@Controller()
@SuppressFBWarnings(value="EI2", justification="BookingApplicationService is properly injected")
public class HomeController {
private final BookingApplicationService bookingApplicationService;
private final IBookingApplicationService bookingApplicationService;
@Autowired
public HomeController(BookingApplicationService bookingApplicationService) {
public HomeController(IBookingApplicationService bookingApplicationService) {
this.bookingApplicationService = bookingApplicationService;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.example.roommate.controller;

import com.example.roommate.annotations.AdminOnly;
import com.example.roommate.application.services.AdminApplicationService;
import com.example.roommate.exceptions.ArgumentValidationException;
import com.example.roommate.exceptions.persistence.NotFoundRepositoryException;
import com.example.roommate.interfaces.application.services.IAdminApplicationService;
import com.example.roommate.interfaces.application.services.IBookingApplicationService;
import com.example.roommate.utility.IterableSupport;
import com.example.roommate.values.domainValues.*;
import com.example.roommate.exceptions.applicationService.NotFoundException;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.exceptions.domainService.GeneralDomainException;
import com.example.roommate.values.forms.BookDataForm;
import com.example.roommate.application.services.BookingApplicationService;
import com.example.roommate.values.forms.RoomDataForm;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import jakarta.validation.Valid;
Expand All @@ -30,12 +30,12 @@
@SuppressFBWarnings(value="EI2", justification="BookingApplicationService & AdminApplicationService are properly injected")
public class RoomController {

private final BookingApplicationService bookingApplicationService;
private final IBookingApplicationService bookingApplicationService;

private final AdminApplicationService adminApplicationService;
private final IAdminApplicationService adminApplicationService;

@Autowired
public RoomController(BookingApplicationService bookingApplicationService, AdminApplicationService adminApplicationService) {
public RoomController(IBookingApplicationService bookingApplicationService, IAdminApplicationService adminApplicationService) {
this.bookingApplicationService = bookingApplicationService;
this.adminApplicationService = adminApplicationService;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.example.roommate.annotations.DomainService;
import com.example.roommate.application.data.RoomApplicationData;
import com.example.roommate.interfaces.domain.services.IRoomDomainService;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.interfaces.repositories.IItemRepository;
import com.example.roommate.interfaces.repositories.IRoomRepository;
Expand All @@ -23,7 +24,7 @@
@DomainService
//mediate between Repository, domain; map forms to domain-objects/data
@SuppressFBWarnings(value="EI2", justification="Repositories are properly injected, @Lazy self is required for transactions")
public class RoomDomainService {
public class RoomDomainService implements IRoomDomainService {

IRoomRepository roomRepository;
IItemRepository itemRepository;
Expand All @@ -35,10 +36,10 @@ public RoomDomainService(IRoomRepository roomRepository, IItemRepository itemRep
this.self = this;
}
@Autowired
public RoomDomainService(IRoomRepository roomRepository, IItemRepository itemRepository, @Lazy RoomDomainService self) {
public RoomDomainService(IRoomRepository roomRepository, IItemRepository itemRepository, @Lazy IRoomDomainService self) {
this.roomRepository = roomRepository;
this.itemRepository = itemRepository;
this.self = self;
this.self = (RoomDomainService) self;
}

public void addDummyDummy(){
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.roommate.interfaces.application.services;

import com.example.roommate.values.forms.RoomDataForm;

public interface IAdminApplicationService {
void addRoom(RoomDataForm roomDataForm);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.example.roommate.interfaces.application.services;

import com.example.roommate.exceptions.applicationService.NotFoundException;
import com.example.roommate.exceptions.domainService.GeneralDomainException;
import com.example.roommate.exceptions.persistence.NotFoundRepositoryException;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.values.domainValues.IntermediateBookDataForm;
import com.example.roommate.values.domainValues.ItemName;
import com.example.roommate.values.models.RoomBookingModel;

import java.util.Collection;
import java.util.List;
import java.util.UUID;

public interface IBookingApplicationService {
void addBookEntry(IntermediateBookDataForm form) throws NotFoundException, GeneralDomainException;
Collection<ItemName> getItems();
Collection<IRoom> getRooms();
void addRoom(IRoom room);
IRoom findRoomByID(UUID roomID) throws NotFoundException;
List<RoomBookingModel> findAvailableRoomsWithItems(List<ItemName> items, String dateString, String startTimeString, String endTimeString);
void removeItemFromRoom(UUID roomID, String itemName) throws NotFoundRepositoryException;
void addItemToRoom(UUID roomID, String itemName) throws NotFoundRepositoryException;
void createItem(String itemName);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.roommate.interfaces.domain.services;

import com.example.roommate.application.data.RoomApplicationData;
import com.example.roommate.exceptions.persistence.NotFoundRepositoryException;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.values.domainValues.BookedTimeframe;
import com.example.roommate.values.domainValues.ItemName;

import java.util.Collection;
import java.util.List;
import java.util.UUID;

public interface IRoomDomainService {
void addBooking(BookedTimeframe bookedTimeframe, UUID roomID) throws NotFoundRepositoryException;
void addRoom(RoomApplicationData roomApplicationData);
void removeRoom(RoomApplicationData room);
Collection<IRoom> getRooms();
IRoom findRoomByID(UUID roomID) throws NotFoundRepositoryException;
List<ItemName> getItems();
void removeItemFromRoom(UUID roomID, String itemName) throws NotFoundRepositoryException;
void addItemToRoom(UUID roomID, String itemName) throws NotFoundRepositoryException;
void createItem(String itemName);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.roommate.stubs;

import com.example.roommate.interfaces.application.services.IAdminApplicationService;
import com.example.roommate.values.forms.RoomDataForm;

public class AdminApplicationServiceDummy implements IAdminApplicationService {
@Override
public void addRoom(RoomDataForm roomDataForm) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.example.roommate.stubs;

import com.example.roommate.exceptions.applicationService.NotFoundException;
import com.example.roommate.exceptions.domainService.GeneralDomainException;
import com.example.roommate.exceptions.persistence.NotFoundRepositoryException;
import com.example.roommate.interfaces.application.services.IBookingApplicationService;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.values.domainValues.IntermediateBookDataForm;
import com.example.roommate.values.domainValues.ItemName;
import com.example.roommate.values.models.RoomBookingModel;

import java.util.Collection;
import java.util.List;
import java.util.UUID;

public class BookingApplicationServiceDummy implements IBookingApplicationService {
@Override
public void addBookEntry(IntermediateBookDataForm form) throws NotFoundException, GeneralDomainException {

}

@Override
public Collection<ItemName> getItems() {
return null;
}

@Override
public Collection<IRoom> getRooms() {
return null;
}

@Override
public void addRoom(IRoom room) {

}

@Override
public IRoom findRoomByID(UUID roomID) throws NotFoundException {
return null;
}

@Override
public List<RoomBookingModel> findAvailableRoomsWithItems(List<ItemName> items, String dateString, String startTimeString, String endTimeString) {
return null;
}

@Override
public void removeItemFromRoom(UUID roomID, String itemName) throws NotFoundRepositoryException {

}

@Override
public void addItemToRoom(UUID roomID, String itemName) throws NotFoundRepositoryException {

}

@Override
public void createItem(String itemName) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.example.roommate.stubs;

import com.example.roommate.application.data.RoomApplicationData;
import com.example.roommate.exceptions.persistence.NotFoundRepositoryException;
import com.example.roommate.interfaces.domain.services.IRoomDomainService;
import com.example.roommate.interfaces.entities.IRoom;
import com.example.roommate.values.domainValues.BookedTimeframe;
import com.example.roommate.values.domainValues.ItemName;

import java.util.Collection;
import java.util.List;
import java.util.UUID;

public class RoomDomainServiceDummy implements IRoomDomainService {
@Override
public void addBooking(BookedTimeframe bookedTimeframe, UUID roomID) throws NotFoundRepositoryException {

}

@Override
public void addRoom(RoomApplicationData roomApplicationData) {

}

@Override
public void removeRoom(RoomApplicationData room) {

}

@Override
public Collection<IRoom> getRooms() {
return null;
}

@Override
public IRoom findRoomByID(UUID roomID) throws NotFoundRepositoryException {
return null;
}

@Override
public List<ItemName> getItems() {
return null;
}

@Override
public void removeItemFromRoom(UUID roomID, String itemName) throws NotFoundRepositoryException {

}

@Override
public void addItemToRoom(UUID roomID, String itemName) throws NotFoundRepositoryException {

}

@Override
public void createItem(String itemName) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,35 @@

import com.example.roommate.annotations.TestClass;
import com.example.roommate.annotations.WithMockOAuth2User;
import com.example.roommate.application.services.AdminApplicationService;
import com.example.roommate.application.services.BookingApplicationService;
import com.example.roommate.controller.RoomController;
import com.example.roommate.interfaces.application.services.IAdminApplicationService;
import com.example.roommate.interfaces.application.services.IBookingApplicationService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@WebMvcTest
@WebMvcTest(controllers = {RoomController.class}, excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {AdminApplicationService.class, BookingApplicationService.class}))
@TestClass
public class GetBookTest {

@Autowired
MockMvc mvc;

@MockBean
IAdminApplicationService adminApplicationService;

@MockBean
IBookingApplicationService bookingApplicationService;

@Test
@DisplayName("A Get-Request on /book returns home.html")
Expand Down