package com.cf.imes.module.system.api.organ;

import com.cf.imes.module.system.api.organ.dto.OrgStatisticsIsLapseRespDTO;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

/**
 * {@link OrgStatisticsIsLapseRespDTO} 的单元测试
 */
public class OrgStatisticsIsLapseRespDTOTest {
    private OrgStatisticsIsLapseRespDTO dto(String date, int status) {
        return OrgStatisticsIsLapseRespDTO.builder()
                .date(date)
                .orgStatus(status)
                .build();
    }

    @Test
    void testCompareDifferentYear() {
        // 年份大 > 小
        assertTrue(dto("2023-01-02", 1).compareTo(dto("2022-01-02", 1)) > 0);
    }

    @Test
    void testCompareDifferentMonth() {
        // 月份大 > 小
        assertTrue(dto("2023-05-01", 1).compareTo(dto("2023-03-01", 1)) > 0);
    }

    @Test
    void testCompareDifferentWeek() {
        // 周 大 > 小
        assertTrue(dto("2023-05-02", 1).compareTo(dto("2023-05-01", 1)) > 0);
        // 相同周 状态小 < 大
        assertTrue(dto("2023-05-02", 1).compareTo(dto("2023-05-02", 2)) < 0);
    }

    @Test
    void testBothWithoutWeek() {
        // 都不带周 状态大 > 小
        assertTrue(dto("2023-05", 2).compareTo(dto("2023-05", 1)) > 0);
    }

    @Test
    void testOneWithoutMonth() {
        // 前不带月， 状态小 < 大
        assertTrue(dto("2023", 1).compareTo(dto("2023-05", 2)) < 0);
        // 后不带月， 状态大 > 小
        assertTrue(dto("2023-05", 2).compareTo(dto("2023", 1)) > 0);
    }

    @Test
    void testOneWithoutWeek() {
        // 前不带周， 状态小 < 大
        assertTrue(dto("2023-05", 1).compareTo(dto("2023-05-02", 2)) < 0);
        // 后不带周， 状态大 > 小
        assertTrue(dto("2023-05-02", 2).compareTo(dto("2023-05", 1)) > 0);
    }
}