Separate bonjour concerns in PrinterRequestManager into BonjourBrowser, add unit test for BonjourBrowser

This commit is contained in:
Madeline
2023-03-24 14:42:17 -04:00
parent 0a8670ed71
commit d21fd9d331
9 changed files with 214 additions and 137 deletions

View File

@@ -0,0 +1,54 @@
//
// BonjourBrowserTests.swift
// SoyuzTests
//
// Created by maddiefuzz on 3/24/23.
//
import XCTest
import Network
import Combine
@testable import Soyuz
class SoyuzBonjourBrowserTests: XCTestCase {
var bonjourBrowser: BonjourBrowser?
var bonjourListener: NWListener?
var cancellable: AnyCancellable?
override func setUp() {
do {
bonjourListener = try NWListener(using: .tcp, on: .http)
bonjourListener!.service = NWListener.Service(name: "Test", type: "_xctest._tcp")
bonjourListener!.newConnectionHandler = { newConnection in
return
}
} catch {
print("Error: \(error)")
}
bonjourBrowser = BonjourBrowser(browser: NWBrowser(for: .bonjour(type: "_xctest._tcp", domain: "local."), using: .tcp))
}
func testBonjourDiscoveredItemsNotNil() {
guard let browser = bonjourBrowser else {
XCTAssert(false)
return
}
let expectation = XCTestExpectation(description: "BonjourBrowser publishes network services")
cancellable = browser.$NDEngineResults
.dropFirst()
.sink(receiveValue: { newValue in
if newValue.count > 0 {
expectation.fulfill()
}
})
bonjourListener!.start(queue: DispatchQueue.main)
wait(for: [expectation], timeout: 2)
XCTAssert(!browser.NDEngineResults.isEmpty)
XCTAssertEqual(browser.NDEngineResults.count, 1)
}
}

View File

@@ -14,20 +14,20 @@ class PrinterRequestManagerTests: XCTestCase {
var testBonjourListener: NWListener?
override func setUp() {
printerRequestManager = PrinterRequestManager(browser: NWBrowser(for: .bonjour(type: "_http._tcp", domain: "local."), using: .tcp))
// Set up test bonjour server
//let parameters = NWParameters(tls: .none, tcp: NWListener.)
do {
testBonjourListener = try NWListener(using: .tcp, on: .http)
testBonjourListener!.start(queue: DispatchQueue.main)
} catch {
print("Error: \(error)")
}
}
func testBonjourDiscoveredItemsNotNil() {
XCTAssertNotNil(printerRequestManager?.nwBrowserDiscoveredItems)
}
// override func setUp() {
// printerRequestManager = PrinterRequestManager(browser: NWBrowser(for: .bonjour(type: "_http._tcp", domain: "local."), using: .tcp))
//
// // Set up test bonjour server
// //let parameters = NWParameters(tls: .none, tcp: NWListener.)
// do {
// testBonjourListener = try NWListener(using: .tcp, on: .http)
// testBonjourListener!.start(queue: DispatchQueue.main)
// } catch {
// print("Error: \(error)")
// }
// }
//
// func testBonjourDiscoveredItemsNotNil() {
// XCTAssertNotNil(printerRequestManager?.nwBrowserDiscoveredItems)
// }
}