Skip to content

Commit 1f08a1b

Browse files
committed
Add unit tests for DataConfiguration and improve coverage
Introduced `DataConfigurationTest` to validate configuration logic, including instance creation, overriding, and exceptions for invalid data. Minor renaming in `ArrTest` for clarity. Updated coverage metrics reflect increased test effectiveness.
1 parent 27a16fb commit 1f08a1b

File tree

3 files changed

+168
-73
lines changed

3 files changed

+168
-73
lines changed

clover.xml

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<coverage generated="1735677140">
3-
<project timestamp="1735677140">
2+
<coverage generated="1735679405">
3+
<project timestamp="1735679405">
44
<package name="Nuxtifyts\PhpDto\Attributes\Property">
55
<file name="/Users/faroukbraik/Dev/php-dto/src/Attributes/Property/Aliases.php">
66
<class name="Nuxtifyts\PhpDto\Attributes\Property\Aliases" namespace="Nuxtifyts\PhpDto\Attributes\Property">
@@ -267,69 +267,69 @@
267267
<package name="Nuxtifyts\PhpDto\Configuration">
268268
<file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/DataConfiguration.php">
269269
<class name="Nuxtifyts\PhpDto\Configuration\DataConfiguration" namespace="Nuxtifyts\PhpDto\Configuration">
270-
<metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="2" elements="15" coveredelements="2"/>
270+
<metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
271271
</class>
272-
<line num="12" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
273-
<line num="16" type="stmt" count="0"/>
274-
<line num="23" type="method" name="getInstance" visibility="public" complexity="3" crap="8.21" count="8"/>
275-
<line num="27" type="stmt" count="8"/>
276-
<line num="28" type="stmt" count="8"/>
277-
<line num="31" type="stmt" count="0"/>
278-
<line num="32" type="stmt" count="0"/>
279-
<line num="33" type="stmt" count="0"/>
280-
<line num="34" type="stmt" count="0"/>
281-
<line num="35" type="stmt" count="0"/>
282-
<line num="36" type="stmt" count="0"/>
283-
<line num="37" type="stmt" count="0"/>
284-
<line num="38" type="stmt" count="0"/>
285-
<line num="39" type="stmt" count="0"/>
286-
<line num="40" type="stmt" count="0"/>
287-
<metrics loc="43" ncloc="38" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="2" elements="15" coveredelements="2"/>
272+
<line num="12" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="2"/>
273+
<line num="16" type="stmt" count="2"/>
274+
<line num="23" type="method" name="getInstance" visibility="public" complexity="3" crap="3" count="12"/>
275+
<line num="27" type="stmt" count="12"/>
276+
<line num="28" type="stmt" count="10"/>
277+
<line num="31" type="stmt" count="4"/>
278+
<line num="32" type="stmt" count="4"/>
279+
<line num="33" type="stmt" count="4"/>
280+
<line num="34" type="stmt" count="4"/>
281+
<line num="35" type="stmt" count="4"/>
282+
<line num="36" type="stmt" count="4"/>
283+
<line num="37" type="stmt" count="4"/>
284+
<line num="38" type="stmt" count="4"/>
285+
<line num="39" type="stmt" count="4"/>
286+
<line num="40" type="stmt" count="4"/>
287+
<metrics loc="43" ncloc="38" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
288288
</file>
289289
<file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/NormalizersConfiguration.php">
290290
<class name="Nuxtifyts\PhpDto\Configuration\NormalizersConfiguration" namespace="Nuxtifyts\PhpDto\Configuration">
291-
<metrics complexity="6" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="0" elements="16" coveredelements="0"/>
291+
<metrics complexity="6" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="13" elements="16" coveredelements="14"/>
292292
</class>
293-
<line num="20" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
294-
<line num="28" type="stmt" count="0"/>
295-
<line num="35" type="method" name="getInstance" visibility="public" complexity="5" crap="30" count="0"/>
296-
<line num="39" type="stmt" count="0"/>
293+
<line num="20" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="2"/>
294+
<line num="28" type="stmt" count="2"/>
295+
<line num="35" type="method" name="getInstance" visibility="public" complexity="5" crap="5.01" count="3"/>
296+
<line num="39" type="stmt" count="3"/>
297297
<line num="40" type="stmt" count="0"/>
298-
<line num="43" type="stmt" count="0"/>
299-
<line num="44" type="stmt" count="0"/>
300-
<line num="45" type="stmt" count="0"/>
301-
<line num="46" type="stmt" count="0"/>
302-
<line num="47" type="stmt" count="0"/>
303-
<line num="51" type="stmt" count="0"/>
304-
<line num="52" type="stmt" count="0"/>
305-
<line num="54" type="stmt" count="0"/>
306-
<line num="58" type="stmt" count="0"/>
307-
<line num="59" type="stmt" count="0"/>
308-
<line num="60" type="stmt" count="0"/>
309-
<metrics loc="63" ncloc="54" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="0" elements="16" coveredelements="0"/>
298+
<line num="43" type="stmt" count="3"/>
299+
<line num="44" type="stmt" count="3"/>
300+
<line num="45" type="stmt" count="3"/>
301+
<line num="46" type="stmt" count="3"/>
302+
<line num="47" type="stmt" count="3"/>
303+
<line num="51" type="stmt" count="3"/>
304+
<line num="52" type="stmt" count="3"/>
305+
<line num="54" type="stmt" count="1"/>
306+
<line num="58" type="stmt" count="2"/>
307+
<line num="59" type="stmt" count="2"/>
308+
<line num="60" type="stmt" count="2"/>
309+
<metrics loc="63" ncloc="54" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="13" elements="16" coveredelements="14"/>
310310
</file>
311311
<file name="/Users/faroukbraik/Dev/php-dto/src/Configuration/SerializersConfiguration.php">
312312
<class name="Nuxtifyts\PhpDto\Configuration\SerializersConfiguration" namespace="Nuxtifyts\PhpDto\Configuration">
313-
<metrics complexity="6" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="17" coveredelements="0"/>
313+
<metrics complexity="6" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="14" elements="17" coveredelements="15"/>
314314
</class>
315-
<line num="21" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
316-
<line num="30" type="stmt" count="0"/>
317-
<line num="37" type="method" name="getInstance" visibility="public" complexity="5" crap="30" count="0"/>
318-
<line num="41" type="stmt" count="0"/>
315+
<line num="21" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="3"/>
316+
<line num="30" type="stmt" count="3"/>
317+
<line num="37" type="method" name="getInstance" visibility="public" complexity="5" crap="5.01" count="4"/>
318+
<line num="41" type="stmt" count="4"/>
319319
<line num="42" type="stmt" count="0"/>
320-
<line num="45" type="stmt" count="0"/>
321-
<line num="46" type="stmt" count="0"/>
322-
<line num="47" type="stmt" count="0"/>
323-
<line num="48" type="stmt" count="0"/>
324-
<line num="49" type="stmt" count="0"/>
325-
<line num="50" type="stmt" count="0"/>
326-
<line num="54" type="stmt" count="0"/>
327-
<line num="55" type="stmt" count="0"/>
328-
<line num="57" type="stmt" count="0"/>
329-
<line num="61" type="stmt" count="0"/>
330-
<line num="62" type="stmt" count="0"/>
331-
<line num="63" type="stmt" count="0"/>
332-
<metrics loc="66" ncloc="57" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="17" coveredelements="0"/>
320+
<line num="45" type="stmt" count="4"/>
321+
<line num="46" type="stmt" count="4"/>
322+
<line num="47" type="stmt" count="4"/>
323+
<line num="48" type="stmt" count="4"/>
324+
<line num="49" type="stmt" count="4"/>
325+
<line num="50" type="stmt" count="4"/>
326+
<line num="54" type="stmt" count="4"/>
327+
<line num="55" type="stmt" count="4"/>
328+
<line num="57" type="stmt" count="1"/>
329+
<line num="61" type="stmt" count="3"/>
330+
<line num="62" type="stmt" count="3"/>
331+
<line num="63" type="stmt" count="3"/>
332+
<metrics loc="66" ncloc="57" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="14" elements="17" coveredelements="15"/>
333333
</file>
334334
</package>
335335
<package name="Nuxtifyts\PhpDto\Contexts">
@@ -789,13 +789,13 @@
789789
</file>
790790
<file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DataConfigurationException.php">
791791
<class name="Nuxtifyts\PhpDto\Exceptions\DataConfigurationException" namespace="Nuxtifyts\PhpDto\Exceptions">
792-
<metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
792+
<metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/>
793793
</class>
794-
<line num="13" type="method" name="invalidBaseSerializers" visibility="public" complexity="1" crap="2" count="0"/>
795-
<line num="15" type="stmt" count="0"/>
796-
<line num="18" type="method" name="invalidBaseNormalizers" visibility="public" complexity="1" crap="2" count="0"/>
797-
<line num="20" type="stmt" count="0"/>
798-
<metrics loc="23" ncloc="23" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
794+
<line num="13" type="method" name="invalidBaseSerializers" visibility="public" complexity="1" crap="1" count="1"/>
795+
<line num="15" type="stmt" count="1"/>
796+
<line num="18" type="method" name="invalidBaseNormalizers" visibility="public" complexity="1" crap="1" count="1"/>
797+
<line num="20" type="stmt" count="1"/>
798+
<metrics loc="23" ncloc="23" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="4" coveredelements="4"/>
799799
</file>
800800
<file name="/Users/faroukbraik/Dev/php-dto/src/Exceptions/DataCreationException.php">
801801
<class name="Nuxtifyts\PhpDto\Exceptions\DataCreationException" namespace="Nuxtifyts\PhpDto\Exceptions">
@@ -1487,18 +1487,18 @@
14871487
<package name="Nuxtifyts\PhpDto\Support">
14881488
<file name="/Users/faroukbraik/Dev/php-dto/src/Support/Arr.php">
14891489
<class name="Nuxtifyts\PhpDto\Support\Arr" namespace="Nuxtifyts\PhpDto\Support">
1490-
<metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="0" elements="9" coveredelements="0"/>
1490+
<metrics complexity="4" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/>
14911491
</class>
1492-
<line num="14" type="method" name="getArray" visibility="public" complexity="2" crap="6" count="0"/>
1493-
<line num="16" type="stmt" count="0"/>
1494-
<line num="18" type="stmt" count="0"/>
1495-
<line num="25" type="method" name="isArrayOfClassStrings" visibility="public" complexity="2" crap="6" count="0"/>
1496-
<line num="27" type="stmt" count="0"/>
1497-
<line num="28" type="stmt" count="0"/>
1498-
<line num="29" type="stmt" count="0"/>
1499-
<line num="30" type="stmt" count="0"/>
1500-
<line num="31" type="stmt" count="0"/>
1501-
<metrics loc="34" ncloc="23" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="0" elements="9" coveredelements="0"/>
1492+
<line num="14" type="method" name="getArray" visibility="public" complexity="2" crap="2" count="3"/>
1493+
<line num="16" type="stmt" count="3"/>
1494+
<line num="18" type="stmt" count="3"/>
1495+
<line num="25" type="method" name="isArrayOfClassStrings" visibility="public" complexity="2" crap="2" count="2"/>
1496+
<line num="27" type="stmt" count="2"/>
1497+
<line num="28" type="stmt" count="2"/>
1498+
<line num="29" type="stmt" count="2"/>
1499+
<line num="30" type="stmt" count="2"/>
1500+
<line num="31" type="stmt" count="2"/>
1501+
<metrics loc="34" ncloc="23" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="7" elements="9" coveredelements="9"/>
15021502
</file>
15031503
<file name="/Users/faroukbraik/Dev/php-dto/src/Support/Passable.php">
15041504
<class name="Nuxtifyts\PhpDto\Support\Passable" namespace="Nuxtifyts\PhpDto\Support">
@@ -1529,6 +1529,6 @@
15291529
<metrics loc="47" ncloc="30" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="9" coveredelements="9"/>
15301530
</file>
15311531
</package>
1532-
<metrics files="67" loc="3687" ncloc="3107" classes="55" methods="147" coveredmethods="107" conditionals="0" coveredconditionals="0" statements="969" coveredstatements="835" elements="1116" coveredelements="942"/>
1532+
<metrics files="67" loc="3687" ncloc="3107" classes="55" methods="147" coveredmethods="115" conditionals="0" coveredconditionals="0" statements="969" coveredstatements="882" elements="1116" coveredelements="997"/>
15331533
</project>
15341534
</coverage>

tests/Unit/DataConfigurationTest.php

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
3+
namespace Nuxtifyts\PhpDto\Tests\Unit;
4+
5+
use Nuxtifyts\PhpDto\Configuration\DataConfiguration;
6+
use Nuxtifyts\PhpDto\Configuration\NormalizersConfiguration;
7+
use Nuxtifyts\PhpDto\Configuration\SerializersConfiguration;
8+
use Nuxtifyts\PhpDto\Exceptions\DataConfigurationException;
9+
use Nuxtifyts\PhpDto\Normalizers\ArrayNormalizer;
10+
use PHPUnit\Framework\Attributes\CoversClass;
11+
use PHPUnit\Framework\Attributes\Test;
12+
use Throwable;
13+
14+
#[CoversClass(NormalizersConfiguration::class)]
15+
#[CoversClass(SerializersConfiguration::class)]
16+
#[CoversClass(DataConfiguration::class)]
17+
#[CoversClass(DataConfigurationException::class)]
18+
final class DataConfigurationTest extends UnitCase
19+
{
20+
/**
21+
* @throws Throwable
22+
*/
23+
#[Test]
24+
public function it_can_create_an_instance_and_override_it_if_needed(): void
25+
{
26+
$config = DataConfiguration::getInstance();
27+
self::assertInstanceOf(DataConfiguration::class, $config);
28+
29+
$sameConfig = DataConfiguration::getInstance();
30+
self::assertSame($config, $sameConfig);
31+
32+
$newConfig = DataConfiguration::getInstance(forceCreate: true);
33+
self::assertNotSame($config, $newConfig);
34+
35+
self::resetConfig();
36+
}
37+
38+
/**
39+
* @throws Throwable
40+
*/
41+
#[Test]
42+
public function can_override_default_configuration(): void
43+
{
44+
$config = DataConfiguration::getInstance();
45+
46+
$baseNormalizers = $config->normalizers->baseNormalizers;
47+
48+
$config = DataConfiguration::getInstance([
49+
'normalizers' => [
50+
'baseNormalizers' => [
51+
ArrayNormalizer::class,
52+
],
53+
],
54+
], forceCreate: true);
55+
56+
self::assertNotEquals($baseNormalizers, $config->normalizers->baseNormalizers);
57+
self::assertEquals([ArrayNormalizer::class], $config->normalizers->baseNormalizers);
58+
59+
self::resetConfig();
60+
}
61+
62+
/**
63+
* @throws Throwable
64+
*/
65+
#[Test]
66+
public function will_throw_an_exception_if_invalid_normalizers_are_provided(): void
67+
{
68+
self::expectException(DataConfigurationException::class);
69+
70+
DataConfiguration::getInstance([
71+
'normalizers' => [
72+
'baseNormalizers' => [
73+
'invalidNormalizer',
74+
],
75+
],
76+
], forceCreate: true);
77+
}
78+
79+
/**
80+
* @throws Throwable
81+
*/
82+
#[Test]
83+
public function will_throw_an_exception_if_invalid_serializers_are_provided(): void
84+
{
85+
self::expectException(DataConfigurationException::class);
86+
87+
DataConfiguration::getInstance([
88+
'serializers' => [
89+
'baseSerializers' => [
90+
'invalidSerializer',
91+
],
92+
],
93+
], forceCreate: true);
94+
}
95+
}

tests/Unit/Support/ArrTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ final class ArrTest extends UnitCase
2020
#[Test]
2121
#[DataProvider('get_arr_provider')]
2222
#[DataProvider('is_array_of_class_strings_provider')]
23-
public function test_arr_helper_functions(
23+
public function arr_helper_functions(
2424
string $functionName,
2525
array $parameters,
2626
mixed $expected

0 commit comments

Comments
 (0)