Files
Luma/Tests/ChatMessageDeliveryTests.swift
wt 16c9fab509
iOS CI / Build and Test SwiftUI App (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build Unsigned iOS IPA (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build macOS ZIP (push) Canceled after 0s
added .read state
2026-09-14 22:22:15 +07:00

39 lines
1.6 KiB
Swift

import XCTest
@testable import Luma
final class ChatMessageDeliveryTests: XCTestCase {
func testMergeKeepsTheStrongestState() {
XCTAssertEqual(ChatMessage.Delivery.sent.merged(with: .sending), .sent)
XCTAssertEqual(ChatMessage.Delivery.sending.merged(with: .sent), .sent)
XCTAssertEqual(ChatMessage.Delivery.sent.merged(with: .delivered), .delivered)
XCTAssertEqual(ChatMessage.Delivery.delivered.merged(with: .read), .read)
XCTAssertEqual(ChatMessage.Delivery.read.merged(with: .sent), .read)
XCTAssertEqual(ChatMessage.Delivery.read.merged(with: .delivered), .read)
}
func testMAMReplayNeverDowngradesReadState() {
// The archived copy of an outgoing message carries `.sent`; the local
// copy that received the peer's displayed marker must stay `.read`.
XCTAssertEqual(ChatMessage.Delivery.read.merged(with: .sent), .read)
XCTAssertEqual(ChatMessage.Delivery.delivered.merged(with: .sent), .delivered)
}
func testFailedIsSticky() {
XCTAssertEqual(ChatMessage.Delivery.failed.merged(with: .sent), .failed)
XCTAssertEqual(ChatMessage.Delivery.sent.merged(with: .failed), .failed)
}
func testReadMessagesRemainEditableAndRetractable() {
let message = ChatMessage(
conversationID: "bob@example.org",
senderJID: "alice@example.org",
body: "привет",
direction: .outgoing,
delivery: .read,
security: .plaintext
)
XCTAssertTrue(message.canBeEdited)
XCTAssertTrue(message.canBeRetracted)
}
}