DealerTest::testCallCancelCallInQueue PHP Method

testCallCancelCallInQueue() public method

    public function testCallCancelCallInQueue()
    {
        $sessionMockBuilder = $this->getMockBuilder('\\Thruway\\Session')->setMethods(['sendMessage'])->disableOriginalConstructor();
        $realm = new \Thruway\Realm('realm1');
        /** @var Session $eeSession */
        $eeSession = $sessionMockBuilder->getMock();
        $eeSession->setRealm($realm);
        $eeSession->setHelloMessage($this->_helloMessage);
        $erSession = $sessionMockBuilder->getMock();
        $erSession->setRealm($realm);
        $erSession->expects($this->exactly(1))->method('sendMessage')->withConsecutive([$this->callback(function (\Thruway\Message\ErrorMessage $msg) {
            $this->assertEquals("wamp.error.canceled", $msg->getErrorURI());
            $this->assertObjectHasAttribute("_thruway_removed_from_queue", $msg->getDetails());
            $this->assertTrue($msg->getDetails()->_thruway_removed_from_queue);
            return true;
        })]);
        $dealer = new \Thruway\Role\Dealer();
        $registerMsg = new \Thruway\Message\RegisterMessage(1, (object) ["thruway_multiregister" => true], "cancel_queued_call_procedure");
        $dealer->handleRegisterMessage(new \Thruway\Event\MessageEvent($eeSession, $registerMsg));
        $callMessage = new \Thruway\Message\CallMessage(2, (object) [], 'cancel_queued_call_procedure');
        $dealer->handleCallMessage(new \Thruway\Event\MessageEvent($erSession, $callMessage));
        // this should get through to callee
        $callMessage->setRequestId(3);
        $dealer->handleCallMessage(new \Thruway\Event\MessageEvent($erSession, $callMessage));
        // this should be in the queue now
        $cancelMessage = new \Thruway\Message\CancelMessage(3, (object) []);
        $dealer->handleCancelMessage(new \Thruway\Event\MessageEvent($erSession, $cancelMessage));
    }