Skip to content

Commit

Permalink
Merge pull request #340 from ably/rtp12a
Browse files Browse the repository at this point in the history
RTP12a
  • Loading branch information
tcard committed Apr 1, 2016
2 parents a43c7bc + 6abccdf commit 38f09e1
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Spec/NSObject+TestSuite.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ import Aspects
extension NSObject {

/// Inject a block of code to the identified class method.
class func testSuite_injectIntoClassMethod(selector: Selector, code: ()->()) {
class func testSuite_injectIntoClassMethod(selector: Selector, code: ()->()) -> AspectToken? {
let block: @convention(block) (AspectInfo) -> Void = { _ in
code()
}
let _ = try! self.aspect_hookSelector(selector, withOptions: .PositionAfter, usingBlock: unsafeBitCast(block, AnyObject.self))
return try? self.aspect_hookSelector(selector, withOptions: .PositionAfter, usingBlock: unsafeBitCast(block, AnyObject.self))
}

}
3 changes: 2 additions & 1 deletion Spec/RealtimeClientChannel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1401,9 +1401,10 @@ class RealtimeClientChannel: QuickSpec {
defer { realtime.close() }

var restChannelHistoryMethodWasCalled = false
ARTRestChannel.testSuite_injectIntoClassMethod("history:callback:error:") {
let hook = ARTRestChannel.testSuite_injectIntoClassMethod("history:callback:error:") {
restChannelHistoryMethodWasCalled = true
}
defer { hook?.remove() }

let channelRest = rest.channels.get("test")
let channelRealtime = realtime.channels.get("test")
Expand Down
50 changes: 49 additions & 1 deletion Spec/RealtimeClientPresence.swift
Original file line number Diff line number Diff line change
Expand Up @@ -944,9 +944,10 @@ class RealtimeClientPresence: QuickSpec {
let channel = client.channels.get("test")

var presenceQueryWasCreated = false
ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod("init") { // Default initialiser
let hook = ARTRealtimePresenceQuery.testSuite_injectIntoClassMethod("init") { // Default initialiser
presenceQueryWasCreated = true
}
defer { hook?.remove() }

waitUntil(timeout: testTimeout) { done in
channel.presence.get { members, error in
Expand Down Expand Up @@ -1095,6 +1096,53 @@ class RealtimeClientPresence: QuickSpec {

}

// RTP12
context("history") {

// RTP12a
it("should support all the same params as Rest") {
let options = AblyTests.commonAppSetup()

let rest = ARTRest(options: options)

let realtime = ARTRealtime(options: options)
defer { realtime.close() }

var restPresenceHistoryMethodWasCalled = false
var hook = ARTRestPresence.testSuite_injectIntoClassMethod("history:callback:error:") {
restPresenceHistoryMethodWasCalled = true
}
defer { hook?.remove() }

let channelRest = rest.channels.get("test")
let channelRealtime = realtime.channels.get("test")

let queryRealtime = ARTRealtimeHistoryQuery()
queryRealtime.start = NSDate()
queryRealtime.end = NSDate()
queryRealtime.direction = .Forwards
queryRealtime.limit = 50

let queryRest = queryRealtime as ARTDataQuery

waitUntil(timeout: testTimeout) { done in
try! channelRest.presence.history(queryRest) { _, _ in
done()
}
}
expect(restPresenceHistoryMethodWasCalled).to(beTrue())
restPresenceHistoryMethodWasCalled = false

waitUntil(timeout: testTimeout) { done in
try! channelRealtime.presence.history(queryRealtime) { _, _ in
done()
}
}
expect(restPresenceHistoryMethodWasCalled).to(beTrue())
}

}

}
}
}

0 comments on commit 38f09e1

Please sign in to comment.