package com.graphtest;

import com.graphtest.model.NodeStatus;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;

import static org.assertj.core.api.Assertions.*;

@DisplayName("Case 1: File rỗng hoàn toàn")
class Case1_EmptyFileTest {

    private CodeGraph graph;

    @BeforeEach
    void setUp() throws Exception {
        URL resource = getClass().getClassLoader().getResource("fixtures/case1_empty");
        Path dir = Paths.get(resource.toURI());
        graph = new GraphBuilder().buildFromDirectory(dir);
    }

    @Test
    @DisplayName("Node phải được tạo cho file rỗng")
    void nodeShouldExist() {
        assertThat(graph.hasNode("EmptyFile")).isTrue();
    }

    @Test
    @DisplayName("Node phải có status EMPTY")
    void nodeShouldHaveEmptyStatus() {
        assertThat(graph.getNode("EmptyFile").getStatus()).isEqualTo(NodeStatus.EMPTY);
    }

    @Test
    @DisplayName("File rỗng không có outgoing edges")
    void shouldHaveNoOutgoingEdges() {
        assertThat(graph.getOutgoingEdges("EmptyFile")).isEmpty();
    }

    @Test
    @DisplayName("File rỗng không gây ra build error")
    void shouldNotCauseBuildError() {
        assertThat(graph.getBuildErrors()).isEmpty();
    }
}
