mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-09-05 14:25:00 +00:00
Refactor export manager and normalize configuration handling
Simplified formatter and aggregator logic by removing redundant fields and improving method checks (e.g., `hasAggregator`, `hasFilter`). Adjusted test cases to align with the updated structure and added tests for empty data normalization and denormalization. Improved code readability and ensured better handling of edge cases in export data processing.
This commit is contained in:
@@ -77,9 +77,7 @@ class ExportConfigNormalizerTest extends TestCase
|
||||
'aggregatorDisabled' => ['enabled' => false, 'form' => ['default' => '0']],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [
|
||||
'form' => ['test' => '0'],
|
||||
],
|
||||
'formatter' => ['test' => '0'],
|
||||
];
|
||||
|
||||
$expected = [
|
||||
@@ -167,9 +165,150 @@ class ExportConfigNormalizerTest extends TestCase
|
||||
'aggregatorDisabled' => ['enabled' => false, 'form' => ['default' => '0']],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [
|
||||
'form' => ['test' => '0'],
|
||||
'formatter' => ['test' => '0'],
|
||||
'centers' => [$center],
|
||||
];
|
||||
|
||||
$exportConfigNormalizer = new ExportConfigNormalizer($exportManager->reveal(), $centerRepository->reveal());
|
||||
$actual = $exportConfigNormalizer->denormalizeConfig('export', $serialized, true);
|
||||
|
||||
self::assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
public function testNormalizeConfigEmptyData(): void
|
||||
{
|
||||
$filterEnabled = $this->prophesize(FilterInterface::class);
|
||||
$filterEnabled->normalizeFormData([])->shouldBeCalled()->willReturn([]);
|
||||
$filterEnabled->getNormalizationVersion()->willReturn(1);
|
||||
$filterDisabled = $this->prophesize(FilterInterface::class);
|
||||
$filterDisabled->normalizeFormData([])->shouldNotBeCalled();
|
||||
|
||||
$aggregatorEnabled = $this->prophesize(AggregatorInterface::class);
|
||||
$aggregatorEnabled->normalizeFormData([])->shouldBeCalled()->willReturn([]);
|
||||
$aggregatorEnabled->getNormalizationVersion()->willReturn(1);
|
||||
$aggregatorDisabled = $this->prophesize(AggregatorInterface::class);
|
||||
$aggregatorDisabled->normalizeFormData([])->shouldNotBeCalled();
|
||||
|
||||
$export = $this->prophesize(ExportInterface::class);
|
||||
$export->normalizeFormData([])->shouldBeCalled()->willReturn([]);
|
||||
$export->getNormalizationVersion()->willReturn(1);
|
||||
|
||||
$formatter = $this->prophesize(FormatterInterface::class);
|
||||
$formatter->normalizeFormData([])->shouldBeCalled()->willReturn([]);
|
||||
$formatter->getNormalizationVersion()->willReturn(1);
|
||||
|
||||
$exportManager = $this->prophesize(ExportManager::class);
|
||||
$exportManager->getFormatter('xlsx')->shouldBeCalled()->willReturn($formatter->reveal());
|
||||
$exportManager->getFilter('filterEnabled')->willReturn($filterEnabled->reveal());
|
||||
$exportManager->getFilter('filterDisabled')->willReturn($filterDisabled->reveal());
|
||||
$exportManager->getAggregator('aggregatorEnabled')->willReturn($aggregatorEnabled->reveal());
|
||||
$exportManager->getAggregator('aggregatorDisabled')->willReturn($aggregatorDisabled->reveal());
|
||||
$exportManager->getExport('export')->willReturn($export->reveal());
|
||||
|
||||
$center = $this->prophesize(Center::class);
|
||||
$center->getId()->willReturn(10);
|
||||
|
||||
$formData = [
|
||||
'centers' => [$center->reveal()],
|
||||
'export' => [],
|
||||
'filters' => [
|
||||
'filterEnabled' => ['enabled' => true, 'form' => []],
|
||||
'filterDisabled' => ['enabled' => false, 'form' => []],
|
||||
],
|
||||
'aggregators' => [
|
||||
'aggregatorEnabled' => ['enabled' => true, 'form' => []],
|
||||
'aggregatorDisabled' => ['enabled' => false, 'form' => []],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [],
|
||||
];
|
||||
|
||||
$expected = [
|
||||
'export' => ['form' => [], 'version' => 1],
|
||||
'filters' => [
|
||||
'filtersEnabled' => ['enabled' => true, 'form' => [], 'version' => 1],
|
||||
'filterDisabled' => ['enabled' => false],
|
||||
],
|
||||
'aggregators' => [
|
||||
'aggregatorEnabled' => ['enabled' => true, 'form' => [], 'version' => 1],
|
||||
'aggregatorDisabled' => ['enabled' => false],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [
|
||||
'form' => [],
|
||||
'version' => 1,
|
||||
],
|
||||
'centers' => [10],
|
||||
];
|
||||
|
||||
$exportConfigNormalizer = new ExportConfigNormalizer($exportManager->reveal(), $this->prophesize(CenterRepositoryInterface::class)->reveal());
|
||||
|
||||
$actual = $exportConfigNormalizer->normalizeConfig('export', $formData);
|
||||
|
||||
self::assertEqualsCanonicalizing($expected, $actual);
|
||||
}
|
||||
|
||||
public function testDenormalizeConfigWithEmptyData(): void
|
||||
{
|
||||
$filterEnabled = $this->prophesize(FilterInterface::class);
|
||||
$filterEnabled->denormalizeFormData([], 1)->shouldBeCalled()->willReturn([]);
|
||||
$filterDisabled = $this->prophesize(FilterInterface::class);
|
||||
$filterDisabled->denormalizeFormData(Argument::any(), Argument::type('int'))->shouldNotBeCalled();
|
||||
$filterDisabled->getFormDefaultData()->willReturn([]);
|
||||
|
||||
$aggregatorEnabled = $this->prophesize(AggregatorInterface::class);
|
||||
$aggregatorEnabled->denormalizeFormData([], 1)->shouldBeCalled()->willReturn([]);
|
||||
$aggregatorDisabled = $this->prophesize(AggregatorInterface::class);
|
||||
$aggregatorDisabled->denormalizeFormData(Argument::any(), Argument::type('int'))->shouldNotBeCalled();
|
||||
$aggregatorDisabled->getFormDefaultData()->willReturn([]);
|
||||
|
||||
$export = $this->prophesize(ExportInterface::class);
|
||||
$export->denormalizeFormData([], 1)->shouldBeCalled()->willReturn([]);
|
||||
|
||||
$formatter = $this->prophesize(FormatterInterface::class);
|
||||
$formatter->denormalizeFormData([], 1)->shouldBeCalled()->willReturn([]);
|
||||
|
||||
$exportManager = $this->prophesize(ExportManager::class);
|
||||
$exportManager->getFormatter('xlsx')->shouldBeCalled()->willReturn($formatter->reveal());
|
||||
$exportManager->getFilter('filterEnabled')->willReturn($filterEnabled->reveal());
|
||||
$exportManager->getFilter('filterDisabled')->willReturn($filterDisabled->reveal());
|
||||
$exportManager->getAggregator('aggregatorEnabled')->willReturn($aggregatorEnabled->reveal());
|
||||
$exportManager->getAggregator('aggregatorDisabled')->willReturn($aggregatorDisabled->reveal());
|
||||
$exportManager->getExport('export')->willReturn($export->reveal());
|
||||
|
||||
$centerRepository = $this->prophesize(CenterRepositoryInterface::class);
|
||||
$centerRepository->find(10)->willReturn($center = new Center());
|
||||
|
||||
$serialized = [
|
||||
'centers' => [10],
|
||||
'export' => ['form' => [], 'version' => 1],
|
||||
'filters' => [
|
||||
'filterEnabled' => ['enabled' => true, 'form' => [], 'version' => 1],
|
||||
'filterDisabled' => ['enabled' => false],
|
||||
],
|
||||
'aggregators' => [
|
||||
'aggregatorEnabled' => ['enabled' => true, 'form' => [], 'version' => 1],
|
||||
'aggregatorDisabled' => ['enabled' => false],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [
|
||||
'form' => [],
|
||||
'version' => 1,
|
||||
],
|
||||
];
|
||||
|
||||
$expected = [
|
||||
'export' => [],
|
||||
'filters' => [
|
||||
'filterEnabled' => ['enabled' => true, 'form' => []],
|
||||
'filterDisabled' => ['enabled' => false, 'form' => []],
|
||||
],
|
||||
'aggregators' => [
|
||||
'aggregatorEnabled' => ['enabled' => true, 'form' => []],
|
||||
'aggregatorDisabled' => ['enabled' => false, 'form' => []],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => [],
|
||||
'centers' => [$center],
|
||||
];
|
||||
|
||||
|
@@ -53,7 +53,7 @@ class ExportGeneratorTest extends TestCase
|
||||
'disabled_aggregator' => ['enabled' => false],
|
||||
],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => ['form' => $formatterData = ['key' => 'form4']],
|
||||
'formatter' => $formatterData = ['key' => 'form4'],
|
||||
'centers' => [$centerA = new Center(), $centerB = new Center()],
|
||||
];
|
||||
$user = new User();
|
||||
@@ -98,7 +98,11 @@ class ExportGeneratorTest extends TestCase
|
||||
$exportManager = $this->prophesize(ExportManager::class);
|
||||
$exportManager->getExport('dummy')->willReturn($export->reveal());
|
||||
$exportManager->getFilter('dummy_filter')->willReturn($filter->reveal());
|
||||
$exportManager->hasFilter('dummy_filter')->willReturn(true);
|
||||
$exportManager->hasFilter('disabled_filter')->willReturn(true);
|
||||
$exportManager->getAggregator('dummy_aggregator')->willReturn($aggregator->reveal());
|
||||
$exportManager->hasAggregator('dummy_aggregator')->willReturn(true);
|
||||
$exportManager->hasAggregator('disabled_aggregator')->willReturn(true);
|
||||
$exportManager->getFormatter('xlsx')->willReturn($formatter->reveal());
|
||||
|
||||
$generator = new ExportGenerator($exportManager->reveal(), $exportConfigNormalizer->reveal(), new NullLogger());
|
||||
@@ -118,7 +122,7 @@ class ExportGeneratorTest extends TestCase
|
||||
'filters' => [],
|
||||
'aggregators' => [],
|
||||
'pick_formatter' => 'xlsx',
|
||||
'formatter' => ['form' => $formatterData = ['key' => 'form4']],
|
||||
'formatter' => $formatterData = ['key' => 'form4'],
|
||||
'centers' => [$centerA = new Center(), $centerB = new Center()],
|
||||
];
|
||||
$user = new User();
|
||||
|
Reference in New Issue
Block a user