Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #233: Move endpoints related to amenities from community tag #253

Closed
wants to merge 2 commits into from
Closed
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
4 changes: 2 additions & 2 deletions api/src/main/resources/public/swagger/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ paths:
security:
- bearerAuth: [ ]
tags:
- Communities
- Amenities
description: Get all amenities of community
operationId: listAllAmenities
parameters:
Expand Down Expand Up @@ -170,7 +170,7 @@ paths:
security:
- bearerAuth: [ ]
tags:
- Communities
- Amenities
description: Adds amenity to community
operationId: addAmenityToCommunity
requestBody:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@

import com.myhome.api.AmenitiesApi;
import com.myhome.controllers.mapper.AmenityApiMapper;
import com.myhome.domain.Amenity;
import com.myhome.model.AddAmenityRequest;
import com.myhome.model.AddAmenityResponse;
import com.myhome.model.AmenityDto;
import com.myhome.model.GetAmenityDetailsResponse;
import com.myhome.model.UpdateAmenityRequest;
import com.myhome.services.AmenityService;
import com.myhome.services.CommunityService;
import java.util.Set;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -40,7 +43,6 @@ public class AmenityController implements AmenitiesApi {

private final AmenityService amenitySDJpaService;
private final AmenityApiMapper amenityApiMapper;
private final CommunityService communityService;

@Override
public ResponseEntity<GetAmenityDetailsResponse> getAmenityDetails(
Expand All @@ -51,6 +53,25 @@ public ResponseEntity<GetAmenityDetailsResponse> getAmenityDetails(
.orElse(ResponseEntity.status(HttpStatus.NOT_FOUND).build());
}

@Override
public ResponseEntity<Set<GetAmenityDetailsResponse>> listAllAmenities(
@PathVariable String communityId) {
Set<Amenity> amenities = amenitySDJpaService.listAllAmenities(communityId);
Set<GetAmenityDetailsResponse> response =
amenityApiMapper.amenitiesSetToAmenityDetailsResponseSet(amenities);
return ResponseEntity.ok(response);
}

@Override
public ResponseEntity<AddAmenityResponse> addAmenityToCommunity(
@PathVariable String communityId,
@RequestBody AddAmenityRequest request) {
return amenitySDJpaService.createAmenities(request.getAmenities(), communityId)
.map(amenityList -> new AddAmenityResponse().amenities(amenityList))
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}

@Override
public ResponseEntity deleteAmenity(@PathVariable String amenityId) {
boolean isAmenityDeleted = amenitySDJpaService.deleteAmenity(amenityId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,12 @@

import com.myhome.api.CommunitiesApi;
import com.myhome.controllers.dto.CommunityDto;
import com.myhome.controllers.mapper.AmenityApiMapper;
import com.myhome.controllers.mapper.CommunityApiMapper;
import com.myhome.controllers.mapper.SchedulePaymentApiMapper;
import com.myhome.domain.Amenity;
import com.myhome.domain.Community;
import com.myhome.domain.CommunityHouse;
import com.myhome.domain.Payment;
import com.myhome.domain.User;
import com.myhome.model.AddAmenityRequest;
import com.myhome.model.AddAmenityResponse;
import com.myhome.model.AddCommunityAdminRequest;
import com.myhome.model.AddCommunityAdminResponse;
import com.myhome.model.AddCommunityHouseRequest;
Expand All @@ -36,14 +32,12 @@
import com.myhome.model.CommunityHouseName;
import com.myhome.model.CreateCommunityRequest;
import com.myhome.model.CreateCommunityResponse;
import com.myhome.model.GetAmenityDetailsResponse;
import com.myhome.model.GetCommunityDetailsResponse;
import com.myhome.model.GetCommunityDetailsResponseCommunity;
import com.myhome.model.GetHouseDetailsResponse;
import com.myhome.model.ListAdminPaymentsResponse;
import com.myhome.model.ListCommunityAdminsResponse;
import com.myhome.utils.PageInfo;
import com.myhome.services.AmenityService;
import com.myhome.services.CommunityService;
import com.myhome.services.PaymentService;
import java.util.Arrays;
Expand Down Expand Up @@ -73,8 +67,6 @@
public class CommunityController implements CommunitiesApi {
private final CommunityService communityService;
private final CommunityApiMapper communityApiMapper;
private final AmenityService amenitySDJpaService;
private final AmenityApiMapper amenityApiMapper;
private final SchedulePaymentApiMapper schedulePaymentApiMapper;
private final PaymentService paymentService;

Expand Down Expand Up @@ -223,25 +215,6 @@ public ResponseEntity<Void> deleteCommunity(@PathVariable String communityId) {
}
}

@Override
public ResponseEntity<Set<GetAmenityDetailsResponse>> listAllAmenities(
@PathVariable String communityId) {
Set<Amenity> amenities = amenitySDJpaService.listAllAmenities(communityId);
Set<GetAmenityDetailsResponse> response =
amenityApiMapper.amenitiesSetToAmenityDetailsResponseSet(amenities);
return ResponseEntity.ok(response);
}

@Override
public ResponseEntity<AddAmenityResponse> addAmenityToCommunity(
@PathVariable String communityId,
@RequestBody AddAmenityRequest request) {
return amenitySDJpaService.createAmenities(request.getAmenities(), communityId)
.map(amenityList -> new AddAmenityResponse().amenities(amenityList))
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}

@Override
public ResponseEntity<ListAdminPaymentsResponse> listAllAdminScheduledPayments(
String communityId, String adminId, Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
import java.math.BigDecimal;
import java.util.HashSet;
import java.util.Optional;

import helpers.TestUtils;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
Expand Down Expand Up @@ -62,6 +60,48 @@ class AmenityControllerTest {
@InjectMocks
private AmenityController amenityController;

@Test
void shouldAddAmenityToCommunity() {
// given
final String communityId = "communityId";
final AmenityDto amenityDto =
new AmenityDto().id(1L)
.amenityId("amenityId")
.name("name")
.description("description")
.price(BigDecimal.ONE)
.communityId("");
final HashSet<AmenityDto> amenities = new HashSet<>(singletonList(amenityDto));
final AddAmenityRequest request = new AddAmenityRequest().amenities(amenities);
given(amenitySDJpaService.createAmenities(amenities, communityId))
.willReturn(Optional.of(singletonList(amenityDto)));

// when
final ResponseEntity<AddAmenityResponse> response =
amenityController.addAmenityToCommunity(communityId, request);

// then
assertEquals(HttpStatus.OK, response.getStatusCode());
}

@Test
void shouldNotAddAmenityWhenCommunityNotExists() {
// given
final String communityId = "communityId";
final AmenityDto amenityDto = new AmenityDto();
final HashSet<AmenityDto> amenities = new HashSet<>(singletonList(amenityDto));
final AddAmenityRequest request = new AddAmenityRequest().amenities(amenities);
given(amenitySDJpaService.createAmenities(amenities, communityId))
.willReturn(Optional.empty());

// when
final ResponseEntity<AddAmenityResponse> response =
amenityController.addAmenityToCommunity(communityId, request);

// then
assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
}

@BeforeEach
private void init() {
MockitoAnnotations.initMocks(this);
Expand Down Expand Up @@ -184,7 +224,7 @@ void shouldNotUpdateCommunityAmenityIfAmenityNotExists() {
void deleteBooking() {
// given
given(amenitySDJpaService.deleteBooking(TEST_BOOKING_ID))
.willReturn(true);
.willReturn(true);

// when
ResponseEntity response = amenityController.deleteBooking(TEST_BOOKING_ID);
Expand All @@ -194,11 +234,12 @@ void deleteBooking() {
assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode());
verify(amenitySDJpaService).deleteBooking(TEST_BOOKING_ID);
}

@Test
void deleteBookingNotExists() {
// given
given(amenitySDJpaService.deleteBooking(TEST_BOOKING_ID))
.willReturn(false);
.willReturn(false);

// when
ResponseEntity response = amenityController.deleteBooking(TEST_BOOKING_ID);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,21 @@
import com.myhome.controllers.dto.PaymentDto;
import com.myhome.controllers.dto.UserDto;
import com.myhome.controllers.mapper.CommunityApiMapper;
import com.myhome.model.AddAmenityRequest;
import com.myhome.model.AddAmenityResponse;
import com.myhome.controllers.mapper.SchedulePaymentApiMapper;
import com.myhome.domain.Community;
import com.myhome.domain.CommunityHouse;
import com.myhome.domain.HouseMember;
import com.myhome.domain.HouseMemberDocument;
import com.myhome.domain.Payment;
import com.myhome.domain.User;
import com.myhome.model.AddCommunityAdminRequest;
import com.myhome.model.AddCommunityAdminResponse;
import com.myhome.model.AddCommunityHouseRequest;
import com.myhome.model.AddCommunityHouseResponse;
import com.myhome.model.AmenityDto;
import com.myhome.model.AdminPayment;
import com.myhome.model.CommunityHouseName;
import com.myhome.model.CreateCommunityRequest;
import com.myhome.model.CreateCommunityResponse;
import com.myhome.domain.Community;
import com.myhome.domain.CommunityHouse;
import com.myhome.domain.User;
import com.myhome.model.GetCommunityDetailsResponse;
import com.myhome.model.GetCommunityDetailsResponseCommunity;
import com.myhome.model.GetHouseDetailsResponse;
Expand All @@ -46,11 +43,9 @@
import com.myhome.model.ListAdminPaymentsResponse;
import com.myhome.model.ListCommunityAdminsResponse;
import com.myhome.model.ListCommunityAdminsResponseCommunityAdmin;
import com.myhome.repositories.CommunityRepository;
import com.myhome.services.AmenityService;
import com.myhome.services.CommunityService;
import com.myhome.services.PaymentService;

import com.myhome.utils.PageInfo;
import java.math.BigDecimal;
import java.time.LocalDate;
Expand All @@ -61,8 +56,6 @@
import java.util.List;
import java.util.Optional;
import java.util.Set;

import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
Expand All @@ -74,8 +67,6 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
Expand Down Expand Up @@ -108,9 +99,6 @@ class CommunityControllerTest {
@Mock
private CommunityService communityService;

@Mock
private CommunityRepository communityRepository;

@Mock
private SchedulePaymentApiMapper paymentApiMapper;

Expand Down Expand Up @@ -617,48 +605,6 @@ void shouldNotDeleteCommunityNotFoundSuccessfully() {
verify(communityService).deleteCommunity(COMMUNITY_ID);
}

@Test
void shouldAddAmenityToCommunity() {
// given
final String communityId = "communityId";
final AmenityDto amenityDto =
new AmenityDto().id(1L)
.amenityId("amenityId")
.name("name")
.description("description")
.price(BigDecimal.ONE)
.communityId("");
final HashSet<AmenityDto> amenities = new HashSet<>(singletonList(amenityDto));
final AddAmenityRequest request = new AddAmenityRequest().amenities(amenities);
given(amenitySDJpaService.createAmenities(amenities, communityId))
.willReturn(Optional.of(singletonList(amenityDto)));

// when
final ResponseEntity<AddAmenityResponse> response =
communityController.addAmenityToCommunity(communityId, request);

// then
assertEquals(HttpStatus.OK, response.getStatusCode());
}

@Test
void shouldNotAddAmenityWhenCommunityNotExists() {
// given
final String communityId = "communityId";
final AmenityDto amenityDto = new AmenityDto();
final HashSet<AmenityDto> amenities = new HashSet<>(singletonList(amenityDto));
final AddAmenityRequest request = new AddAmenityRequest().amenities(amenities);
given(amenitySDJpaService.createAmenities(amenities, communityId))
.willReturn(Optional.empty());

// when
final ResponseEntity<AddAmenityResponse> response =
communityController.addAmenityToCommunity(communityId, request);

// then
assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode());
}

private PaymentDto createTestPaymentDto() {
UserDto userDto = UserDto.builder()
.userId(COMMUNITY_ADMIN_ID)
Expand Down