| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- //
- // SearchCriteriaInterpretationTests.swift
- // indeed_ai_job_searchTests
- //
- import XCTest
- @testable import indeed_ai_job_search
- final class SearchCriteriaInterpretationTests: XCTestCase {
- func testDecodesStructuredCriteriaJSON() throws {
- let json = """
- {
- "jobTitle": "iOS Developer",
- "keywords": "SwiftUI",
- "exactPhrase": false,
- "excludedKeywords": "Flutter",
- "country": "Pakistan",
- "city": "Lahore",
- "remoteTypes": ["remote", "hybrid"],
- "employmentTypes": ["fullTime"],
- "experienceLevels": ["senior"],
- "salaryFloor": 2000000,
- "dateFreshnessDays": 7,
- "confidenceNote": "Clear remote senior iOS intent."
- }
- """
- let dto = try JSONDecoder().decode(
- SearchCriteriaInterpretationDTO.self,
- from: Data(json.utf8)
- )
- let criteria = dto.toSearchCriteria()
- XCTAssertEqual(criteria.jobTitle, "iOS Developer")
- XCTAssertEqual(criteria.keywords, "SwiftUI")
- XCTAssertEqual(criteria.excludedKeywords, "Flutter")
- XCTAssertEqual(criteria.country, "Pakistan")
- XCTAssertEqual(criteria.city, "Lahore")
- XCTAssertEqual(criteria.remoteTypes, Set([.remote, .hybrid]))
- XCTAssertEqual(criteria.employmentTypes, Set([.fullTime]))
- XCTAssertEqual(criteria.experienceLevels, Set([.senior]))
- XCTAssertEqual(criteria.salaryFloor, 2_000_000)
- XCTAssertEqual(criteria.dateFreshnessDays, 7)
- XCTAssertEqual(dto.confidenceNote, "Clear remote senior iOS intent.")
- }
- func testMapsAlternateRemoteSpelling() {
- let dto = SearchCriteriaInterpretationDTO(
- remoteTypes: ["on-site", "Remote"]
- )
- let criteria = dto.toSearchCriteria()
- XCTAssertEqual(criteria.remoteTypes, Set([.onsite, .remote]))
- }
- func testObfuscationRoundTrip() {
- let sample = "sk-proj-test-key-not-real"
- let obfuscated = SecretsProvider.obfuscateForConfig(sample)
- let restored = SecretsProvider.deobfuscate(obfuscated)
- XCTAssertEqual(restored, sample)
- }
- }
|