/**
  * @return void
  */
 public function test_function()
 {
     // prepare
     $this->setExpectedException('\\UnexpectedValueException', 'Invalid method');
     MockMethodCalls::init(['collection' => []]);
     // invoke logic & test
     MockMethodCalls::getInstance()->recordArguments(new \stdClass(), 'fooBar', []);
 }
 /**
  * @return void
  */
 public function test_function()
 {
     // prepare
     $this->setExpectedException('\\UnexpectedValueException', 'Invalid method');
     MockMethodCalls::init(['collection' => []]);
     $reflection = new \ReflectionClass(MockMethodCalls::getInstance());
     $validateCollectionsMethod = $reflection->getMethod('getFullTraceDetails');
     $validateCollectionsMethod->setAccessible(true);
     // invoke logic & test
     $validateCollectionsMethod->invoke(MockMethodCalls::getInstance(), new \stdClass(), 'fooBar');
 }
 /**
  * @return void
  */
 public function test_function()
 {
     // invoke logic
     MockMethodCalls::init([]);
     // prepare
     $reflection = new \ReflectionClass('\\DbMockLibrary\\MockMethodCalls');
     $callArgumentsProperty = $reflection->getProperty('callArguments');
     $callArgumentsProperty->setAccessible(true);
     // test
     MockMethodCalls::getInstance()->recordArguments(new \Exception(), 'getMessage', ['bar']);
     // test
     $this->assertEquals([['Exception::getMessage' => ['bar']]], $callArgumentsProperty->getValue(MockMethodCalls::getInstance()));
 }
 /**
  * @return void
  */
 public function test_function()
 {
     // prepare
     MockMethodCalls::init([]);
     $reflection = new \ReflectionClass('\\DbMockLibrary\\MockMethodCalls');
     $traceProperty = $reflection->getProperty('traces');
     $traceProperty->setAccessible(true);
     // test
     MockMethodCalls::getInstance()->recordTrace();
     // prepare
     $trace = $traceProperty->getValue(MockMethodCalls::getInstance());
     // test
     $this->assertArraySubset(['function' => 'test_function', 'class' => 'Test\\MockMethodCalls\\RecordTraceTest'], $trace[0][0]);
 }
 /**
  * @dataProvider getData
  *
  * @param array $data
  *
  * @return void
  */
 public function test_function(array $data)
 {
     // prepare
     MockMethodCalls::init([]);
     $traces = [[['function' => 'getMessage', 'class' => 'Exception', 'args' => ['fooBar'], 'foo' => 'bar']]];
     $reflection = new \ReflectionClass('\\DbMockLibrary\\MockMethodCalls');
     $traceProperty = $reflection->getProperty('traces');
     $traceProperty->setAccessible(true);
     $traceProperty->setValue(MockMethodCalls::getInstance(), $traces);
     $getFullTraceDetailsMethod = $reflection->getMethod('getFullTraceDetails');
     $getFullTraceDetailsMethod->setAccessible(true);
     // invoke logic
     $result = $getFullTraceDetailsMethod->invoke(MockMethodCalls::getInstance(), $data['class'], $data['method']);
     // test
     $this->assertEquals($data['expected'], $result);
 }
 /**
  * @dataProvider getData
  *
  * @param array $data
  *
  * @return void
  */
 public function test_function(array $data)
 {
     // prepare
     MockMethodCalls::init([]);
     $traces = [[['function' => 'getMessage', 'class' => 'Exception', 'args' => ['foo']]], [['function' => 'getMessage', 'class' => 'Exception', 'args' => ['foo']]]];
     $reflection = new \ReflectionClass('\\DbMockLibrary\\MockMethodCalls');
     $traceProperty = $reflection->getProperty('traces');
     $traceProperty->setAccessible(true);
     $traceProperty->setValue(MockMethodCalls::getInstance(), $traces);
     // invoke logic
     if (isset($data['arguments'])) {
         $result = MockMethodCalls::getInstance()->wasCalledCount($data['class'], $data['method'], $data['arguments']);
     } else {
         $result = MockMethodCalls::getInstance()->wasCalledCount($data['class'], $data['method']);
     }
     // test
     $this->assertEquals($data['expected'], $result);
 }
 /**
  * @return void
  */
 public function test_function()
 {
     // prepare
     $traces = ['foo' => 1];
     $callArguments = ['bar' => 1];
     MockMethodCalls::init();
     $reflection = new \ReflectionClass('\\DbMockLibrary\\MockMethodCalls');
     $staticProperties = $reflection->getStaticProperties();
     $tracesProperty = $reflection->getProperty('traces');
     $tracesProperty->setAccessible(true);
     $tracesProperty->setValue($staticProperties['instance'], $traces);
     $callArgumentsProperty = $reflection->getProperty('callArguments');
     $callArgumentsProperty->setAccessible(true);
     $callArgumentsProperty->setValue($staticProperties['instance'], $callArguments);
     // invoke logic
     MockMethodCalls::getInstance()->reset();
     // test
     $this->assertEquals([], $tracesProperty->getValue($staticProperties['instance']));
     $this->assertEquals([], $callArgumentsProperty->getValue($staticProperties['instance']));
 }