Extract BLE and chat architecture policies (#1324)

Co-authored-by: jack <jackjackbits@users.noreply.github.com>
This commit is contained in:
jack
2026-06-02 09:01:59 +02:00
committed by GitHub
co-authored by jack
parent 193cfdc06a
commit 3eb4f2bd72
46 changed files with 3286 additions and 786 deletions
@@ -0,0 +1,115 @@
import BitFoundation
import Foundation
import Testing
@testable import bitchat
struct ChatUnreadStateResolverTests {
@Test
func directUnreadPeerReturnsTrue() {
let peerID = PeerID(str: "peer-a")
let context = ChatUnreadPeerContext(
peerID: peerID,
noiseKeyPeerID: nil,
nostrPeerID: nil,
nickname: nil
)
#expect(ChatUnreadStateResolver.hasUnreadMessages(
for: context,
unreadPrivateMessages: [peerID],
privateChats: [:]
))
}
@Test
func stableNoiseKeyUnreadReturnsTrue() {
let peerID = PeerID(str: "ephemeral")
let stableID = PeerID(str: "stable")
let context = ChatUnreadPeerContext(
peerID: peerID,
noiseKeyPeerID: stableID,
nostrPeerID: nil,
nickname: nil
)
#expect(ChatUnreadStateResolver.hasUnreadMessages(
for: context,
unreadPrivateMessages: [stableID],
privateChats: [:]
))
}
@Test
func nostrConversationUnreadReturnsTrue() {
let peerID = PeerID(str: "ephemeral")
let nostrID = PeerID(nostr_: "abcdef")
let context = ChatUnreadPeerContext(
peerID: peerID,
noiseKeyPeerID: nil,
nostrPeerID: nostrID,
nickname: nil
)
#expect(ChatUnreadStateResolver.hasUnreadMessages(
for: context,
unreadPrivateMessages: [nostrID],
privateChats: [:]
))
}
@Test
func temporaryGeoDMWithMatchingNicknameReturnsTrue() {
let peerID = PeerID(str: "mesh-peer")
let geoDM = PeerID(nostr_: "0123456789abcdef")
let context = ChatUnreadPeerContext(
peerID: peerID,
noiseKeyPeerID: nil,
nostrPeerID: nil,
nickname: "Alice"
)
let message = BitchatMessage(
sender: "alice",
content: "hi",
timestamp: Date(timeIntervalSince1970: 1),
isRelay: false,
originalSender: nil,
isPrivate: true,
recipientNickname: "me",
senderPeerID: geoDM
)
#expect(ChatUnreadStateResolver.hasUnreadMessages(
for: context,
unreadPrivateMessages: [geoDM],
privateChats: [geoDM: [message]]
))
}
@Test
func unmatchedUnreadStateReturnsFalse() {
let peerID = PeerID(str: "mesh-peer")
let geoDM = PeerID(nostr_: "0123456789abcdef")
let context = ChatUnreadPeerContext(
peerID: peerID,
noiseKeyPeerID: nil,
nostrPeerID: nil,
nickname: "Alice"
)
let message = BitchatMessage(
sender: "bob",
content: "hi",
timestamp: Date(timeIntervalSince1970: 1),
isRelay: false,
originalSender: nil,
isPrivate: true,
recipientNickname: "me",
senderPeerID: geoDM
)
#expect(!ChatUnreadStateResolver.hasUnreadMessages(
for: context,
unreadPrivateMessages: [geoDM],
privateChats: [geoDM: [message]]
))
}
}