Add client event for status changes. Closes #668
This commit is contained in:
parent
2e492ee9bc
commit
1eb39d650a
@ -10,16 +10,6 @@ import XCTest
|
|||||||
@testable import SocketIO
|
@testable import SocketIO
|
||||||
|
|
||||||
class SocketSideEffectTest: XCTestCase {
|
class SocketSideEffectTest: XCTestCase {
|
||||||
let data = "test".data(using: String.Encoding.utf8)!
|
|
||||||
let data2 = "test2".data(using: String.Encoding.utf8)!
|
|
||||||
private var socket: SocketIOClient!
|
|
||||||
|
|
||||||
override func setUp() {
|
|
||||||
super.setUp()
|
|
||||||
socket = SocketIOClient(socketURL: URL(string: "http://localhost/")!)
|
|
||||||
socket.setTestable()
|
|
||||||
}
|
|
||||||
|
|
||||||
func testInitialCurrentAck() {
|
func testInitialCurrentAck() {
|
||||||
XCTAssertEqual(socket.currentAck, -1)
|
XCTAssertEqual(socket.currentAck, -1)
|
||||||
}
|
}
|
||||||
@ -165,4 +155,35 @@ class SocketSideEffectTest: XCTestCase {
|
|||||||
XCTAssert(manager["test"] == nil, "socket not removed")
|
XCTAssert(manager["test"] == nil, "socket not removed")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testChangingStatusCallsStatusChangeHandler() {
|
||||||
|
let expect = expectation(description: "The client should announce when the status changes")
|
||||||
|
let statusChange = SocketIOClientStatus.connecting
|
||||||
|
|
||||||
|
socket.on("statusChange") {data, ack in
|
||||||
|
guard let status = data[0] as? SocketIOClientStatus else {
|
||||||
|
XCTFail("Status should be one of the defined statuses")
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
XCTAssertEqual(status, statusChange, "The status changed should be the one set")
|
||||||
|
|
||||||
|
expect.fulfill()
|
||||||
|
}
|
||||||
|
|
||||||
|
socket.setTestStatus(statusChange)
|
||||||
|
|
||||||
|
waitForExpectations(timeout: 0.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
let data = "test".data(using: String.Encoding.utf8)!
|
||||||
|
let data2 = "test2".data(using: String.Encoding.utf8)!
|
||||||
|
private var socket: SocketIOClient!
|
||||||
|
|
||||||
|
override func setUp() {
|
||||||
|
super.setUp()
|
||||||
|
socket = SocketIOClient(socketURL: URL(string: "http://localhost/")!)
|
||||||
|
socket.setTestable()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,6 +47,8 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
|
|||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleEvent("statusChange", data: [status], isInternalMessage: true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -551,6 +553,10 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
|
|||||||
status = .connected
|
status = .connected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setTestStatus(_ status: SocketIOClientStatus) {
|
||||||
|
self.status = status
|
||||||
|
}
|
||||||
|
|
||||||
func setTestEngine(_ engine: SocketEngineSpec?) {
|
func setTestEngine(_ engine: SocketEngineSpec?) {
|
||||||
self.engine = engine
|
self.engine = engine
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user