1
0
Fork 0
mirror of https://github.com/archtechx/money.git synced 2025-12-12 03:14:03 +00:00

Add L10 support (#20)

* Add L10 support

* Upgrade phpstan

* Set `archtechx/helpers` version

* Fix PHPStan errors

* Try using older PHPStan version

* Revert PHPStan downgrade

* Delete immutability tests

* Bring back immutability tests

* Correct typehint

* Update immutability tests

* Remove L8 support

* Allow PHP 8.0, run tests for 8.0 as well

* Swap Laravel 9 & 10

* Add setup-php step

* Revert formatting changes

* Fix formatting

* Revert adding setup-php

* Try adding setup-php

* Change formatting

* Remove PHP 8.0

* Fix formatting
This commit is contained in:
lukinovec 2023-02-16 17:06:45 +01:00 committed by GitHub
parent b1b02f459d
commit b50e49358a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 16 deletions

View file

@ -16,10 +16,14 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
laravel: [8, 9]
laravel: [9, 10]
steps:
- uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
- name: Install composer dependencies
run: composer require "illuminate/support:^${{ matrix.laravel }}.0"
- name: Run tests

View file

@ -24,16 +24,16 @@
}
},
"require": {
"php": "^8.0",
"illuminate/support": "^8.0|^9.0",
"archtechx/helpers": "*"
"php": "^8.1",
"illuminate/support": "^9.0|^10.0",
"archtechx/helpers": "^0.3.1"
},
"require-dev": {
"orchestra/testbench": "^6.9|^7.0",
"pestphp/pest": "^1.10",
"phpstan/phpstan": "^0.12.92",
"pestphp/pest-plugin-laravel": "^1.1",
"nunomaduro/larastan": "^0.7.10"
"orchestra/testbench": "^7.19|^8.0",
"pestphp/pest": "^1.10|^2.0",
"phpstan/phpstan": "^1.9.8",
"pestphp/pest-plugin-laravel": "^1.1|^2.0",
"nunomaduro/larastan": "^2.4"
},
"extra": {
"laravel": {

View file

@ -128,7 +128,10 @@ trait RegistersCurrencies
}
if (class_exists($currency) && (new ReflectionClass($currency))->isSubclassOf(Currency::class)) {
return (new $currency)->code();
/** @var Currency $currency * */
$currency = new $currency;
return $currency->code();
}
throw new InvalidCurrencyException(

View file

@ -8,6 +8,7 @@ use ArchTech\Money\Exceptions\InvalidCurrencyException;
use Illuminate\Contracts\Support\Arrayable;
use JsonSerializable;
/** @implements Arrayable<string, string|int|float> */
class Currency implements Arrayable, JsonSerializable
{
/** Code of the currency (e.g. 'CZK'). */

View file

@ -8,6 +8,7 @@ use Illuminate\Contracts\Support\Arrayable;
use JsonSerializable;
use Livewire\Wireable;
/** @implements Arrayable<string, string|int> */
final class Money implements JsonSerializable, Arrayable, Wireable
{
protected int $value;

View file

@ -7,19 +7,23 @@ use ArchTech\Money\Tests\Currencies\CZK;
use ArchTech\Money\Tests\Currencies\EUR;
test('Money value is immutable', function () {
pest()->expectError();
$money = money(100);
$money->value = 200;
try {
$money->value = 200;
} catch (Throwable $th) {
expect($th)->toBeInstanceOf(Error::class);
}
});
test('Money currency is immutable', function () {
pest()->expectError();
$money = money(100);
$money->currency = 'EUR';
try {
$money->currency = 'EUR';
} catch (Throwable $th) {
expect($th)->toBeInstanceOf(Error::class);
}
});
test('money can be created from a decimal value', function () {