package com.gzzm.lobster.context;

import com.gzzm.lobster.common.ResourceSourceType;
import com.gzzm.lobster.workspace.WorkspaceResource;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.*;

public class WorkspaceIndexPolicyTest {

    @Test
    public void smallListShowsAllWithSummary() {
        WorkspaceIndexPolicy p = new WorkspaceIndexPolicy();
        List<WorkspaceResource> list = build(3);
        String out = p.build(3, list);
        assertTrue(out.contains("Workspace"));
        for (int i = 0; i < 3; i++) assertTrue(out.contains("name-" + i));
    }

    @Test
    public void largeListIsTruncated() {
        WorkspaceIndexPolicy p = new WorkspaceIndexPolicy();
        List<WorkspaceResource> list = build(30);
        String out = p.build(30, list);
        assertTrue(out.contains("list_files"));
    }

    @Test
    public void emptyProducesPlaceholder() {
        WorkspaceIndexPolicy p = new WorkspaceIndexPolicy();
        assertTrue(p.build(0, new ArrayList<WorkspaceResource>()).contains("无资源"));
    }

    private List<WorkspaceResource> build(int n) {
        List<WorkspaceResource> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            WorkspaceResource r = new WorkspaceResource();
            r.setResourceId("res_" + i);
            r.setDisplayName("name-" + i);
            r.setSourceType(i % 2 == 0 ? ResourceSourceType.OA_FILE : ResourceSourceType.ARTIFACT);
            list.add(r);
        }
        return list;
    }
}
