mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 18:25:19 +00:00
Add ChatViewModel testability and unit tests
- Add testable ChatViewModel initializer accepting Transport dependency - Create MockTransport implementing full Transport protocol for testing - Add 21 unit tests covering: - Initialization (delegate, services, nickname) - Message sending (basic, empty, mentions, commands) - Message receiving (delegate calls, public messages) - Peer connections (connect, disconnect, isPeerConnected) - Deduplication service integration - Private chat routing - Bluetooth state handling - Panic clear functionality - Guard NotificationService methods against test environment crashes - Make deduplicationService internal for test access All 303 tests pass.
This commit is contained in:
@@ -16,10 +16,18 @@ import AppKit
|
||||
|
||||
final class NotificationService {
|
||||
static let shared = NotificationService()
|
||||
|
||||
|
||||
/// Returns true if running in test environment (XCTest, Swift Testing, or SPM tests)
|
||||
private var isRunningTests: Bool {
|
||||
NSClassFromString("XCTestCase") != nil ||
|
||||
ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] != nil ||
|
||||
Bundle.main.bundleIdentifier == nil
|
||||
}
|
||||
|
||||
private init() {}
|
||||
|
||||
|
||||
func requestAuthorization() {
|
||||
guard !isRunningTests else { return }
|
||||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
|
||||
if granted {
|
||||
// Permission granted
|
||||
@@ -36,6 +44,7 @@ final class NotificationService {
|
||||
userInfo: [String: Any]? = nil,
|
||||
interruptionLevel: UNNotificationInterruptionLevel = .active
|
||||
) {
|
||||
guard !isRunningTests else { return }
|
||||
let content = UNMutableNotificationContent()
|
||||
content.title = title
|
||||
content.body = body
|
||||
|
||||
Reference in New Issue
Block a user