package com.ruoyi.account.controller;
|
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
import com.ruoyi.account.api.model.TAppUserTag;
|
import com.ruoyi.account.service.TAppUserTagService;
|
import com.ruoyi.common.core.domain.R;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.anyCollection;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verifyNoInteractions;
|
import static org.mockito.Mockito.when;
|
|
class TAppUserTagControllerTest {
|
|
@Test
|
void listByUserIdsReturnsEmptyWithoutTouchingServiceForNullOrEmptyInput() {
|
TAppUserTagService service = mock(TAppUserTagService.class);
|
TAppUserTagController controller = new TAppUserTagController();
|
ReflectionTestUtils.setField(controller, "appUserTagService", service);
|
|
R<List<TAppUserTag>> nullResult = controller.listByUserIds(null);
|
R<List<TAppUserTag>> emptyResult = controller.listByUserIds(Collections.emptyList());
|
|
assertTrue(nullResult.getData().isEmpty());
|
assertTrue(emptyResult.getData().isEmpty());
|
verifyNoInteractions(service);
|
}
|
|
@Test
|
void listByUserIdsChunksLargeInputByFiveHundredAndMergesResults() {
|
TAppUserTagService service = mock(TAppUserTagService.class);
|
TAppUserTagController controller = new TAppUserTagController();
|
ReflectionTestUtils.setField(controller, "appUserTagService", service);
|
|
LambdaQueryChainWrapper<TAppUserTag> chain = mock(LambdaQueryChainWrapper.class);
|
when(service.lambdaQuery()).thenReturn(chain);
|
when(chain.in(any(), anyCollection())).thenReturn(chain);
|
|
List<Long> userIds = new ArrayList<>();
|
for (int i = 0; i < 1001; i++) {
|
userIds.add((long) i);
|
}
|
TAppUserTag first = new TAppUserTag();
|
first.setAppUserId(0L);
|
TAppUserTag second = new TAppUserTag();
|
second.setAppUserId(500L);
|
TAppUserTag third = new TAppUserTag();
|
third.setAppUserId(1000L);
|
when(chain.list()).thenReturn(
|
Collections.singletonList(first),
|
Collections.singletonList(second),
|
Collections.singletonList(third));
|
|
List<TAppUserTag> result = controller.listByUserIds(userIds).getData();
|
|
assertEquals(3, result.size());
|
verify(service, times(3)).lambdaQuery();
|
}
|
}
|