diff --git a/service/src/main/java/com/myhome/controllers/AmenityController.java b/service/src/main/java/com/myhome/controllers/AmenityController.java index 5df52ec2..29e9f401 100644 --- a/service/src/main/java/com/myhome/controllers/AmenityController.java +++ b/service/src/main/java/com/myhome/controllers/AmenityController.java @@ -24,9 +24,12 @@ import com.myhome.model.AmenityDto; import com.myhome.model.GetAmenityDetailsResponse; import com.myhome.model.UpdateAmenityRequest; +import com.myhome.services.AmenityBookingService; import com.myhome.services.AmenityService; import java.util.Set; import javax.validation.Valid; + +import com.myhome.services.CommunityService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; @@ -43,6 +46,8 @@ public class AmenityController implements AmenitiesApi { private final AmenityService amenitySDJpaService; private final AmenityApiMapper amenityApiMapper; + private final AmenityBookingService amenityBookingService; + private final CommunityService communityService; @Override public ResponseEntity getAmenityDetails( @@ -56,7 +61,7 @@ public ResponseEntity getAmenityDetails( @Override public ResponseEntity> listAllAmenities( @PathVariable String communityId) { - Set amenities = amenitySDJpaService.listAllAmenities(communityId); + Set amenities = communityService.listAllAmenities(communityId); Set response = amenityApiMapper.amenitiesSetToAmenityDetailsResponseSet(amenities); return ResponseEntity.ok(response); @@ -98,7 +103,7 @@ public ResponseEntity updateAmenity(@PathVariable String amenityId, // TODO: Move to api.yaml @DeleteMapping(path = "/bookings/{bookingId}") public ResponseEntity deleteBooking(@PathVariable String bookingId) { - boolean isBookingDeleted = amenitySDJpaService.deleteBooking(bookingId); + boolean isBookingDeleted = amenityBookingService.deleteBooking(bookingId); if (isBookingDeleted) { return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); } else { diff --git a/service/src/main/java/com/myhome/controllers/CommunityController.java b/service/src/main/java/com/myhome/controllers/CommunityController.java index 61d12782..8d0f1986 100644 --- a/service/src/main/java/com/myhome/controllers/CommunityController.java +++ b/service/src/main/java/com/myhome/controllers/CommunityController.java @@ -18,30 +18,45 @@ 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; import com.myhome.model.AddCommunityHouseResponse; +import com.myhome.model.AdminPayment; 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.services.AmenityService; import com.myhome.services.CommunityService; import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import javax.validation.Valid; + +import com.myhome.services.PaymentService; +import com.myhome.utils.PageInfo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.http.HttpStatus; @@ -57,8 +72,14 @@ @RestController @Slf4j public class CommunityController implements CommunitiesApi { + private final CommunityService communityService; + private final AmenityService amenitySDJpaService; + private final PaymentService paymentService; + private final CommunityApiMapper communityApiMapper; + private final AmenityApiMapper amenityApiMapper; + private final SchedulePaymentApiMapper schedulePaymentApiMapper; @Override public ResponseEntity createCommunity(@Valid @RequestBody diff --git a/service/src/main/java/com/myhome/repositories/AmenityBookingItemRepository.java b/service/src/main/java/com/myhome/repositories/AmenityBookingItemRepository.java index 5e3ce8e1..f53a1dfb 100644 --- a/service/src/main/java/com/myhome/repositories/AmenityBookingItemRepository.java +++ b/service/src/main/java/com/myhome/repositories/AmenityBookingItemRepository.java @@ -7,8 +7,11 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.HashSet; import java.util.Optional; public interface AmenityBookingItemRepository extends JpaRepository { Optional findByAmenityBookingItemId(String amenityBookingItemId); + + HashSet findAllByAmenity_AmenityId(String amenityId); } diff --git a/service/src/main/java/com/myhome/services/AmenityService.java b/service/src/main/java/com/myhome/services/AmenityService.java index 8da143b6..061906bf 100644 --- a/service/src/main/java/com/myhome/services/AmenityService.java +++ b/service/src/main/java/com/myhome/services/AmenityService.java @@ -30,9 +30,6 @@ public interface AmenityService { boolean deleteAmenity(String amenityId); - Set listAllAmenities(String communityId); - boolean updateAmenity(AmenityDto updatedAmenityDto); - boolean deleteBooking(String bookingId); } diff --git a/service/src/main/java/com/myhome/services/CommunityService.java b/service/src/main/java/com/myhome/services/CommunityService.java index cc4a4f2e..e3c1a0e4 100644 --- a/service/src/main/java/com/myhome/services/CommunityService.java +++ b/service/src/main/java/com/myhome/services/CommunityService.java @@ -17,6 +17,7 @@ package com.myhome.services; import com.myhome.controllers.dto.CommunityDto; +import com.myhome.domain.Amenity; import com.myhome.domain.Community; import com.myhome.domain.CommunityHouse; import com.myhome.domain.User; @@ -34,6 +35,8 @@ public interface CommunityService { Optional getCommunityDetailsById(String communityId); + Set listAllAmenities(String communityId); + Optional> findCommunityHousesById(String communityId, Pageable pageable); Optional> findCommunityAdminsById(String communityId, Pageable pageable); diff --git a/service/src/main/java/com/myhome/services/HouseService.java b/service/src/main/java/com/myhome/services/HouseService.java index c19f3368..777f643f 100644 --- a/service/src/main/java/com/myhome/services/HouseService.java +++ b/service/src/main/java/com/myhome/services/HouseService.java @@ -37,4 +37,6 @@ public interface HouseService { Optional> getHouseMembersById(String houseId, Pageable pageable); Optional> listHouseMembersForHousesOfUserId(String userId, Pageable pageable); + + boolean removeAmenityFromHouse(CommunityHouse house, String amenityId); } diff --git a/service/src/main/java/com/myhome/services/springdatajpa/AmenitySDJpaService.java b/service/src/main/java/com/myhome/services/springdatajpa/AmenitySDJpaService.java index 709fc514..b337a557 100644 --- a/service/src/main/java/com/myhome/services/springdatajpa/AmenitySDJpaService.java +++ b/service/src/main/java/com/myhome/services/springdatajpa/AmenitySDJpaService.java @@ -20,16 +20,17 @@ import com.myhome.domain.Amenity; import com.myhome.domain.Community; import com.myhome.model.AmenityDto; -import com.myhome.repositories.AmenityBookingItemRepository; import com.myhome.repositories.AmenityRepository; -import com.myhome.repositories.CommunityRepository; +import com.myhome.services.AmenityBookingService; import com.myhome.services.AmenityService; import com.myhome.services.CommunityService; -import java.util.HashSet; + import java.util.List; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; + +import com.myhome.services.HouseService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -38,10 +39,10 @@ public class AmenitySDJpaService implements AmenityService { private final AmenityRepository amenityRepository; - private final CommunityRepository communityRepository; private final CommunityService communityService; private final AmenityApiMapper amenityApiMapper; - private final AmenityBookingItemRepository bookingRepository; + private final AmenityBookingService amenityBookingService; + private final HouseService houseService; @Override public Optional> createAmenities(Set amenities, String communityId) { @@ -83,19 +84,11 @@ public boolean deleteAmenity(String amenityId) { .orElse(false); } - @Override - public Set listAllAmenities(String communityId) { - return communityRepository.findByCommunityIdWithAmenities(communityId) - .map(Community::getAmenities) - .orElse(new HashSet<>()); - } - @Override public boolean updateAmenity(AmenityDto updatedAmenity) { String amenityId = updatedAmenity.getAmenityId(); return amenityRepository.findByAmenityId(amenityId) - .map(amenity -> communityRepository.findByCommunityId(updatedAmenity.getCommunityId()) - .map(community -> { + .map(amenity -> { Amenity updated = new Amenity(); updated.setName(updatedAmenity.getName()); updated.setPrice(updatedAmenity.getPrice()); @@ -104,17 +97,6 @@ public boolean updateAmenity(AmenityDto updatedAmenity) { updated.setDescription(updatedAmenity.getDescription()); return updated; }) - .orElse(null)) .map(amenityRepository::save).isPresent(); } - - @Override - public boolean deleteBooking(String bookingId) { - return bookingRepository.findByAmenityBookingItemId(bookingId) - .map(bookingItem -> { - bookingRepository.delete(bookingItem); - return true; - }) - .orElse(false); - } } diff --git a/service/src/main/java/com/myhome/services/springdatajpa/CommunitySDJpaService.java b/service/src/main/java/com/myhome/services/springdatajpa/CommunitySDJpaService.java index 8182a56e..5d22220e 100644 --- a/service/src/main/java/com/myhome/services/springdatajpa/CommunitySDJpaService.java +++ b/service/src/main/java/com/myhome/services/springdatajpa/CommunitySDJpaService.java @@ -18,6 +18,7 @@ import com.myhome.controllers.dto.CommunityDto; import com.myhome.controllers.dto.mapper.CommunityMapper; +import com.myhome.domain.Amenity; import com.myhome.domain.Community; import com.myhome.domain.CommunityHouse; import com.myhome.domain.HouseMember; @@ -84,6 +85,13 @@ public Set listAll(Pageable pageable) { return communities; } + @Override + public Set listAllAmenities(String communityId) { + return communityRepository.findByCommunityIdWithAmenities(communityId) + .map(Community::getAmenities) + .orElse(new HashSet<>()); + } + @Override public Optional> findCommunityHousesById(String communityId, Pageable pageable) { diff --git a/service/src/main/java/com/myhome/services/springdatajpa/HouseSDJpaService.java b/service/src/main/java/com/myhome/services/springdatajpa/HouseSDJpaService.java index da732cac..e1118515 100644 --- a/service/src/main/java/com/myhome/services/springdatajpa/HouseSDJpaService.java +++ b/service/src/main/java/com/myhome/services/springdatajpa/HouseSDJpaService.java @@ -115,4 +115,13 @@ public Optional> listHouseMembersForHousesOfUserId(String user houseMemberRepository.findAllByCommunityHouse_Community_Admins_UserId(userId, pageable) ); } + + @Override + public boolean removeAmenityFromHouse(CommunityHouse house, String amenityId) { + boolean removed = house.getAmenities().removeIf(amenity -> amenity.getAmenityId().equals(amenityId)); + if (removed) { + communityHouseRepository.save(house); + } + return removed; + } } diff --git a/service/src/test/java/com/myhome/controllers/AmenityControllerTest.java b/service/src/test/java/com/myhome/controllers/AmenityControllerTest.java index bd59d9d5..c87ee5b1 100644 --- a/service/src/test/java/com/myhome/controllers/AmenityControllerTest.java +++ b/service/src/test/java/com/myhome/controllers/AmenityControllerTest.java @@ -23,6 +23,7 @@ import com.myhome.model.AmenityDto; import com.myhome.model.GetAmenityDetailsResponse; import com.myhome.model.UpdateAmenityRequest; +import com.myhome.services.AmenityBookingService; import com.myhome.services.AmenityService; import java.math.BigDecimal; import java.util.HashSet; @@ -56,6 +57,8 @@ class AmenityControllerTest { private AmenityService amenitySDJpaService; @Mock private AmenityApiMapper amenityApiMapper; + @Mock + private AmenityBookingService amenityBookingService; @InjectMocks private AmenityController amenityController; @@ -223,7 +226,7 @@ void shouldNotUpdateCommunityAmenityIfAmenityNotExists() { @Test void deleteBooking() { // given - given(amenitySDJpaService.deleteBooking(TEST_BOOKING_ID)) + given(amenityBookingService.deleteBooking(TEST_BOOKING_ID)) .willReturn(true); // when @@ -232,13 +235,13 @@ void deleteBooking() { // then assertNull(response.getBody()); assertEquals(HttpStatus.NO_CONTENT, response.getStatusCode()); - verify(amenitySDJpaService).deleteBooking(TEST_BOOKING_ID); + verify(amenityBookingService).deleteBooking(TEST_BOOKING_ID); } @Test void deleteBookingNotExists() { // given - given(amenitySDJpaService.deleteBooking(TEST_BOOKING_ID)) + given(amenityBookingService.deleteBooking(TEST_BOOKING_ID)) .willReturn(false); // when @@ -247,7 +250,7 @@ void deleteBookingNotExists() { // then assertNull(response.getBody()); assertEquals(HttpStatus.NOT_FOUND, response.getStatusCode()); - verify(amenitySDJpaService).deleteBooking(TEST_BOOKING_ID); + verify(amenityBookingService).deleteBooking(TEST_BOOKING_ID); } private Amenity getTestAmenity() { diff --git a/service/src/test/java/com/myhome/services/unit/AmenityBookingSDJpaServiceTest.java b/service/src/test/java/com/myhome/services/unit/AmenityBookingSDJpaServiceTest.java new file mode 100644 index 00000000..dc765275 --- /dev/null +++ b/service/src/test/java/com/myhome/services/unit/AmenityBookingSDJpaServiceTest.java @@ -0,0 +1,73 @@ +package com.myhome.services.unit; + +import com.myhome.domain.AmenityBookingItem; +import com.myhome.repositories.AmenityBookingItemRepository; +import com.myhome.services.AmenityBookingService; +import com.myhome.services.springdatajpa.AmenityBookingSDJpaService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +public class AmenityBookingSDJpaServiceTest { + + private static final String TEST_BOOKING_ID = "test-booking-id"; + @Mock + private AmenityBookingItemRepository bookingItemRepository; + + @InjectMocks + private AmenityBookingSDJpaService amenityBookingService; + + @BeforeEach + private void init() { + MockitoAnnotations.initMocks(this); + } + + @Test + void deleteBookingItem() { + // given + AmenityBookingItem testBookingItem = getTestBookingItem(); + + given(bookingItemRepository.findByAmenityBookingItemId(TEST_BOOKING_ID)) + .willReturn(Optional.of(testBookingItem)); + + // when + boolean bookingDeleted = amenityBookingService.deleteBooking(TEST_BOOKING_ID); + + // then + assertTrue(bookingDeleted); + verify(bookingItemRepository).findByAmenityBookingItemId(TEST_BOOKING_ID); + verify(bookingItemRepository).delete(testBookingItem); + } + + @Test + void deleteBookingNotExists() { + // given + given(bookingItemRepository.findByAmenityBookingItemId(TEST_BOOKING_ID)) + .willReturn(Optional.empty()); + + // when + boolean amenityDeleted = amenityBookingService.deleteBooking(TEST_BOOKING_ID); + + // then + assertFalse(amenityDeleted); + verify(bookingItemRepository).findByAmenityBookingItemId(TEST_BOOKING_ID); + verify(bookingItemRepository, never()).delete(any()); + } + + private AmenityBookingItem getTestBookingItem() { + return new AmenityBookingItem() + .withAmenityBookingItemId(TEST_BOOKING_ID); + } + +} \ No newline at end of file diff --git a/service/src/test/java/com/myhome/services/unit/AmenitySDJpaServiceTest.java b/service/src/test/java/com/myhome/services/unit/AmenitySDJpaServiceTest.java index 44985c93..b579c9f9 100644 --- a/service/src/test/java/com/myhome/services/unit/AmenitySDJpaServiceTest.java +++ b/service/src/test/java/com/myhome/services/unit/AmenitySDJpaServiceTest.java @@ -24,6 +24,7 @@ import com.myhome.repositories.AmenityBookingItemRepository; import com.myhome.repositories.AmenityRepository; import com.myhome.repositories.CommunityRepository; +import com.myhome.services.AmenityBookingService; import com.myhome.services.CommunityService; import com.myhome.services.springdatajpa.AmenitySDJpaService; import helpers.TestUtils; @@ -58,7 +59,6 @@ class AmenitySDJpaServiceTest { private final String TEST_AMENITY_ID = "test-amenity-id"; private final String TEST_AMENITY_DESCRIPTION = "test-amenity-description"; private final String TEST_COMMUNITY_ID = "test-community-id"; - private final int TEST_AMENITIES_COUNT = 2; @Mock private AmenityRepository amenityRepository; @Mock @@ -114,38 +114,6 @@ void deleteAmenityNotExists() { verify(amenityRepository, never()).delete(any()); } - @Test - void listAllAmenities() { - // given - Set testAmenities = TestUtils.AmenityHelpers.getTestAmenities(TEST_AMENITIES_COUNT); - Community testCommunity = TestUtils.CommunityHelpers.getTestCommunity(); - testCommunity.setAmenities(testAmenities); - - given(communityRepository.findByCommunityIdWithAmenities(TEST_COMMUNITY_ID)) - .willReturn(Optional.of(testCommunity)); - - // when - Set resultAmenities = amenitySDJpaService.listAllAmenities(TEST_COMMUNITY_ID); - - // then - assertEquals(testAmenities, resultAmenities); - verify(communityRepository).findByCommunityIdWithAmenities(TEST_COMMUNITY_ID); - } - - @Test - void listAllAmenitiesNotExists() { - // given - given(communityRepository.findByCommunityIdWithAmenities(TEST_COMMUNITY_ID)) - .willReturn(Optional.empty()); - - // when - Set resultAmenities = amenitySDJpaService.listAllAmenities(TEST_COMMUNITY_ID); - - // then - assertEquals(new HashSet<>(), resultAmenities); - verify(communityRepository).findByCommunityIdWithAmenities(TEST_COMMUNITY_ID); - } - @Test void shouldAddAmenityToExistingCommunity() { // given @@ -232,7 +200,6 @@ void shouldUpdateCommunityAmenitySuccessfully() { // then assertTrue(result); verify(amenityRepository).findByAmenityId(TEST_AMENITY_ID); - verify(communityRepository).findByCommunityId(TEST_COMMUNITY_ID); verify(amenityRepository).save(updatedAmenity); } @@ -273,7 +240,6 @@ void shouldNotUpdateCommunityAmenitySuccessfullyIfSavingFails() { // then assertFalse(result); verify(amenityRepository).findByAmenityId(TEST_AMENITY_ID); - verify(communityRepository).findByCommunityId(TEST_COMMUNITY_ID); verify(amenityRepository).save(updatedAmenity); } @@ -295,40 +261,7 @@ void shouldNotUpdateAmenityIfCommunityDoesNotExist() { // then assertFalse(result); verify(amenityRepository).findByAmenityId(TEST_AMENITY_ID); - verify(communityRepository).findByCommunityId(TEST_COMMUNITY_ID); - verifyNoMoreInteractions(amenityRepository); - } - - @Test - void deleteBookingItem() { - // given - AmenityBookingItem testBookingItem = getTestBookingItem(); - - given(bookingItemRepository.findByAmenityBookingItemId(TEST_BOOKING_ID)) - .willReturn(Optional.of(testBookingItem)); - - // when - boolean bookingDeleted = amenitySDJpaService.deleteBooking(TEST_BOOKING_ID); - - // then - assertTrue(bookingDeleted); - verify(bookingItemRepository).findByAmenityBookingItemId(TEST_BOOKING_ID); - verify(bookingItemRepository).delete(testBookingItem); - } - - @Test - void deleteBookingNotExists() { - // given - given(bookingItemRepository.findByAmenityBookingItemId(TEST_BOOKING_ID)) - .willReturn(Optional.empty()); - - // when - boolean amenityDeleted = amenitySDJpaService.deleteBooking(TEST_BOOKING_ID); - - // then - assertFalse(amenityDeleted); - verify(bookingItemRepository).findByAmenityBookingItemId(TEST_BOOKING_ID); - verify(bookingItemRepository, never()).delete(any()); + verify(amenityRepository).save(communityAmenity); } private AmenityDto getTestAmenityDto() { @@ -352,9 +285,4 @@ private Amenity getUpdatedCommunityAmenity() { .withDescription(communityAmenityDto.getDescription()) .withCommunity(TestUtils.CommunityHelpers.getTestCommunity()); } - - private AmenityBookingItem getTestBookingItem() { - return new AmenityBookingItem() - .withAmenityBookingItemId(TEST_BOOKING_ID); - } } \ No newline at end of file diff --git a/service/src/test/java/com/myhome/services/unit/CommunitySDJpaServiceTest.java b/service/src/test/java/com/myhome/services/unit/CommunitySDJpaServiceTest.java index b8ab7143..43e2761b 100644 --- a/service/src/test/java/com/myhome/services/unit/CommunitySDJpaServiceTest.java +++ b/service/src/test/java/com/myhome/services/unit/CommunitySDJpaServiceTest.java @@ -16,6 +16,7 @@ package com.myhome.services.unit; +import com.myhome.domain.Amenity; import helpers.TestUtils; import com.myhome.controllers.dto.CommunityDto; import com.myhome.controllers.dto.mapper.CommunityMapper; @@ -70,6 +71,7 @@ public class CommunitySDJpaServiceTest { private final String TEST_ADMIN_EMAIL = "test-user-email"; private final String TEST_ADMIN_PASSWORD = "test-user-password"; private final String TEST_HOUSE_ID = "test-house-id"; + private final int TEST_AMENITIES_COUNT = 2; @Mock private CommunityRepository communityRepository; @@ -565,6 +567,38 @@ void removeHouseFromCommunityByHouseIdHouseNotInCommunity() { verify(communityRepository, never()).save(testCommunity); } + @Test + void listAllAmenities() { + // given + Set testAmenities = TestUtils.AmenityHelpers.getTestAmenities(TEST_AMENITIES_COUNT); + Community testCommunity = TestUtils.CommunityHelpers.getTestCommunity(); + testCommunity.setAmenities(testAmenities); + + given(communityRepository.findByCommunityIdWithAmenities(TEST_COMMUNITY_ID)) + .willReturn(Optional.of(testCommunity)); + + // when + Set resultAmenities = communitySDJpaService.listAllAmenities(TEST_COMMUNITY_ID); + + // then + assertEquals(testAmenities, resultAmenities); + verify(communityRepository).findByCommunityIdWithAmenities(TEST_COMMUNITY_ID); + } + + @Test + void listAllAmenitiesNotExists() { + // given + given(communityRepository.findByCommunityIdWithAmenities(TEST_COMMUNITY_ID)) + .willReturn(Optional.empty()); + + // when + Set resultAmenities = communitySDJpaService.listAllAmenities(TEST_COMMUNITY_ID); + + // then + assertEquals(new HashSet<>(), resultAmenities); + verify(communityRepository).findByCommunityIdWithAmenities(TEST_COMMUNITY_ID); + } + private CommunityDto getTestCommunityDto() { CommunityDto testCommunityDto = new CommunityDto(); testCommunityDto.setCommunityId(TEST_COMMUNITY_ID);