diff --git a/composer.json b/composer.json index 8aaec10..45c3b11 100644 --- a/composer.json +++ b/composer.json @@ -10,15 +10,23 @@ "homepage": "http://www.matej21.cz" } ], + "repositories": [ + { + "type": "git", + "url": "https://github.com/paveljurasek/events" + } + ], "require": { - "nette/utils": "~2.4", - "nette/di": "~2.4", - "kdyby/doctrine": "@dev", - "kdyby/events": "@dev" + "php": "^8.0", + "nette/di": "^3.0", + "nette/utils": "^3.0", + "doctrine/orm": "^2.6", + "doctrine/annotations": "^1.13" }, "require-dev": { - "nette/tester": "@dev", - "tracy/tracy": "@dev" + "nette/tester": "^2.2", + "tracy/tracy": "^2.6", + "symfony/cache": "^6.0" }, "autoload": { "psr-4": { diff --git a/src/DI/SortableExtension.php b/src/DI/SortableExtension.php index 6f6a235..0c68677 100644 --- a/src/DI/SortableExtension.php +++ b/src/DI/SortableExtension.php @@ -1,7 +1,7 @@ getContainerBuilder(); - $builder->addDefinition($this->prefix('sortableListener')) - ->setClass('Librette\Doctrine\Sortable\SortableListener') - ->addTag(EventsExtension::TAG_SUBSCRIBER); + $listener = $builder->addDefinition($this->prefix('sortableListener')) + ->setType(SortableListener::class); + + /** @var \Nette\DI\Definitions\ServiceDefinition $manager */ + $manager = $builder->getByType(\Doctrine\Common\EventManager::class); + $manager->addSetup('addEventSubscriber', [$listener]); } } diff --git a/src/SortableListener.php b/src/SortableListener.php index b4b2001..224340f 100644 --- a/src/SortableListener.php +++ b/src/SortableListener.php @@ -1,19 +1,19 @@ andWhere('e.position >= :from') ->setParameter('from', $pos) ->andWhere('e.id <> :id') - ->setParameter('id', $entity->id) + ->setParameter('id', $entity->getId()) ->set('e.position', 'e.position + 1') ->getQuery()->getResult(); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 80852e3..a8efb99 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -19,5 +19,9 @@ function run(Tester\TestCase $testCase) { - $testCase->run(isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : NULL); + if (isset($_SERVER['argv'][2])) { + $testCase->runTest($_SERVER['argv'][2]); + } else { + $testCase->run(); + } } diff --git a/tests/src/EMTest.php b/tests/src/EMTest.php index 11cbdc3..02ecff1 100644 --- a/tests/src/EMTest.php +++ b/tests/src/EMTest.php @@ -1,13 +1,11 @@ 'pdo_sqlite', 'memory' => TRUE, ]; - $connection = new Kdyby\Doctrine\Connection($conf, new Driver()); - $config = new Kdyby\Doctrine\Configuration(); - $cache = new ArrayCache(); - $config->setMetadataCacheImpl($cache); - $config->setQueryCacheImpl($cache); + $connection = new Connection($conf, new \Doctrine\DBAL\Driver\PDO\SQLite\Driver()); + $config = new Configuration(); + $cache = new \Symfony\Component\Cache\Adapter\ArrayAdapter(); + $config->setMetadataCache($cache); + $config->setQueryCache($cache); $config->setProxyDir(TEMP_DIR); $config->setProxyNamespace('TestProxy'); - $config->setDefaultRepositoryClassName('Kdyby\Doctrine\EntityRepository'); $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver([__DIR__ . '/Model/', VENDOR_DIR], FALSE)); - $em = Kdyby\Doctrine\EntityManager::create($connection, $config); + $em = EntityManager::create($connection, $config); $em->getEventManager()->addEventSubscriber(new SortableListener()); if ($createSchema === FALSE) { return $em; diff --git a/tests/src/Model/Category.php b/tests/src/Model/Category.php index 65e864e..0328eff 100644 --- a/tests/src/Model/Category.php +++ b/tests/src/Model/Category.php @@ -2,8 +2,6 @@ namespace LibretteTests\Doctrine\Sortable\Model; use Doctrine\ORM\Mapping as ORM; -use Kdyby\Doctrine\Entities\Attributes\Identifier; -use Kdyby\Doctrine\Entities\BaseEntity; use Librette\Doctrine\Sortable\ISortable; use Librette\Doctrine\Sortable\ISortableScope; use Librette\Doctrine\Sortable\TSortable; @@ -14,12 +12,18 @@ * @ORM\DiscriminatorMap({"category": "Category", "described": "DescribedCategory"}) * @ORM\DiscriminatorColumn(name="type") */ -class Category extends BaseEntity implements ISortable, ISortableScope +class Category implements ISortable, ISortableScope { - use Identifier; use TSortable; + /** + * @ORM\Id() + * @ORM\GeneratedValue() + * @ORM\Column(type="integer") + * @var int + */ + protected $id; /** * @var string @@ -35,6 +39,13 @@ public function __construct($name) $this->name = $name; } + /** + * @return int + */ + public function getId() + { + return $this->id; + } /** * @return array diff --git a/tests/src/Model/DescribedCategory.php b/tests/src/Model/DescribedCategory.php index 3060843..58e3881 100644 --- a/tests/src/Model/DescribedCategory.php +++ b/tests/src/Model/DescribedCategory.php @@ -2,15 +2,20 @@ namespace LibretteTests\Doctrine\Sortable\Model; use Doctrine\ORM\Mapping as ORM; -use Kdyby\Doctrine\Entities\Attributes\Identifier; -use Kdyby\Doctrine\Entities\BaseEntity; /** * @ORM\Entity */ class DescribedCategory extends Category { - use Identifier; + + /** + * @ORM\Id() + * @ORM\GeneratedValue() + * @ORM\Column(type="integer") + * @var int + */ + protected $id; /** * @var string diff --git a/tests/src/SortableTestCase.phpt b/tests/src/SortableTestCase.phpt index e72891c..ea6f232 100644 --- a/tests/src/SortableTestCase.phpt +++ b/tests/src/SortableTestCase.phpt @@ -1,7 +1,7 @@ setPosition(3); $this->em->persist($cat); + $this->em->flush(); $this->em->persist($cat2); $this->em->flush(); $this->refresh($categories); //todo: update entities without refresh