diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index c6df65301d..0a6bfcfed6 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -111,7 +111,7 @@ class ContainerConfigurator implements IContainerConfigurator { // Doctrine $container->autowire(\MailPoet\Doctrine\Annotations\AnnotationReaderProvider::class); $container->autowire(\MailPoet\Doctrine\ConfigurationFactory::class); - $container->autowire(\MailPoet\Doctrine\ConnectionFactory::class); + $container->autowire(\MailPoet\Doctrine\ConnectionFactory::class)->setPublic(true); $container->autowire(\MailPoet\Doctrine\EntityManagerFactory::class); $container->autowire(\MailPoetVendor\Doctrine\ORM\Configuration::class) ->setFactory([new Reference(\MailPoet\Doctrine\ConfigurationFactory::class), 'createConfiguration']); diff --git a/tests/integration/Doctrine/Driver/DummyUser.php b/tests/integration/Doctrine/Driver/DummyUser.php new file mode 100644 index 0000000000..7bd39afff7 --- /dev/null +++ b/tests/integration/Doctrine/Driver/DummyUser.php @@ -0,0 +1,21 @@ +name = $name; + $this->age = $age; + } + + public function getName() { + return $this->name; + } + + public function getAge() { + return $this->age; + } +} diff --git a/tests/integration/Doctrine/Driver/PDOConnectionTest.php b/tests/integration/Doctrine/Driver/PDOConnectionTest.php new file mode 100644 index 0000000000..cee7c2c732 --- /dev/null +++ b/tests/integration/Doctrine/Driver/PDOConnectionTest.php @@ -0,0 +1,28 @@ +testConnection = $this->diContainer->get(ConnectionFactory::class)->createConnection(); + } + + public function testItCanQuery() { + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;"); + expect($statement)->isInstanceOf(PDOStatement::class); + + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;", \PDO::FETCH_COLUMN, 2); + expect($statement)->isInstanceOf(PDOStatement::class); + + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;", \PDO::FETCH_CLASS, DummyUser::class, ['name', 'age']); + expect($statement)->isInstanceOf(PDOStatement::class); + } +} diff --git a/tests/integration/Doctrine/Driver/PDOStatementTest.php b/tests/integration/Doctrine/Driver/PDOStatementTest.php new file mode 100644 index 0000000000..45aee20043 --- /dev/null +++ b/tests/integration/Doctrine/Driver/PDOStatementTest.php @@ -0,0 +1,34 @@ +testConnection = $this->diContainer->get(ConnectionFactory::class)->createConnection(); + } + + public function testItCanFetchAll() { + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;"); + $result = $statement->fetchAll(); + expect($result)->count(1); + expect($result[0]['name'])->equals('lojza'); + + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;"); + $result = $statement->fetchAll(\PDO::FETCH_COLUMN); + expect($result)->count(1); + expect($result[0])->equals('lojza'); + + $statement = $this->testConnection->query("SELECT 'lojza' as name, 30 as age;"); + $result = $statement->fetchAll(\PDO::FETCH_CLASS | \PDO::FETCH_PROPS_LATE, DummyUser::class, ['name', 'age']); + expect($result)->count(1); + expect($result[0]->getName())->equals('lojza'); + } +}