File size: 1,485 Bytes
4977db2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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)
    }
}