AbstractMessageComponentTestCase.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace Ratchet;
  3. abstract class AbstractMessageComponentTestCase extends \PHPUnit_Framework_TestCase {
  4. protected $_app;
  5. protected $_serv;
  6. protected $_conn;
  7. abstract public function getConnectionClassString();
  8. abstract public function getDecoratorClassString();
  9. abstract public function getComponentClassString();
  10. public function setUp() {
  11. $this->_app = $this->getMock($this->getComponentClassString());
  12. $decorator = $this->getDecoratorClassString();
  13. $this->_serv = new $decorator($this->_app);
  14. $this->_conn = $this->getMock('\Ratchet\ConnectionInterface');
  15. $this->doOpen($this->_conn);
  16. }
  17. protected function doOpen($conn) {
  18. $this->_serv->onOpen($conn);
  19. }
  20. public function isExpectedConnection() {
  21. return new \PHPUnit_Framework_Constraint_IsInstanceOf($this->getConnectionClassString());
  22. }
  23. public function testOpen() {
  24. $this->_app->expects($this->once())->method('onOpen')->with($this->isExpectedConnection());
  25. $this->doOpen($this->getMock('\Ratchet\ConnectionInterface'));
  26. }
  27. public function testOnClose() {
  28. $this->_app->expects($this->once())->method('onClose')->with($this->isExpectedConnection());
  29. $this->_serv->onClose($this->_conn);
  30. }
  31. public function testOnError() {
  32. $e = new \Exception('Whoops!');
  33. $this->_app->expects($this->once())->method('onError')->with($this->isExpectedConnection(), $e);
  34. $this->_serv->onError($this->_conn, $e);
  35. }
  36. public function passthroughMessageTest($value) {
  37. $this->_app->expects($this->once())->method('onMessage')->with($this->isExpectedConnection(), $value);
  38. $this->_serv->onMessage($this->_conn, $value);
  39. }
  40. }