Chris@0: statement = $this->getMockBuilder('Drupal\Core\Database\Driver\sqlite\Statement') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $this->statement->expects($this->any()) Chris@0: ->method('fetchObject') Chris@0: ->will($this->returnCallback([$this, 'fetchObjectCallback'])); Chris@0: Chris@0: $this->select = $this->getMockBuilder('Drupal\Core\Database\Query\Select') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $this->select->expects($this->any()) Chris@0: ->method('fields') Chris@0: ->will($this->returnSelf()); Chris@0: Chris@0: $this->select->expects($this->any()) Chris@0: ->method('condition') Chris@0: ->will($this->returnSelf()); Chris@0: Chris@0: $this->select->expects($this->any()) Chris@0: ->method('execute') Chris@0: ->will($this->returnValue($this->statement)); Chris@0: Chris@0: $this->database = $this->getMockBuilder('Drupal\Core\Database\Connection') Chris@0: ->disableOriginalConstructor() Chris@0: ->getMock(); Chris@0: Chris@0: $this->database->expects($this->once()) Chris@0: ->method('select') Chris@0: ->will($this->returnValue($this->select)); Chris@0: Chris@18: $this->commentStatistics = new CommentStatistics($this->database, $this->getMock('Drupal\Core\Session\AccountInterface'), $this->createMock(EntityTypeManagerInterface::class), $this->getMock('Drupal\Core\State\StateInterface'), $this->database); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the read method. Chris@0: * Chris@0: * @see \Drupal\comment\CommentStatistics::read() Chris@0: * Chris@0: * @group Drupal Chris@0: * @group Comment Chris@0: */ Chris@0: public function testRead() { Chris@0: $this->calls_to_fetch = 0; Chris@0: $results = $this->commentStatistics->read(['1' => 'boo', '2' => 'foo'], 'snafoos'); Chris@0: $this->assertEquals($results, ['something', 'something-else']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Return value callback for fetchObject() function on mocked object. Chris@0: * Chris@0: * @return bool|string Chris@0: * 'Something' on first, 'something-else' on second and FALSE for the Chris@0: * other calls to function. Chris@0: */ Chris@0: public function fetchObjectCallback() { Chris@0: $this->calls_to_fetch++; Chris@0: switch ($this->calls_to_fetch) { Chris@0: case 1: Chris@0: return 'something'; Chris@0: Chris@0: case 2: Chris@0: return 'something-else'; Chris@0: Chris@0: default: Chris@0: return FALSE; Chris@0: } Chris@0: } Chris@0: Chris@0: }