feat: add job seeker notice settings API
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package com.ruoyi.cms.controller.app;
|
||||
|
||||
import com.ruoyi.cms.domain.dto.NoticeSettingRequest;
|
||||
import com.ruoyi.cms.domain.vo.NoticeSettingVO;
|
||||
import com.ruoyi.cms.service.IAppUserNoticeSettingService;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.AppUser;
|
||||
import com.ruoyi.common.core.domain.model.LoginSiteUser;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
class AppNoticeInfoControllerTest
|
||||
{
|
||||
@AfterEach
|
||||
void clearSecurityContext()
|
||||
{
|
||||
SecurityContextHolder.clearContext();
|
||||
}
|
||||
|
||||
@Test
|
||||
void jobSeekerCanReadOwnSettings() throws Exception
|
||||
{
|
||||
IAppUserNoticeSettingService service = mock(IAppUserNoticeSettingService.class);
|
||||
NoticeSettingVO expected = new NoticeSettingVO();
|
||||
expected.setJobUpdateEnabled(true);
|
||||
expected.setAppointmentReminderEnabled(true);
|
||||
expected.setSystemNotificationEnabled(false);
|
||||
expected.setInterviewNotificationEnabled(true);
|
||||
when(service.getSettings(12L)).thenReturn(expected);
|
||||
authenticateSiteUser(12L, "1");
|
||||
|
||||
AppNoticeInfoController controller = controllerWith(service);
|
||||
AjaxResult result = controller.getSettings();
|
||||
|
||||
assertEquals(200, result.get(AjaxResult.CODE_TAG));
|
||||
assertEquals(expected, result.get(AjaxResult.DATA_TAG));
|
||||
verify(service).getSettings(12L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void nonJobSeekerCannotSaveSettings() throws Exception
|
||||
{
|
||||
IAppUserNoticeSettingService service = mock(IAppUserNoticeSettingService.class);
|
||||
authenticateSiteUser(12L, "0");
|
||||
NoticeSettingRequest request = new NoticeSettingRequest();
|
||||
request.setJobUpdateEnabled(true);
|
||||
request.setAppointmentReminderEnabled(true);
|
||||
request.setSystemNotificationEnabled(true);
|
||||
request.setInterviewNotificationEnabled(true);
|
||||
|
||||
AppNoticeInfoController controller = controllerWith(service);
|
||||
AjaxResult result = controller.saveSettings(request);
|
||||
|
||||
assertEquals(403, result.get(AjaxResult.CODE_TAG));
|
||||
verify(service, never()).saveSettings(eq(12L), any(NoticeSettingRequest.class));
|
||||
}
|
||||
|
||||
private AppNoticeInfoController controllerWith(IAppUserNoticeSettingService service) throws Exception
|
||||
{
|
||||
AppNoticeInfoController controller = new AppNoticeInfoController();
|
||||
Field field = AppNoticeInfoController.class.getDeclaredField("appUserNoticeSettingService");
|
||||
field.setAccessible(true);
|
||||
field.set(controller, service);
|
||||
return controller;
|
||||
}
|
||||
|
||||
private void authenticateSiteUser(Long userId, String userType)
|
||||
{
|
||||
AppUser appUser = new AppUser();
|
||||
appUser.setIsCompanyUser(userType);
|
||||
LoginSiteUser loginUser = new LoginSiteUser(userId, appUser);
|
||||
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
|
||||
loginUser, null, Collections.emptyList());
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user