add calendar module
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user