package de.gecheckt.pdf.umbenenner.bootstrap;

import org.junit.jupiter.api.Test;

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

/**
 * Unit-Tests für {@link ApplicationVersionProvider}.
 * <p>
 * Im Testlauf ist kein gepacktes JAR mit Manifest vorhanden; der Test prüft deshalb
 * ausschließlich das Fallback-Verhalten und stellt sicher, dass die Methode niemals
 * {@code null} zurückgibt.
 */
class ApplicationVersionProviderTest {

    /**
     * Im Testlauf (kein Fat-JAR, kein Manifest-Eintrag) muss der Fallback-Wert
     * {@code "dev"} zurückgegeben werden.
     */
    @Test
    void resolveVersion_ohneGepacktesJar_gibtDevZurueck() {
        // Wenn kein MANIFEST.MF mit Implementation-Version vorhanden ist (IDE / Test),
        // wird der Fallback-Wert geliefert.
        String version = ApplicationVersionProvider.resolveVersion();
        assertThat(version).isEqualTo("dev");
    }

    /**
     * Das Ergebnis von {@link ApplicationVersionProvider#resolveVersion()} darf
     * niemals {@code null} sein – weder im IDE-Betrieb noch im gepackten Betrieb.
     */
    @Test
    void resolveVersion_gibtNiemalsNull() {
        assertThat(ApplicationVersionProvider.resolveVersion()).isNotNull();
    }
}
