//
//  ValetRcTest.swift
//  Unit Tests
//
//  Created by Nico Verbruggen on 20/01/2023.
//  Copyright © 2025 Nico Verbruggen. All rights reserved.
//

import Testing
import Foundation

struct ValetRcTest {
    // MARK: - Test Files
    static var validPath: URL {
        TestBundle.url(forResource: "valetrc", withExtension: "valid")!
    }

    static var brokenPath: URL {
        TestBundle.url(forResource: "valetrc", withExtension: "broken")!
    }

    // MARK: - Tests
    @Test func can_extract_fields_from_valet_rc_file() throws {
        let fakeFile = RCFile.fromPath("/Users/fake/file.rc")
        #expect(nil == fakeFile)

        // Can parse the file
        let validFile = RCFile.fromPath(ValetRcTest.validPath.path)
        #expect(nil != validFile)

        let fields = validFile!.fields

        // Correctly parses and trims (and omits double quotes) per line
        #expect(fields["PHP"] == "php@8.2")
        #expect(fields["OTHER"] == "thing")
        #expect(fields["PHPMON_WATCH"] == "true")
        #expect(fields["SYNTAX"] == "variable")

        // Ignores entries prefixed with #
        #expect(!fields.keys.contains("#PHP"))

        // Ignores invalid lines
        #expect(!fields.keys.contains("OOF"))
    }
}
