Add client event for status changes. Closes #668

This commit is contained in:
Erik 2017-05-07 10:52:17 -04:00
parent 2e492ee9bc
commit 1eb39d650a
No known key found for this signature in database
GPG Key ID: 4930B7C5FBC1A69D
2 changed files with 62 additions and 35 deletions

View File

@ -10,16 +10,6 @@ import XCTest
@testable import SocketIO
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() {
XCTAssertEqual(socket.currentAck, -1)
}
@ -165,4 +155,35 @@ class SocketSideEffectTest: XCTestCase {
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()
}
}

View File

@ -47,6 +47,8 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
default:
break
}
handleEvent("statusChange", data: [status], isInternalMessage: true)
}
}
@ -551,6 +553,10 @@ open class SocketIOClient : NSObject, SocketIOClientSpec, SocketEngineClient, So
status = .connected
}
func setTestStatus(_ status: SocketIOClientStatus) {
self.status = status
}
func setTestEngine(_ engine: SocketEngineSpec?) {
self.engine = engine
}