// This file is auto-generated by alef — DO NOT EDIT.
// alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75
// To regenerate: alef generate
// To verify freshness: alef verify --exit-code
// Issues & docs: https://github.com/kreuzberg-dev/alef
package dev.kreuzberg.e2e

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
import kotlin.test.assertFalse
import kotlin.test.assertFailsWith
import kotlinx.coroutines.runBlocking
import dev.kreuzberg.Kreuzberg
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import dev.kreuzberg.ExtractionConfig

/** E2e tests for category: code. */
class CodeTest {

    companion object {
        private val MAPPER = ObjectMapper().registerModule(Jdk8Module()).registerKotlinModule().setPropertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategies.SNAKE_CASE)
    }
    @Test
    fun testCodeShebangDetection() = runBlocking {
        // Test language detection from shebang line via bytes input
        val result = Kreuzberg.extractFileSync("code/script.sh", "text/x-source-code", ExtractionConfig())
        assertEquals("text/x-source-code", result.mimeType.trim())
        assertTrue(result.content.length >= 10, "expected length >= 10")
        assertTrue(result.content.contains("build"), "expected to contain: " + "build")
        assertTrue(result.content.contains("clean"), "expected to contain: " + "clean")
    }

}
