PageRenderTime 42ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/units/classes/asserters/mock/call/mock.php

http://github.com/mageekguy/atoum
PHP | 139 lines | 129 code | 10 blank | 0 comment | 0 complexity | a88ae689fe6a58374260d06ea8996b64 MD5 | raw file
  1. <?php
  2. namespace mageekguy\atoum\tests\units\asserters\mock\call;
  3. require_once __DIR__ . '/../../../../runner.php';
  4. use
  5. mageekguy\atoum,
  6. mageekguy\atoum\asserter,
  7. mageekguy\atoum\asserters,
  8. mageekguy\atoum\asserters\mock\call
  9. ;
  10. class dummy
  11. {
  12. public function foo() {}
  13. }
  14. class mock extends atoum\test
  15. {
  16. public function test__construct()
  17. {
  18. $this
  19. ->if($call = new call\mock(
  20. $mockAsserter = new asserters\mock(new asserter\generator()),
  21. $mockAggregator = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  22. $function = uniqid()
  23. )
  24. )
  25. ->then
  26. ->object($call->getMockAsserter())->isIdenticalTo($mockAsserter)
  27. ->object($call->getObject())->isIdenticalTo($mockAggregator)
  28. ->string($call->getFunction())->isEqualTo($function)
  29. ->variable($call->getArguments())->isNull()
  30. ;
  31. }
  32. public function test__call()
  33. {
  34. $this
  35. ->if($call = new call\mock(
  36. $mockAsserter = new \mock\mageekguy\atoum\asserters\mock(new asserter\generator()),
  37. new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  38. uniqid()
  39. )
  40. )
  41. ->and($mockAsserter->getMockController()->call = $mockAsserter)
  42. ->then
  43. ->object($call->call($arg = uniqid()))->isIdenticalTo($mockAsserter)
  44. ->mock($mockAsserter)
  45. ->call('call')->withArguments($arg)->once()
  46. ->if($unknownMethod = uniqid())
  47. ->then
  48. ->exception(function() use ($call, $unknownMethod) {
  49. $call->{$unknownMethod}();
  50. }
  51. )
  52. ->isInstanceOf('mageekguy\atoum\exceptions\logic\invalidArgument')
  53. ->hasMessage('Method ' . get_class($mockAsserter) . '::' . $unknownMethod . '() does not exist')
  54. ;
  55. }
  56. public function testWithArguments()
  57. {
  58. $this
  59. ->if($call = new call\mock(
  60. new asserters\mock(new asserter\generator()),
  61. new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  62. uniqid()
  63. )
  64. )
  65. ->then
  66. ->object($call->withArguments($arg = uniqid()))->isIdenticalTo($call)
  67. ->array($call->getArguments())->isEqualTo(array($arg))
  68. ->object($call->withArguments($arg1 = uniqid(), $arg2 = uniqid()))->isIdenticalTo($call)
  69. ->array($call->getArguments())->isEqualTo(array($arg1, $arg2))
  70. ;
  71. }
  72. public function testOn()
  73. {
  74. $this
  75. ->if($call = new call\mock(
  76. new asserters\mock(new asserter\generator()),
  77. new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  78. uniqid()
  79. )
  80. )
  81. ->and($mockAggregator = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy())
  82. ->then
  83. ->object($call->on($mockAggregator))->isIdenticalTo($call)
  84. ->object($call->getObject())->isIdenticalTo($mockAggregator)
  85. ;
  86. }
  87. public function testGetFirstCall()
  88. {
  89. $this
  90. ->if($call = new call\mock(
  91. new asserters\mock(new asserter\generator()),
  92. $mock = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  93. 'foo'
  94. )
  95. )
  96. ->then
  97. ->variable($call->getFirstCall())->isNull()
  98. ->if($otherMock = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy())
  99. ->and($otherMock->foo())
  100. ->then
  101. ->variable($call->getFirstCall())->isNull()
  102. ->when(function() use ($mock) { $mock->foo(); })
  103. ->integer($call->getFirstCall())->isEqualTo(2)
  104. ->when(function() use ($mock) { $mock->foo(); })
  105. ->integer($call->getFirstCall())->isEqualTo(2)
  106. ;
  107. }
  108. public function testGetLastCall()
  109. {
  110. $this
  111. ->if($call = new call\mock(
  112. new asserters\mock(new asserter\generator()),
  113. $mock = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy(),
  114. 'foo'
  115. )
  116. )
  117. ->then
  118. ->variable($call->getLastCall())->isNull()
  119. ->if($otherMock = new \mock\mageekguy\atoum\tests\units\asserters\mock\call\dummy())
  120. ->and($otherMock->foo())
  121. ->then
  122. ->variable($call->getLastCall())->isNull()
  123. ->when(function() use ($mock) { $mock->foo(); })
  124. ->integer($call->getLastCall())->isEqualTo(2)
  125. ->when(function() use ($mock) { $mock->foo(); })
  126. ->integer($call->getLastCall())->isEqualTo(3)
  127. ;
  128. }
  129. }