| new file mode 100644 |
| index 0000000..5ab4dbc |
| --- /dev/null |
| +++ b/ios/LChatCore/Tests/LChatCoreTests/PreviewTextTests.swift |
| @@ -0,0 +1,61 @@ |
| +import XCTest |
| +@testable import LChatCore |
| + |
| +// 🤖 Sidebar snippet (previewText) must mirror the web (previewText in |
| +// shell.js): a non-image attachment reads as a file chip, not "📷 Photo". |
| +final class PreviewTextTests: XCTestCase { |
| + private func att(_ name: String, _ type: String?) -> Attachment { |
| + Attachment(id: "b", name: name, type: type) |
| + } |
| + |
| + func testTextTakesPrecedence() { |
| + var p = MessagePayload() |
| + p.text = " hello world \n" |
| + p.attachments = [att("photo.jpg", "image/jpeg")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "hello world") |
| + } |
| + |
| + func testSingleImage() { |
| + var p = MessagePayload() |
| + p.attachments = [att("photo.jpg", "image/jpeg")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📷 Photo") |
| + } |
| + |
| + func testMultipleImages() { |
| + var p = MessagePayload() |
| + p.attachments = [att("a.jpg", "image/jpeg"), att("b.png", "image/png")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📷 2 photos") |
| + } |
| + |
| + func testSingleFileIsNotAPhoto() { |
| + var p = MessagePayload() |
| + p.attachments = [att("report.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📎 report.docx") |
| + } |
| + |
| + func testMultipleFiles() { |
| + var p = MessagePayload() |
| + p.attachments = [att("a.docx", "application/msword"), att("b.pdf", "application/pdf")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📎 2 files") |
| + } |
| + |
| + func testMixedImageAndFileFallsToFiles() { |
| + var p = MessagePayload() |
| + p.attachments = [att("a.jpg", "image/jpeg"), att("b.pdf", "application/pdf")] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📎 2 files") |
| + } |
| + |
| + // A typeless attachment (legacy) isn't an image → file chip with its name. |
| + func testUntypedAttachment() { |
| + var p = MessagePayload() |
| + p.attachments = [att("mystery.bin", nil)] |
| + XCTAssertEqual(previewText(kind: "dm", payload: p), "📎 mystery.bin") |
| + } |
| + |
| + func testGroupPrefix() { |
| + var p = MessagePayload() |
| + p.name = "Ada" |
| + p.attachments = [att("report.docx", "application/msword")] |
| + XCTAssertEqual(previewText(kind: "group", payload: p), "Ada: 📎 report.docx") |
| + } |
| +} |