import XCTest @testable import PromptGarageCore final class PromptModelTests: XCTestCase { func testPromptDerivesTagsAndSourceFamilyWithoutChangingStoredValues() { let prompt = PromptRecord( id: 42, title: "Test", content: "Content", source: "claude-raw:abcdef123456", isStarred: true, tags: "claude, project-x,swift", model: "opus", rating: 4, useCount: 3, createdAt: "2026-07-15 10:00:00", updatedAt: "2026-07-15 11:00:00", promptedAt: nil ) XCTAssertEqual(prompt.sourceFamily, "claude-raw") XCTAssertEqual(prompt.tagList, ["claude", "project-x", "swift"]) XCTAssertEqual(prompt.source, "claude-raw:abcdef123456") XCTAssertNil(prompt.promptedAt) } func testDraftValidationRequiresTitleContentAndValidRating() { XCTAssertNotNil(PromptDraft(title: "", content: "valid").validationMessage) XCTAssertNotNil(PromptDraft(title: "valid", content: "").validationMessage) XCTAssertNotNil(PromptDraft(title: "valid", content: "valid", rating: 6).validationMessage) XCTAssertNil(PromptDraft(title: "valid", content: "valid", rating: 5).validationMessage) } func testPromptQueryClampsPagination() { let query = PromptQuery(limit: 5_000, offset: -10) XCTAssertEqual(query.limit, 500) XCTAssertEqual(query.offset, 0) } }