Skip to content

Commit

Permalink
#6167 #6168 rewrote SequenceGeneratorTest for better readability an…
Browse files Browse the repository at this point in the history
…d error messages
  • Loading branch information
Ocramius committed Jun 21, 2017
1 parent 462481e commit a97c265
Showing 1 changed file with 37 additions and 21 deletions.
58 changes: 37 additions & 21 deletions tests/Doctrine/Tests/ORM/Id/SequenceGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,57 @@

namespace Doctrine\Tests\ORM\Id;

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Id\SequenceGenerator;
use Doctrine\Tests\Mocks\ConnectionMock;
use Doctrine\Tests\Mocks\StatementArrayMock;
use Doctrine\Tests\OrmTestCase;

/**
* Description of SequenceGeneratorTest
*
* @author robo
*/
class SequenceGeneratorTest extends OrmTestCase
{
private $_em;
private $_seqGen;
/**
* @var EntityManager
*/
private $entityManager;

protected function setUp()
/**
* @var SequenceGenerator
*/
private $sequenceGenerator;

/**
* @var ConnectionMock
*/
private $connection;

protected function setUp() : void
{
$this->_em = $this->_getTestEntityManager();
$this->_seqGen = new SequenceGenerator('seq', 10);
parent::setUp();

$this->entityManager = $this->_getTestEntityManager();
$this->sequenceGenerator = new SequenceGenerator('seq', 10);
$this->connection = $this->entityManager->getConnection();

self::assertInstanceOf(ConnectionMock::class, $this->connection);
}

public function testGeneration()
public function testGeneration() : void
{
$this->_em->getConnection()->setFetchOneException(
new \RuntimeException('Fetch* method used. Query method should be used instead, as NEXTVAL should be run on a master server in master-slave setup.')
);
$this->connection->setFetchOneException(new \BadMethodCallException(
'Fetch* method used. Query method should be used instead, '
. 'as NEXTVAL should be run on a master server in master-slave setup.'
));

for ($i=0; $i < 42; ++$i) {
for ($i = 0; $i < 42; ++$i) {
if ($i % 10 == 0) {
$nextId = [[(int)($i / 10) * 10]];
$this->_em->getConnection()->setQueryResult(new StatementArrayMock($nextId));
$this->connection->setQueryResult(new StatementArrayMock([[(int)($i / 10) * 10]]));
}
$id = $this->_seqGen->generate($this->_em, null);
$this->assertEquals($i, $id);
$this->assertEquals((int)($i / 10) * 10 + 10, $this->_seqGen->getCurrentMaxValue());
$this->assertEquals($i + 1, $this->_seqGen->getNextValue());

$id = $this->sequenceGenerator->generate($this->entityManager, null);

self::assertSame($i, $id);
self::assertSame((int)($i / 10) * 10 + 10, $this->sequenceGenerator->getCurrentMaxValue());
self::assertSame($i + 1, $this->sequenceGenerator->getNextValue());
}
}
}
Expand Down

0 comments on commit a97c265

Please sign in to comment.