mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-08-29 07:27:16 +00:00
test: cover ThreadMessageSearch filtering rules
Exercise empty queries, case-insensitive body and sender matching, and blank-body exclusion.
This commit is contained in:
parent
fa4c983b6f
commit
4565956e74
75
bitchatTests/ThreadMessageSearchTests.swift
Normal file
75
bitchatTests/ThreadMessageSearchTests.swift
Normal file
@ -0,0 +1,75 @@
|
||||
import BitFoundation
|
||||
import Foundation
|
||||
import Testing
|
||||
@testable import bitchat
|
||||
|
||||
struct ThreadMessageSearchTests {
|
||||
private func message(
|
||||
id: String,
|
||||
sender: String,
|
||||
content: String
|
||||
) -> BitchatMessage {
|
||||
BitchatMessage(
|
||||
id: id,
|
||||
sender: sender,
|
||||
content: content,
|
||||
timestamp: Date(),
|
||||
isRelay: false,
|
||||
senderPeerID: PeerID(str: "0011223344556677")
|
||||
)
|
||||
}
|
||||
|
||||
@Test("empty query returns the original timeline")
|
||||
func emptyQueryReturnsAll() {
|
||||
let messages = [
|
||||
message(id: "1", sender: "alice", content: "hello mesh"),
|
||||
message(id: "2", sender: "bob", content: "wave back")
|
||||
]
|
||||
|
||||
let result = ThreadMessageSearch.matchingMessages(in: messages, query: " ")
|
||||
#expect(result == messages)
|
||||
}
|
||||
|
||||
@Test("matches message body case-insensitively")
|
||||
func matchesContent() {
|
||||
let messages = [
|
||||
message(id: "1", sender: "alice", content: "Meet at NOON"),
|
||||
message(id: "2", sender: "bob", content: "see you later")
|
||||
]
|
||||
|
||||
let result = ThreadMessageSearch.matchingMessages(in: messages, query: "noon")
|
||||
#expect(result.map(\.id) == ["1"])
|
||||
}
|
||||
|
||||
@Test("matches sender nickname")
|
||||
func matchesSender() {
|
||||
let messages = [
|
||||
message(id: "1", sender: "alice", content: "ping"),
|
||||
message(id: "2", sender: "mallory", content: "pong")
|
||||
]
|
||||
|
||||
let result = ThreadMessageSearch.matchingMessages(in: messages, query: "MALL")
|
||||
#expect(result.map(\.id) == ["2"])
|
||||
}
|
||||
|
||||
@Test("skips whitespace-only message bodies")
|
||||
func skipsBlankBodies() {
|
||||
let messages = [
|
||||
message(id: "1", sender: "alice", content: " "),
|
||||
message(id: "2", sender: "bob", content: "visible")
|
||||
]
|
||||
|
||||
let result = ThreadMessageSearch.matchingMessages(in: messages, query: "alice")
|
||||
#expect(result.isEmpty)
|
||||
}
|
||||
|
||||
@Test("returns empty when nothing matches")
|
||||
func noMatches() {
|
||||
let messages = [
|
||||
message(id: "1", sender: "alice", content: "hello")
|
||||
]
|
||||
|
||||
let result = ThreadMessageSearch.matchingMessages(in: messages, query: "missing")
|
||||
#expect(result.isEmpty)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user