Skip to content

Commit f234ba4

Browse files
committed
Update namespace for interfaces and refactor constants
Moved interface files to Contracts directory for better organization. Refactored magic numbers in codes to use constants from new FiguresInterface for improved readability. Test cases and documentation were updated accordingly. Signed-off-by: Marcel Strahl <info@marcel-strahl.de>
1 parent 9d56410 commit f234ba4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+202
-87
lines changed

.github/workflows/ci.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: "Checkout"
13-
uses: "actions/checkout@v3"
13+
uses: "actions/checkout@v4"
1414
with:
1515
fetch-depth: 2
1616

@@ -20,7 +20,7 @@ jobs:
2020
php-version: "8.1"
2121

2222
- name: "Cache composer packages"
23-
uses: "actions/cache@v3"
23+
uses: "actions/cache@v4"
2424
with:
2525
path: "~/.composer/cache"
2626
key: "php-composer-locked-${{ hashFiles('composer.lock') }}"
@@ -43,7 +43,7 @@ jobs:
4343
runs-on: ubuntu-latest
4444
steps:
4545
- name: "Checkout"
46-
uses: "actions/checkout@v3"
46+
uses: "actions/checkout@v4"
4747
with:
4848
fetch-depth: 2
4949

@@ -53,7 +53,7 @@ jobs:
5353
php-version: "8.2"
5454

5555
- name: "Cache composer packages"
56-
uses: "actions/cache@v3"
56+
uses: "actions/cache@v4"
5757
with:
5858
path: "~/.composer/cache"
5959
key: "php-composer-locked-${{ hashFiles('composer.lock') }}"
@@ -76,7 +76,7 @@ jobs:
7676
runs-on: ubuntu-latest
7777
steps:
7878
- name: "Checkout"
79-
uses: "actions/checkout@v3"
79+
uses: "actions/checkout@v4"
8080
with:
8181
fetch-depth: 2
8282

@@ -86,7 +86,7 @@ jobs:
8686
php-version: "8.3"
8787

8888
- name: "Cache composer packages"
89-
uses: "actions/cache@v3"
89+
uses: "actions/cache@v4"
9090
with:
9191
path: "~/.composer/cache"
9292
key: "php-composer-locked-${{ hashFiles('composer.lock') }}"

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ This Changelog refers to all changes since v5.0.0
1313

1414
# v5.x.x
1515
+ Upgrade of dependencies, removal of PHPStan as I focused more on Psalm.
16-
+ All test classes are now final and use attributes instead of annotations.
16+
+ All test classes are now final and use attributes instead of annotations.
17+
+ Using InfectionPHP to check the effectiveness of the test set.

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2018 Marcel Strahl
3+
Copyright (c) 2018-2024 Marcel Strahl
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

composer.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
},
1818
"require-dev": {
1919
"friendsofphp/php-cs-fixer": "^3.51",
20+
"infection/infection": "^0.27.10",
21+
"phpstan/extension-installer": "*",
2022
"phpunit/phpunit": "^10.5 | ^11.0",
2123
"psalm/plugin-phpunit": "^0.18",
2224
"squizlabs/php_codesniffer": "^3.9",
@@ -29,7 +31,10 @@
2931
}
3032
},
3133
"config": {
32-
"sort-packages": true
34+
"sort-packages": true,
35+
"allow-plugins": {
36+
"infection/extension-installer": true
37+
}
3338
},
3439
"prefer-stable": true,
3540
"scripts": {
@@ -38,6 +43,7 @@
3843
"cs-fix": "php-cs-fixer --using-cache=no fix",
3944
"test": "export XDEBUG_MODE=coverage && vendor/bin/phpunit --configuration phpunit.xml",
4045
"psalm": "vendor/bin/psalm --no-cache",
46+
"infection": "infection --threads=4",
4147
"check": [
4248
"@phpcs",
4349
"@cs-check",

docs/price-formatter.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,7 @@ In order to enter a value from a price object into the price formatter, the Cent
3232
```php
3333
<?php
3434

35-
use MarcelStrahl\PriceCalculator\Helpers\View\PriceFormatter;
36-
use MarcelStrahl\PriceCalculator\Facade\UnitConverter;
37-
use MarcelStrahl\PriceCalculator\Factory\ConverterFactoryInterface;
38-
use MarcelStrahl\PriceCalculator\Helpers\Entity\Price;
39-
use function var_dump;
35+
use MarcelStrahl\PriceCalculator\Contracts\Factory\ConverterFactoryInterface;use MarcelStrahl\PriceCalculator\Facade\UnitConverter;use MarcelStrahl\PriceCalculator\Helpers\Entity\Price;use MarcelStrahl\PriceCalculator\Helpers\View\PriceFormatter;
4036

4137
$calculatedResultInCent = Price::create(1010);
4238

docs/unit-converter.md

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ The unit converter has a method:
1717
This class has a facade for easy use of the unit converter.
1818

1919
Use with facade:
20+
2021
```php
21-
use MarcelStrahl\PriceCalculator\Factory\ConverterFactoryInterface;
22-
use MarcelStrahl\PriceCalculator\Facade\UnitConverter;
22+
use MarcelStrahl\PriceCalculator\Contracts\Factory\ConverterFactoryInterface;use MarcelStrahl\PriceCalculator\Facade\UnitConverter;
2323

2424
$converter = UnitConverter::getConverter();
2525

@@ -28,10 +28,9 @@ $euroToCentConverter = $converter->convert(ConverterFactoryInterface::EURO_TO_CE
2828
```
2929

3030
Use without facade:
31+
3132
```php
32-
use MarcelStrahl\PriceCalculator\Factory\ConverterFactoryInterface;
33-
use MarcelStrahl\PriceCalculator\UnitConverter;
34-
use MarcelStrahl\PriceCalculator\Factory\Converter;
33+
use MarcelStrahl\PriceCalculator\Contracts\Factory\ConverterFactoryInterface;use MarcelStrahl\PriceCalculator\Factory\Converter;use MarcelStrahl\PriceCalculator\UnitConverter;
3534

3635
$converter = new UnitConverter(new Converter());
3736

infection.json5

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"$schema": "vendor/infection/infection/resources/schema.json",
3+
"source": {
4+
"directories": [
5+
"src"
6+
],
7+
"excludes": [
8+
"src/Helpers/Mathematics.php"
9+
]
10+
},
11+
"mutators": {
12+
"@default": true,
13+
"BCMath": {
14+
"settings": {
15+
"bcdiv": false,
16+
"bcmul": false,
17+
"bcadd": false,
18+
"bcsub": false
19+
}
20+
},
21+
},
22+
"logs": {
23+
"html": "infection.html",
24+
"summary": "summary.log",
25+
"json": "infection-log.json",
26+
"perMutator": "per-mutator.md",
27+
"github": true,
28+
"stryker": {
29+
"badge": "master"
30+
},
31+
"summaryJson": "summary.json"
32+
},
33+
}

phpunit.xml

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
<exclude>
2424
<directory>./tests</directory>
2525
<directory>./vendor</directory>
26+
<file>./src/Contracts/MathematicsInterface.php</file>
27+
<file>./src/Helpers/Mathematics.php</file>
2628
</exclude>
2729
</source>
2830
</phpunit>

psalm.xml

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
<directory name="src"/>
1313
<ignoreFiles>
1414
<directory name="vendor"/>
15+
<file name="src/Helpers/Mathematics.php"/>
16+
<file name="src/Contracts/MathematicsInterface.php"/>
1517
</ignoreFiles>
1618
</projectFiles>
1719
<plugins>

readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
### Price calculator
22

3-
[![Build Status](https://travis-ci.org/Dropelikeit/PriceCalculator.svg?branch=master)](https://travis-ci.org/Dropelikeit/PriceCalculator)
3+
![Workflow status](https://github.com/Dropelikeit/PriceCalculator/actions/workflows/ci.yml/badge.svg)
44
[![Coverage Status](https://coveralls.io/repos/github/Dropelikeit/PriceCalculator/badge.svg?branch=master)](https://coveralls.io/github/Dropelikeit/PriceCalculator?branch=master)
55
[![Monthly Downloads](https://poser.pugx.org/marcel-strahl/price-calculator/d/monthly)](https://packagist.org/packages/marcel-strahl/price-calculator)
66
[![Daily Downloads](https://poser.pugx.org/marcel-strahl/price-calculator/d/daily)](https://packagist.org/packages/marcel-strahl/price-calculator)

src/Helpers/Converter/ConverterInterface.php src/Contracts/Converter/ConverterInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Helpers\Converter;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Converter;
66

77
/**
88
* @author Marcel Strahl <info@marcel-strahl.de>

src/Factory/ConverterFactoryInterface.php src/Contracts/Factory/ConverterFactoryInterface.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Factory;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Factory;
66

7+
use MarcelStrahl\PriceCalculator\Contracts\Converter\ConverterInterface;
78
use MarcelStrahl\PriceCalculator\Exceptions\PriceCalculatorFactoryException;
8-
use MarcelStrahl\PriceCalculator\Helpers\Converter\ConverterInterface;
99

1010
/**
1111
* @author Marcel Strahl <info@marcel-strahl.de>

src/PriceCalculatorInterface.php src/Contracts/PriceCalculatorInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator;
5+
namespace MarcelStrahl\PriceCalculator\Contracts;
66

77
use MarcelStrahl\PriceCalculator\Helpers\Entity\Price;
88

src/Service/DiscountCalculatorInterface.php src/Contracts/Service/DiscountCalculatorInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Service;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Service;
66

77
use MarcelStrahl\PriceCalculator\Helpers\Entity\Discount;
88
use MarcelStrahl\PriceCalculator\Helpers\Entity\Price;

src/Service/VatCalculatorInterface.php src/Contracts/Service/VatCalculatorInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Service;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Service;
66

77
use MarcelStrahl\PriceCalculator\Helpers\Entity\Price;
88

src/Helpers/Types/DiscountInterface.php src/Contracts/Type/DiscountInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Helpers\Types;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Type;
66

77
/**
88
* Interface Discount
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace MarcelStrahl\PriceCalculator\Contracts\Type;
5+
6+
interface FiguresInterface
7+
{
8+
public const INTEGER_ZERO = 0;
9+
public const INTEGER_ONE = 1;
10+
public const INTEGER_TWO = 2;
11+
public const INTEGER_HUNDRED = 100;
12+
13+
public const FLOAT_ZERO = .0;
14+
15+
public const STRING_HUNDRED = '100';
16+
}

src/Helpers/Types/VatInterface.php src/Contracts/Type/VatInterface.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Helpers\Types;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\Type;
66

77
/**
88
* @author Marcel Strahl <info@marcel-strahl.de>

src/UnitConverterInterface.php src/Contracts/UnitConverterInterface.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator;
5+
namespace MarcelStrahl\PriceCalculator\Contracts;
66

7-
use MarcelStrahl\PriceCalculator\Helpers\Converter\ConverterInterface;
7+
use MarcelStrahl\PriceCalculator\Contracts\Converter\ConverterInterface;
88

99
/**
1010
* @author Marcel Strahl <info@marcel-strahl.de>

src/Helpers/View/Formatter.php src/Contracts/View/Formatter.php

+1-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
declare(strict_types=1);
44

5-
namespace MarcelStrahl\PriceCalculator\Helpers\View;
5+
namespace MarcelStrahl\PriceCalculator\Contracts\View;
66

77
/**
8-
* Interface Formatter
98
* @author Marcel Strahl <info@marcel-strahl.de>
10-
* @package Src\Helpers\View
119
*/
1210
interface Formatter
1311
{

src/Facade/PriceCalculator.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace MarcelStrahl\PriceCalculator\Facade;
66

7+
use MarcelStrahl\PriceCalculator\Contracts\PriceCalculatorInterface;
78
use MarcelStrahl\PriceCalculator\PriceCalculator as PriceCalculatorService;
8-
use MarcelStrahl\PriceCalculator\PriceCalculatorInterface;
99

1010
/**
1111
* @author Marcel Strahl <info@marcel-strahl.de>

src/Facade/VatCalculator.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace MarcelStrahl\PriceCalculator\Facade;
66

7+
use MarcelStrahl\PriceCalculator\Contracts\PriceCalculatorInterface;
78
use MarcelStrahl\PriceCalculator\Helpers\Entity\Vat;
8-
use MarcelStrahl\PriceCalculator\PriceCalculatorInterface;
99
use MarcelStrahl\PriceCalculator\Service\VatCalculator as VatCalculatorService;
1010

1111
/**

src/Factory/Converter.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
namespace MarcelStrahl\PriceCalculator\Factory;
66

7+
use MarcelStrahl\PriceCalculator\Contracts\Converter\ConverterInterface;
8+
use MarcelStrahl\PriceCalculator\Contracts\Factory\ConverterFactoryInterface;
79
use MarcelStrahl\PriceCalculator\Exceptions\PriceCalculatorFactoryException;
8-
use MarcelStrahl\PriceCalculator\Helpers\Converter\ConverterInterface;
910
use MarcelStrahl\PriceCalculator\Helpers\Converter\Currencies\CentToEuro;
1011
use MarcelStrahl\PriceCalculator\Helpers\Converter\Currencies\EuroToCent;
1112

src/Helpers/Converter/Currencies/CentToEuro.php

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
namespace MarcelStrahl\PriceCalculator\Helpers\Converter\Currencies;
66

7-
use MarcelStrahl\PriceCalculator\Helpers\Converter\ConverterInterface;
7+
use MarcelStrahl\PriceCalculator\Contracts\Converter\ConverterInterface;
8+
use MarcelStrahl\PriceCalculator\Contracts\Type\FiguresInterface;
89

910
/**
1011
* @author Marcel Strahl <info@marcel-strahl.de>
@@ -17,17 +18,17 @@ class CentToEuro implements ConverterInterface
1718
public function convert(float $amount): float
1819
{
1920
if ($this->isEmpty($amount)) {
20-
return .0;
21+
return FiguresInterface::FLOAT_ZERO;
2122
}
2223

23-
return (float) bcdiv((string) $amount, '100', 2);
24+
return (float) bcdiv((string) $amount, FiguresInterface::STRING_HUNDRED, FiguresInterface::INTEGER_TWO);
2425
}
2526

2627
/**
2728
* {@inheritdoc}
2829
*/
2930
public function isEmpty(float $amount): bool
3031
{
31-
return empty($amount) || $amount < 0;
32+
return empty($amount);
3233
}
3334
}

0 commit comments

Comments
 (0)