74 lines
4.4 KiB
Java
74 lines
4.4 KiB
Java
package com.mgm.mcrm.roomcalendar;
|
|
|
|
import com.mgm.mcrm.roomcalendar.services.*;
|
|
import com.mgm.mcrm.appsetting.services.SettingService;
|
|
import com.mgm.mcrm.appsetting.repositories.SettingDao;
|
|
import com.mgm.mcrm.basesetting.property.repositories.PropertyDao;
|
|
import com.mgm.mcrm.basesetting.room.repositories.RoomDao;
|
|
import com.mgm.mcrm.common.services.MGMApiService;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import java.util.*;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.mockito.Mockito.*;
|
|
|
|
class CalendarMockDataTest {
|
|
@Test void catalogAndQueriesAgreeForEveryHotelAcrossMonthBoundary() {
|
|
var catalog = CalendarMockData.metadata().getPropertyList();
|
|
var hotels = new ArrayList<>(catalog.subList(0,2));
|
|
hotels.addAll(catalog.get(2).getOtherProperties());
|
|
assertEquals(6,hotels.size());
|
|
int count=0;
|
|
for (var hotel:hotels) {
|
|
assertTrue(hotel.getName().contains("[MOCK]"));
|
|
String rooms=String.join(",",hotel.getRoomTypes().stream().map(t->t.getCode()).toList());
|
|
var rows=CalendarMockData.records("",hotel.getCode(),rooms,"2026-09-28","2026-10-03");
|
|
assertEquals(hotel.getRoomTypes().size()*6,rows.size());
|
|
assertTrue(rows.stream().anyMatch(row->row.getDate().equals("2026-10-01")));
|
|
assertEquals(rows,CalendarMockData.records("",hotel.getCode(),rooms,"2026-09-28","2026-10-03"));
|
|
count+=rows.size();
|
|
}
|
|
assertEquals(96,count);
|
|
}
|
|
|
|
@Test void variedAvailabilityAndPlayerQualificationAreDeterministic() {
|
|
var rows=CalendarMockData.records("80001","SIM_COTAI","CR,ES","2026-09-01","2026-10-31");
|
|
assertTrue(rows.stream().anyMatch(r->r.getRoomCount()==0));
|
|
assertTrue(rows.stream().anyMatch(r->r.getRoomCount()>0));
|
|
assertEquals(Set.of(0,1),new HashSet<>(rows.stream().map(r->r.getBookingDateQualificationFlag()).toList()));
|
|
assertNotEquals(rows,CalendarMockData.records("80002","SIM_COTAI","CR,ES","2026-09-01","2026-10-31"));
|
|
assertEquals(4,CalendarMockData.records("","SIM_MO,SIM_LB","MO_STD,LB_GRAND","2026-09-01","2026-09-02").size());
|
|
}
|
|
|
|
@Test void invalidRequestsFailInsteadOfProducingPlausibleData() {
|
|
assertThrows(IllegalArgumentException.class,()->CalendarMockData.records("","MC","CR","2026-09-01","2026-09-02"));
|
|
assertThrows(IllegalArgumentException.class,()->CalendarMockData.records("","SIM_COTAI","GR","2026-09-01","2026-09-02"));
|
|
assertThrows(IllegalArgumentException.class,()->CalendarMockData.records("","SIM_COTAI","CR","2026-09-02","2026-09-01"));
|
|
assertThrows(IllegalArgumentException.class,()->CalendarMockData.records("","SIM_COTAI","CR","2026-01-01","2026-12-31"));
|
|
}
|
|
|
|
@Test void enabledMocksDoNotReadDatabaseOrCallEsbAndDisabledSettingsUseDatabase() throws Exception {
|
|
var service=new RoomCalendarService();
|
|
var properties=mock(PropertyDao.class); var rooms=mock(RoomDao.class); var esb=mock(MGMApiService.class);
|
|
ReflectionTestUtils.setField(service,"propertyDao",properties);
|
|
ReflectionTestUtils.setField(service,"roomDao",rooms);
|
|
ReflectionTestUtils.setField(service,"mgmApiService",esb);
|
|
ReflectionTestUtils.setField(service,"calendarDataMockEnabled",true);
|
|
assertEquals(3,service.getPropertyRoomType().getPropertyList().size());
|
|
var result=service.getRoomCalendar(Map.of("Property","SIM_COTAI","RoomType","CR",
|
|
"StartDate","2026-09-01","EndDate","2026-09-03"));
|
|
assertTrue(result.isSuccess()); assertEquals(3,result.getData().size());
|
|
assertEquals("CALENDAR_MOCK_DATA",result.getMessage());
|
|
verifyNoInteractions(properties,rooms,esb);
|
|
var settings=new SettingService(); var dao=mock(SettingDao.class);
|
|
ReflectionTestUtils.setField(settings,"settingDao",dao);
|
|
ReflectionTestUtils.setField(settings,"calendarDataMockEnabled",true);
|
|
assertEquals("60",settings.getCalendarSetting().stream()
|
|
.filter(s->s.getKeys().equals("CALENDAR_VIEW_VISIBLE_DAYS")).findFirst().orElseThrow().getKeyValues());
|
|
verifyNoInteractions(dao);
|
|
ReflectionTestUtils.setField(settings,"calendarDataMockEnabled",false);
|
|
when(dao.findAll()).thenReturn(List.of());
|
|
assertTrue(settings.getCalendarSetting().isEmpty()); verify(dao).findAll();
|
|
}
|
|
}
|