diff --git a/src/main/java/ua/ndmik/bot/scheduler/MidnightRolloverScheduler.java b/src/main/java/ua/ndmik/bot/scheduler/MidnightRolloverScheduler.java index 3396f80..db41d8d 100644 --- a/src/main/java/ua/ndmik/bot/scheduler/MidnightRolloverScheduler.java +++ b/src/main/java/ua/ndmik/bot/scheduler/MidnightRolloverScheduler.java @@ -35,7 +35,10 @@ public void rolloverSchedulesAtMidnight() { log.info("Running daily schedule rollover"); scheduleRepository.deleteByDay(TODAY.name()); List tomorrowSchedules = scheduleRepository.findByDay(TOMORROW.name()); - scheduleRepository.deleteByDay(TOMORROW.name()); + if (tomorrowSchedules.isEmpty()) { + log.info("No tomorrow schedules found, rollover finished"); + return; + } List rolledSchedules = tomorrowSchedules.stream() .map(schedule -> Schedule.builder() .area(schedule.getArea()) @@ -46,19 +49,14 @@ public void rolloverSchedulesAtMidnight() { .needToNotify(Boolean.FALSE) .build()) .toList(); - List emptyTomorrowSchedules = tomorrowSchedules.stream() - .map(schedule -> Schedule.builder() - .area(schedule.getArea()) - .groupId(schedule.getGroupId()) - .scheduleDay(TOMORROW) - .schedule(buildAllYesScheduleJson()) - .lastUpdate(schedule.getLastUpdate()) - .needToNotify(Boolean.FALSE) - .build()) - .toList(); - List schedulesToSave = new ArrayList<>(rolledSchedules.size() + emptyTomorrowSchedules.size()); + String allYesScheduleJson = buildAllYesScheduleJson(); + tomorrowSchedules.forEach(schedule -> { + schedule.setSchedule(allYesScheduleJson); + schedule.setNeedToNotify(Boolean.FALSE); + }); + List schedulesToSave = new ArrayList<>(rolledSchedules.size() + tomorrowSchedules.size()); schedulesToSave.addAll(rolledSchedules); - schedulesToSave.addAll(emptyTomorrowSchedules); + schedulesToSave.addAll(tomorrowSchedules); scheduleRepository.saveAll(schedulesToSave); log.info("Schedules were rolled over"); } diff --git a/src/main/java/ua/ndmik/bot/scheduler/ShutdownsScheduler.java b/src/main/java/ua/ndmik/bot/scheduler/ShutdownsScheduler.java index 9cd65ae..b621263 100644 --- a/src/main/java/ua/ndmik/bot/scheduler/ShutdownsScheduler.java +++ b/src/main/java/ua/ndmik/bot/scheduler/ShutdownsScheduler.java @@ -27,7 +27,7 @@ @Service @Slf4j public class ShutdownsScheduler { - private static final String TOMORROW_SCHEDULE_APPEARED_MESSAGE = "📅 Графік на завтра зʼявився"; + private static final String TOMORROW_SCHEDULE_APPEARED_MESSAGE = "🔔 Графік на завтра зʼявився"; private static final String SCHEDULE_CHANGED_MESSAGE = "🔄 Графік змінився"; private final DtekClient dtekClient; diff --git a/src/main/java/ua/ndmik/bot/service/TelegramService.java b/src/main/java/ua/ndmik/bot/service/TelegramService.java index 37d5222..2411dc1 100644 --- a/src/main/java/ua/ndmik/bot/service/TelegramService.java +++ b/src/main/java/ua/ndmik/bot/service/TelegramService.java @@ -164,7 +164,6 @@ public String formatMessage(UserSettings user, String header) { String template = """ %s %s - ⚙️ Ваші налаштування 🏙️ Регіон: %s diff --git a/src/test/java/ua/ndmik/bot/scheduler/MidnightRolloverSchedulerTests.java b/src/test/java/ua/ndmik/bot/scheduler/MidnightRolloverSchedulerTests.java index 30fdfe4..44072f1 100644 --- a/src/test/java/ua/ndmik/bot/scheduler/MidnightRolloverSchedulerTests.java +++ b/src/test/java/ua/ndmik/bot/scheduler/MidnightRolloverSchedulerTests.java @@ -43,20 +43,21 @@ void rolloverSchedulesAtMidnight_promotesTomorrowScheduleAndResetsNotifications( new HourOverride(10, HourState.NO), new HourOverride(11, HourState.NO) )); + String tomorrowScheduleJson = tomorrow.getSchedule(); given(scheduleRepository.findByDay(ScheduleDay.TOMORROW.name())).willReturn(List.of(tomorrow)); scheduler.rolloverSchedulesAtMidnight(); List savedSchedules = capturedSavedSchedules(); - assertThat(find(savedSchedules, ScheduleDay.TODAY, "2.1").getSchedule()).isEqualTo(tomorrow.getSchedule()); + assertThat(find(savedSchedules, ScheduleDay.TODAY, "2.1").getSchedule()).isEqualTo(tomorrowScheduleJson); assertThat(find(savedSchedules, ScheduleDay.TOMORROW, "2.1").getSchedule()).isEqualTo(allDayWithPowerJson()); assertThat(find(savedSchedules, ScheduleDay.TODAY, "2.1").getNeedToNotify()).isFalse(); assertThat(find(savedSchedules, ScheduleDay.TOMORROW, "2.1").getNeedToNotify()).isFalse(); } @Test - void rolloverSchedulesAtMidnight_deletesDaysAndSavesNothingWhenTomorrowIsMissing() { + void rolloverSchedulesAtMidnight_deletesTodayAndSavesNothingWhenTomorrowIsMissing() { MidnightRolloverScheduler scheduler = new MidnightRolloverScheduler(scheduleRepository); given(scheduleRepository.findByDay(ScheduleDay.TOMORROW.name())).willReturn(List.of()); @@ -64,8 +65,8 @@ void rolloverSchedulesAtMidnight_deletesDaysAndSavesNothingWhenTomorrowIsMissing scheduler.rolloverSchedulesAtMidnight(); then(scheduleRepository).should().deleteByDay(ScheduleDay.TODAY.name()); - then(scheduleRepository).should().deleteByDay(ScheduleDay.TOMORROW.name()); - assertThat(capturedSavedSchedules()).isEmpty(); + then(scheduleRepository).should().findByDay(ScheduleDay.TOMORROW.name()); + then(scheduleRepository).shouldHaveNoMoreInteractions(); } private List capturedSavedSchedules() {