//package com.zsc.edu.gateway.service;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.zsc.edu.gateway.domain.BulletinBuilder;
//import com.zsc.edu.gateway.exception.ConstraintException;
//import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
//import com.zsc.edu.gateway.modules.notice.dto.BulletinDto;
//import com.zsc.edu.gateway.modules.notice.entity.Bulletin;
//import com.zsc.edu.gateway.modules.notice.repo.BulletinRepository;
//import com.zsc.edu.gateway.modules.notice.service.BulletinService;
//import jakarta.annotation.Resource;
//import org.junit.jupiter.api.AfterEach;
//import org.junit.jupiter.api.BeforeEach;
//import org.junit.jupiter.api.Test;
//
//import java.util.List;
//
//import static org.junit.jupiter.api.Assertions.*;
//
//public class BulletinServiceTest {
//    @Resource
//    private BulletinService service;
//    @Resource
//    private BulletinRepository repo;
//
//    Bulletin bulletin1;
//    Bulletin bulletin2;
//
//    @BeforeEach
//    void setUp() {
//        bulletin1 = BulletinBuilder.bBulletin().title("测试1").build();
//        repo.insert(bulletin1);
//        bulletin2 = BulletinBuilder.bBulletin().title("测试2").build();
//        repo.insert(bulletin2);
//    }
//
//    @Test
//    void list() {
//        LambdaQueryWrapper<Bulletin> queryWrapper = new LambdaQueryWrapper<>();
//        assertEquals(2, service.list(queryWrapper.like(Bulletin::getTitle, "测试")).size());
//        assertEquals(1, service.list(queryWrapper.eq(Bulletin::getTitle, bulletin1.getTitle())).size());
//        assertEquals(2, service.list().size());
//    }
//
//    @Test
//    void createBulletin() {
//        BulletinDto dto = new BulletinDto();
//        dto.setTitle("测试");
//        dto.setTop(true);
//        dto.setContent("测试测试");
//        dto.setRemark("测试公告增加");
//        BulletinDto dto2 = new BulletinDto();
//        dto2.setTitle(bulletin2.getTitle());
////        dto2.setTop(bulletin2.isTop());
//        dto2.setRemark(bulletin2.getRemark());
//        UserDetailsImpl userDetails = new UserDetailsImpl();
//        userDetails.setUsername("admin");
//        Bulletin bulletin=service.create(userDetails,dto);
//        assertNotNull(bulletin.getId());
//        List<Bulletin> list = service.list();
//        assertEquals(3, list.size());
//        // 不能创建其他已存在标题公告
//        assertThrows(ConstraintException.class, () -> service.create(userDetails,dto2));
//    }
//
//    @Test
//    void updateBulletin() {
//        BulletinDto dto = new BulletinDto();
//        dto.setTitle("测试3");
//        dto.setContent("测试测");
//        dto.setTop(true);
//        dto.setRemark("测试公告更新");
//        UserDetailsImpl userDetails = new UserDetailsImpl();
//        userDetails.setUsername("admin");
//        assertTrue(service.update(userDetails,dto, bulletin2.id));
//        Bulletin bulletin = service.getOne(new LambdaQueryWrapper<Bulletin>().eq(Bulletin::getTitle, dto.getTitle()));
//        assertEquals(bulletin.getTitle(), dto.getTitle());
//        assertEquals(bulletin.getId(), bulletin2.id);
//        // 不能改为其他已存在的同名同代码部门
//        assertThrows(ConstraintException.class,
//                () -> service.update(userDetails,new BulletinDto(bulletin1.getTitle(),true,null,null), bulletin2.id));
//    }
//
//    @AfterEach
//    void tearDown() {
//        repo.delete(new QueryWrapper<>());
//    }
//}
