Skip to content
Merged
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 pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

<groupId>io.github.enkarin</groupId>
<artifactId>chef-bot</artifactId>
<version>2.8.3</version>
<version>2.8.4</version>
<name>Chef Bot</name>

<properties>
Expand Down Expand Up @@ -301,7 +301,7 @@
<limit>
<counter>LINE</counter>
<value>MISSEDCOUNT</value>
<maximum>52</maximum>
<maximum>53</maximum>
</limit>
</limits>
</rule>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ private void processingResponse(final long chatId, final OperationResult operati
if (action instanceof ModerationResultDto moderationResultDto) {
sendDeclineResultToOwner(moderationResultDto);
} else if (action instanceof ModerationDishDto moderationDishDto) {
moderationDishDto.getOldModerationRequests().forEach(this::deleteOddRequestMessage);
telegramController.addRequestMessages(moderationDishDto.getRequestId(),
sendModerationRequests(telegramController.findAvailableModeratorsId(moderationDishDto.getOwnerChatId()), moderationDishDto));
} else if (action instanceof List<?> dishDtoList) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public class ModerationDishDto {
private WorldCuisine worldCuisine;
private Set<String> products;
private String recipe;
private Set<ModerationRequestMessageDto> oldModerationRequests;

@Override
public String toString() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class AddExcludeProductInputHandler implements NonCommandInputHandler {
@Override
public ExecutionResult execute(final long userId, final String text) {
service.addExcludeProducts(userId, text.split("[\n,]"));
return new ExecutionResult(ChatStatus.MAIN_MENU);
return new ExecutionResult(ChatStatus.EXCLUDE_PRODUCTS);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class DeleteExcludeProductsByNameInputHandler implements NonCommandInputH
@Override
public ExecutionResult execute(final long userId, final String text) {
service.deleteExcludeProductsByEqualsNames(userId, text.split("[\n,]"));
return new ExecutionResult(ChatStatus.MAIN_MENU);
return new ExecutionResult(ChatStatus.EXCLUDE_PRODUCTS);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class DeleteExcludeProductsContainsNameInputHandler implements NonCommand
@Override
public ExecutionResult execute(final long userId, final String text) {
service.deleteExcludeProductsByLikeName(userId, text.split("[\n,]"));
return new ExecutionResult(ChatStatus.MAIN_MENU);
return new ExecutionResult(ChatStatus.EXCLUDE_PRODUCTS);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
import java.util.Set;
import java.util.stream.Collectors;

import static java.util.Objects.isNull;

@Service
@Transactional
@RequiredArgsConstructor
Expand All @@ -30,11 +32,22 @@ public class ModerationService {
private final UserRepository userRepository;

public ModerationDishDto createModerationRequest(final long userId) {
final ModerationRequest moderationRequest = moderationRequestRepository.save(ModerationRequest.builder()
.moderationDish(userService.findUser(userId).getEditabledDish())
.build());
final Dish editableDish = userService.findUser(userId).getEditabledDish();
final ModerationRequest moderationRequest;
final Set<ModerationRequestMessageDto> moderationRequestMessages;
if (isNull(editableDish.getModerationRequest())) {
moderationRequest = moderationRequestRepository.save(ModerationRequest.builder().moderationDish(editableDish).build());
moderationRequestMessages = Set.of();
} else {
moderationRequest = editableDish.getModerationRequest();
moderationRequestMessages = moderationRequest.getModerationRequestMessages().stream()
.map(moderationRequestMessageEntityDtoMapper::entityToDto)
.collect(Collectors.toSet());
moderationRequestMessageRepository.deleteAll(moderationRequest.getModerationRequestMessages());
}
final ModerationDishDto result = dishEntityModerationDtoMapper.entityToDto(moderationRequest.getModerationDish());
result.setRequestId(moderationRequest.getId());
result.setOldModerationRequests(moderationRequestMessages);
return result;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,12 @@ void init() {

@Test
void createModerationRequest() {
moderationRequestRepository.deleteAll();
dishService.initDishName(USER_ID, "newDish");

moderationService.createModerationRequest(USER_ID);

assertThat(moderationRequestRepository.findAll()).extracting(ModerationRequest::getModerationDish).extracting(Dish::getDishName).contains("newDish");
assertThat(moderationRequestRepository.findAll()).hasSize(1).extracting(ModerationRequest::getModerationDish).extracting(Dish::getDishName).contains("newDish");
}

@Test
Expand Down Expand Up @@ -101,4 +102,23 @@ void startModerate() {
String.class,
moderationRequestsId[3])).isEqualTo("fourthDish");
}

@Test
void createRepeatedModerationRequest() {
moderationRequestRepository.deleteAll();
dishService.initDishName(USER_ID, "newDish");
final long moderationRequestId = moderationService.createModerationRequest(USER_ID).getRequestId();
dishService.putDishRecipe(USER_ID, "Recipe");
moderationService.addRequestMessages(moderationRequestId, Set.of(new ModerationRequestMessageDto(1, CHAT_ID - 1)));

assertThat(moderationService.createModerationRequest(USER_ID).getOldModerationRequests())
.extracting(ModerationRequestMessageDto::chatId)
.containsOnly(CHAT_ID - 1);
assertThat(moderationRequestRepository.findAll())
.hasSize(1)
.extracting(ModerationRequest::getModerationDish)
.extracting(Dish::getDishName)
.contains("newDish");
assertThat(moderationRequestMessageRepository.count()).isZero();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ void addExcludeProduct() {
assertThat(processingFacade.execute(USER_ID, "добавить продукты в список").botAnswer().messageText())
.isEqualTo("Введите названия продуктов, которые хотите добавить в список, через запятую или с новой строки");
assertThat(processingFacade.execute(USER_ID, "first, second").botAnswer().messageText())
.isEqualTo("Вы в главном меню. Выберете следующую команду для выполнения.");
.startsWith("Список продуктов, блюда с которыми будут исключены из поиска:");
assertThat(excludeUserProductsService.findExcludeProducts(USER_ID)).containsOnly("firstProduct", "secondProduct");
}

Expand All @@ -453,7 +453,7 @@ void deleteExcludeProductByName() {
assertThat(processingFacade.execute(USER_ID, "удалить продукты из списка по полному названию").botAnswer().messageText())
.isEqualTo("Введите названия продуктов, которые хотите исключить из списка, через запятую или с новой строки");
assertThat(processingFacade.execute(USER_ID, "firstProduct, secondProduct").botAnswer().messageText())
.isEqualTo("Вы в главном меню. Выберете следующую команду для выполнения.");
.startsWith("Список продуктов, блюда с которыми будут исключены из поиска:");
assertThat(excludeUserProductsService.findExcludeProducts(USER_ID)).containsOnly("thirdProduct");
}

Expand All @@ -466,7 +466,7 @@ void deleteExcludeProductContainsName() {
assertThat(processingFacade.execute(USER_ID, "удалить продукты из списка по частичному названию").botAnswer().messageText())
.isEqualTo("Введите названия продуктов, которые хотите исключить из списка, через запятую или с новой строки");
assertThat(processingFacade.execute(USER_ID, "first, third").botAnswer().messageText())
.isEqualTo("Вы в главном меню. Выберете следующую команду для выполнения.");
.startsWith("Список продуктов, блюда с которыми будут исключены из поиска:");
assertThat(excludeUserProductsService.findExcludeProducts(USER_ID)).containsOnly("secondProduct");
}
}
Loading