Skip to content

Commit

Permalink
Add support for null => true in `CreateSchemaListener::postGenerate…
Browse files Browse the repository at this point in the history
…SchemaTable()`
  • Loading branch information
phansys committed Apr 8, 2018
1 parent 44c94e9 commit d64ceed
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 9 deletions.
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ language: php

sudo: false

dist: precise

branches:
only:
- 1.0
Expand All @@ -17,6 +19,8 @@ php:
- 5.5
- 5.6
- 7.0
- 7.1
- 7.2
- nightly
- hhvm

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,9 @@ public function postGenerateSchemaTable(GenerateSchemaTableEventArgs $eventArgs)

foreach ($entityTable->getColumns() AS $column) {
/* @var Column $column */
$revisionTable->addColumn($column->getName(), $column->getType()->getName(), array_merge(
$column->toArray(),
array('notnull' => false, 'autoincrement' => false)
));
$revisionTable->addColumn($column->getName(), $column->getType()->getName(),
array('notnull' => false, 'null' => true, 'autoincrement' => false) + $column->toArray()
);
}
$revisionTable->addColumn($this->config->getRevisionFieldName(), $this->config->getRevisionIdFieldType());
$revisionTable->addColumn($this->config->getRevisionTypeFieldName(), 'string', array('length' => 4));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

namespace SimpleThings\EntityAudit\Tests\Fixtures\Issue;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
*/
class Issue318User
{
/** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue(strategy="AUTO") */
private $id;

/**
* @var string
* @ORM\Column(type="string", nullable=false, length=255)
*/
protected $alias;

public function getId()
{
return $this->id;
}

/**
* @return string
*/
public function getAlias()
{
return $this->alias;
}

/**
* @param string $alias
* @return self
*/
public function setAlias($alias)
{
$this->alias = $alias;
return $this;
}
}
35 changes: 30 additions & 5 deletions tests/SimpleThings/Tests/EntityAudit/IssueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue196Entity;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue31Reve;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue31User;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue318User;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue87Organization;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue87Project;
use SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue87ProjectComment;
Expand Down Expand Up @@ -68,6 +69,7 @@ class IssueTest extends BaseTest
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue198Car',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue198Owner',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue196Entity',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue318User',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\ConvertToPHPEntity',
);

Expand All @@ -92,6 +94,7 @@ class IssueTest extends BaseTest
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue196Entity',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue198Car',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue198Owner',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\Issue318User',
'SimpleThings\EntityAudit\Tests\Fixtures\Issue\ConvertToPHPEntity',
);

Expand Down Expand Up @@ -277,27 +280,27 @@ public function testIssue196()
'Current revision of audited entity is not equivalent to persisted entity:'
);
}

public function testIssue198()
{
$owner = new Issue198Owner();
$car = new Issue198Car();

$this->em->persist($owner);
$this->em->persist($car);
$this->em->flush();

$owner->addCar($car);

$this->em->persist($owner);
$this->em->persist($car);
$this->em->flush();

$auditReader = $this->auditManager->createAuditReader($this->em);

$car1 = $auditReader->find(get_class($car), $car->getId(), 1);
$this->assertNull($car1->getOwner());

$car2 = $auditReader->find(get_class($car), $car->getId(), 2);
$this->assertEquals($car2->getOwner()->getId(), $owner->getId());
}
Expand All @@ -322,4 +325,26 @@ public function testConvertToPHP()
'Current revision of audited entity is not equivalent to persisted entity:'
);
}

public function testIssue318()
{
$user = new Issue318User();
$user->setAlias('alias');
$this->em->persist($user);
$this->em->flush();
$userMetadata = $this->em->getClassMetadata(get_class($user));
$classes = [$userMetadata];
$schema = $this->getSchemaTool()->getSchemaFromMetadata($classes);
$schemaName = $schema->getName();
$config = $this->getAuditManager()->getConfiguration();
$entityTableUser = $schema->getTable(sprintf('%s.issue318user', $schemaName));
$revisionsTableUser = $schema->getTable(sprintf('%s.%sissue318user%s', $schemaName, $config->getTablePrefix(), $config->getTableSuffix()));
$userNotNullColumnName = 'alias';

$this->assertTrue($entityTableUser->getColumn($userNotNullColumnName)->getNotnull());
$this->assertFalse($revisionsTableUser->getColumn($userNotNullColumnName)->getNotnull());

$this->assertTrue($entityTableUser->getColumn('id')->getAutoincrement());
$this->assertFalse($revisionsTableUser->getColumn('id')->getAutoincrement());
}
}

0 comments on commit d64ceed

Please sign in to comment.