Skip to content

Commit 7ad741a

Browse files
authored
tests: add functional test (#74)
* feat: Removed AbstractEvent and event Uid * fix: Fixed CS * tests: Added functional tests
1 parent 08e25e3 commit 7ad741a

36 files changed

Lines changed: 467 additions & 209 deletions

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ jobs:
4242
phpunit:
4343
runs-on: ubuntu-latest
4444
strategy:
45+
fail-fast: false
4546
matrix:
4647
php-versions: [ '8.2', '8.3', '8.4' , '8.5' ]
4748
dependencies-versions: [ lowest, highest ]

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.phpunit.result.cache
22
.php-cs-fixer.cache
33
composer.lock
4+
tests/Bridge/Symfony/Fixtures/app/var
45
vendor

TODO.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

composer.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,22 @@
2020
"php": ">=8.2"
2121
},
2222
"require-dev": {
23-
"doctrine/common": "^3.1.2",
2423
"doctrine/orm": "^2.9.3|^3.0.0",
2524
"phpunit/phpunit": "^11.5.44",
2625
"psr/simple-cache": ">=0.2.0,<4",
2726
"symfony/dependency-injection": ">=4.4,<9.0",
2827
"symfony/config": ">=4.4,<9.0",
2928
"symfony/var-dumper": ">=4.4,<9.0",
30-
"symfony/yaml": ">=4.4,<9.0",
3129
"twig/twig": "^3.3.2",
3230
"phpspec/prophecy-phpunit": "^2.3.0",
33-
"symfony/cache": ">=5.3,<9.0",
3431
"symfony/http-kernel": ">=5.3,<9.0",
3532
"rector/rector": "^2.2",
3633
"friendsofphp/php-cs-fixer": "^3.90",
3734
"vimeo/psalm": "^6.13@dev",
38-
"infection/infection": "^0.31.9"
35+
"infection/infection": "^0.31.9",
36+
"symfony/framework-bundle": ">=4.4,<9.0",
37+
"symfony/twig-bundle": ">=4.4,<9.0",
38+
"doctrine/doctrine-bundle": ">=2.7.2,<4.0"
3939
},
4040
"autoload": {
4141
"psr-4": {
@@ -44,7 +44,8 @@
4444
},
4545
"autoload-dev": {
4646
"psr-4": {
47-
"CalendR\\Test\\": "tests/"
47+
"CalendR\\Test\\": "tests/",
48+
"App\\": "tests/Bridge/Symfony/Fixtures/"
4849
}
4950
},
5051
"extra": {

phpunit.xml.dist

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="./vendor/autoload.php" colors="true"
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
bootstrap="tests/bootstrap.php"
4+
colors="true"
35
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd">
6+
<php>
7+
<env name="KERNEL_CLASS" value="AppKernel" />
8+
<env name="APP_ENV" value="test" />
9+
</php>
410
<source>
511
<include>
612
<directory>src</directory>

src/Bridge/Doctrine/ORM/EventRepository.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public function getEventsQueryBuilder(\DateTimeInterface $begin, \DateTimeInterf
1919
return $qb
2020
->andWhere(
2121
$qb->expr()->andX(
22-
$qb->expr()->lt($begin, ':end'),
23-
$qb->expr()->gt($end, ':begin'),
22+
$qb->expr()->lt($this->getBeginFieldName(), ':end'),
23+
$qb->expr()->gt($this->getEndFieldName(), ':begin'),
2424
)
2525
)
2626
->setParameter(':begin', $begin)

src/Bridge/Symfony/Bundle/DependencyInjection/CalendRExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Symfony\Component\Config\FileLocator;
1010
use Symfony\Component\DependencyInjection\ContainerBuilder;
1111
use Symfony\Component\DependencyInjection\Extension\Extension;
12-
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
12+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1313

1414
final class CalendRExtension extends Extension
1515
{
@@ -22,8 +22,8 @@ public function load(array $configs, ContainerBuilder $container): void
2222
/** @var array{periods: array{default_first_weekday: DayOfWeek|int}} $config */
2323
$config = $this->processConfiguration($configuration, $configs);
2424

25-
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
26-
$loader->load('services.yaml');
25+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
26+
$loader->load('services.php');
2727

2828
$defaultFirstWeekday = $config['periods']['default_first_weekday'];
2929
if (!($defaultFirstWeekday instanceof DayOfWeek)) {

src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/EventProviderPass.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace CalendR\Bridge\Symfony\Bundle\DependencyInjection\Compiler;
66

7-
use CalendR\Event\Manager;
7+
use CalendR\Event\EventManager;
88
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
99
use Symfony\Component\DependencyInjection\ContainerBuilder;
1010
use Symfony\Component\DependencyInjection\Reference;
@@ -16,7 +16,7 @@ final class EventProviderPass implements CompilerPassInterface
1616
#[\Override]
1717
public function process(ContainerBuilder $container): void
1818
{
19-
$eventManager = $container->getDefinition(Manager::class);
19+
$eventManager = $container->getDefinition(EventManager::class);
2020

2121
foreach ($container->findTaggedServiceIds(self::TAG) as $id => $attributes) {
2222
/** @var string $providerAlias */
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use CalendR\Bridge\Twig\CalendRExtension;
6+
use CalendR\Calendar;
7+
use CalendR\Event\EventManager;
8+
use CalendR\Period\PeriodPeriodFactory;
9+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
10+
11+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
12+
13+
return static function (ContainerConfigurator $container) {
14+
$container->services()
15+
->set(EventManager::class)
16+
->public();
17+
18+
$container->services()
19+
->set(PeriodPeriodFactory::class)
20+
->public();
21+
22+
$container->services()
23+
->set(Calendar::class)
24+
->arg('$factory', service(PeriodPeriodFactory::class))
25+
->arg('$eventManager', service(EventManager::class))
26+
->public();
27+
28+
$container->services()
29+
->set(CalendRExtension::class)
30+
->arg('$factory', service(Calendar::class))
31+
->tag('twig.extension');
32+
33+
$container->services()
34+
->alias('calendr', Calendar::class)
35+
->public();
36+
37+
$container->services()
38+
->alias('calendr.factory', PeriodPeriodFactory::class)
39+
->public();
40+
41+
$container->services()
42+
->alias('calendr.event_manager', EventManager::class)
43+
->public();
44+
};

src/Bridge/Symfony/Bundle/Resources/config/services.yaml

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)