1
0
mirror of synced 2025-12-27 21:48:01 +08:00

🎨 #3458 【企业微信】家校沟通获取部门列表接口优化,如果部门id为空则获取全量组织架构

This commit is contained in:
giveup
2025-01-21 18:41:11 +08:00
committed by GitHub
parent 704fba4d85
commit 8e5ee97378
4 changed files with 143 additions and 3 deletions

View File

@@ -0,0 +1,139 @@
package me.chanjar.weixin.cp.api.impl;
import com.google.gson.Gson;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.school.user.WxCpDepartmentList;
import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.School.DEPARTMENT_LIST;
import static org.testng.Assert.assertEquals;
public class WxCpSchoolUserServiceImplTest {
String allDeptListJson = "{\n" +
"\t\"errcode\": 0,\n" +
"\t\"errmsg\": \"ok\",\n" +
"\t\"departments\": [\n" +
"\t\t{\n" +
"\t\t\t\"name\": \"一年级\",\n" +
"\t\t\t\"parentid\": 1,\n" +
"\t\t\t\"id\": 2,\n" +
"\t\t\t\"type\":2,\n" +
"\t\t\t\"register_year\":2018,\n" +
"\t\t\t\"standard_grade\":1,\n" +
"\t\t\t\"order\":1,\n" +
"\t\t\t\"department_admins\": [\n" +
"\t\t\t\t{\n" +
"\t\t\t\t\t\"userid\": \"zhangsan\",\n" +
"\t\t\t\t\t\"type\": 1\n" +
"\t\t\t\t},\n" +
"\t\t\t\t{\n" +
"\t\t\t\t\t\"userid\": \"lisi\",\n" +
"\t\t\t\t\t\"type\": 2\n" +
"\t\t\t\t}\n" +
"\t\t\t],\n" +
" \"is_graduated\": 0\n" +
"\t\t},\n" +
"\t\t{\n" +
"\t\t\t\"name\": \"一年级一班\",\n" +
"\t\t\t\"parentid\": 1,\n" +
"\t\t\t\"id\": 3,\n" +
"\t\t\t\"type\": 1,\n" +
"\t\t\t\"department_admins\": [\n" +
"\t\t\t\t{\n" +
"\t\t\t\t\t\"userid\": \"zhangsan\",\n" +
"\t\t\t\t\t\"type\": 3,\n" +
"\t\t\t\t\t\"subject\":\"语文\"\n" +
"\t\t\t\t},\n" +
"\t\t\t\t{\n" +
"\t\t\t\t\t\"userid\": \"lisi\",\n" +
"\t\t\t\t\t\"type\": 4,\n" +
"\t\t\t\t\t\"subject\":\"数学\"\n" +
"\t\t\t\t}\n" +
"\t\t\t],\n" +
"\t\t\t\"open_group_chat\": 1,\n" +
" \"group_chat_id\": \"group_chat_id\"\n" +
"\t\t}\n" +
"\t]\n" +
"}\n";
String deptId3Json = "{\n" +
" \"errcode\": 0,\n" +
" \"errmsg\": \"ok\",\n" +
" \"departments\": [\n" +
" {\n" +
" \"name\": \"一年级一班\",\n" +
" \"parentid\": 1,\n" +
" \"id\": 3,\n" +
" \"type\": 1,\n" +
" \"department_admins\": [\n" +
" {\n" +
" \"userid\": \"zhangsan\",\n" +
" \"type\": 3,\n" +
" \"subject\":\"语文\"\n" +
" },\n" +
" {\n" +
" \"userid\": \"lisi\",\n" +
" \"type\": 4,\n" +
" \"subject\":\"数学\"\n" +
" }\n" +
" ],\n" +
" \"open_group_chat\": 1,\n" +
" \"group_chat_id\": \"group_chat_id\"\n" +
" }\n" +
" ]\n" +
"}";
String deptId2Json = "{\n" +
" \"errcode\": 0,\n" +
" \"errmsg\": \"ok\",\n" +
" \"departments\": []\n" +
"}\n";
@Test
public void testListDepartmentWhenIdIsNull() throws WxErrorException {
WxCpService mockCpService = Mockito.mock(WxCpService.class);
WxCpSchoolUserServiceImpl wxCpSchoolUserService = new WxCpSchoolUserServiceImpl(mockCpService);
Mockito.when(mockCpService.getWxCpConfigStorage()).thenReturn(new WxCpDefaultConfigImpl());
Mockito.when(mockCpService.get(mockCpService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_LIST), null)).thenReturn(allDeptListJson);
WxCpDepartmentList wxCpDepartmentList = wxCpSchoolUserService.listDepartment(null);
//WxCpDepartmentList没有重写Equals和Hashcode,不能直接比较
Gson gson = new Gson();
assertEquals(gson.toJson(wxCpDepartmentList), gson.toJson(gson.fromJson(allDeptListJson, WxCpDepartmentList.class)), "should be equal");
}
@Test
public void testListDepartmentWhenIdIs2() throws WxErrorException {
WxCpService mockCpService = Mockito.mock(WxCpService.class);
WxCpSchoolUserServiceImpl wxCpSchoolUserService = new WxCpSchoolUserServiceImpl(mockCpService);
Mockito.when(mockCpService.getWxCpConfigStorage()).thenReturn(new WxCpDefaultConfigImpl());
Gson gson = new Gson();
int deptId = 2;
Mockito.when(mockCpService.get(String.format("%s?id=%s", mockCpService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_LIST), deptId), null)).thenReturn(deptId2Json);
//WxCpDepartmentList没有重写Equals和Hashcode,不能直接比较
assertEquals(gson.toJson(wxCpSchoolUserService.listDepartment(deptId)), gson.toJson(gson.fromJson(deptId2Json, WxCpDepartmentList.class)), "should be equal");
}
@Test
public void testListDepartmentWhenIdIs3() throws WxErrorException {
WxCpService mockCpService = Mockito.mock(WxCpService.class);
WxCpSchoolUserServiceImpl wxCpSchoolUserService = new WxCpSchoolUserServiceImpl(mockCpService);
Mockito.when(mockCpService.getWxCpConfigStorage()).thenReturn(new WxCpDefaultConfigImpl());
Gson gson = new Gson();
int deptId = 3;
Mockito.when(mockCpService.get(String.format("%s?id=%s", mockCpService.getWxCpConfigStorage().getApiUrl(DEPARTMENT_LIST), deptId), null)).thenReturn(deptId3Json);
//WxCpDepartmentList没有重写Equals和Hashcode,不能直接比较
assertEquals(gson.toJson(wxCpSchoolUserService.listDepartment(deptId)), gson.toJson(gson.fromJson(deptId3Json, WxCpDepartmentList.class)), "should be equal");
}
}