mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 20:32:15 +00:00
Removed PHP5 (no longer supported) Renamed PHP7 to PHP - consistent with other kata Added the same helpers as other PHP Kata Updated the code to PHP7.2+ standard Didn't change GildedRose updateQuality method Updated GildedRoseTest (still failing) Added ApprovalTest (passing) - same text file as texttests / ThirtyDays / stdout.gr (only renamed).
132 lines
3.1 KiB
Markdown
132 lines
3.1 KiB
Markdown
# GildedRose Kata - PHP Version
|
|
|
|
See the [top level readme](../README.md) for general information about this exercise. This is the PHP version of the
|
|
GildedRose Kata.
|
|
|
|
## Installation
|
|
|
|
The kata uses:
|
|
|
|
- PHP 7.2+
|
|
- [Composer](https://getcomposer.org)
|
|
|
|
Recommended:
|
|
- [Git](https://git-scm.com/downloads)
|
|
|
|
Clone the repository
|
|
|
|
```sh
|
|
git clone git@github.com:emilybache/GildedRose-Refactoring-Kata.git
|
|
```
|
|
|
|
or
|
|
|
|
```shell script
|
|
git clone https://github.com/emilybache/GildedRose-Refactoring-Kata.git
|
|
```
|
|
|
|
Install all the dependencies using composer
|
|
|
|
```shell script
|
|
cd ./GildedRose-Refactoring-Kata/php
|
|
composer install
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
The project uses composer to install:
|
|
|
|
- [PHPUnit](https://phpunit.de/)
|
|
- [ApprovalTests.PHP](https://github.com/approvals/ApprovalTests.php)
|
|
- [PHPStan](https://github.com/phpstan/phpstan)
|
|
- [Easy Coding Standard (ECS)](https://github.com/symplify/easy-coding-standard)
|
|
- [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer/wiki)
|
|
|
|
## Folders
|
|
|
|
- `src` - contains the two classes:
|
|
- `Item.php` - this class should not be changed.
|
|
- `GildedRose.php` - this class needs to be refactored, and the new feature added.
|
|
- `tests` - contains the tests
|
|
- `GildedRoseTest.php` - Starter test.
|
|
- `ApprovalTest.php` - alternative approval test (set to 30 days)
|
|
- `Fixture`
|
|
- `texttest_fixture.php` used by the approval test, or can be run from the command line
|
|
|
|
## Testing
|
|
|
|
PHPUnit is pre-configured to run tests. PHPUnit can be run using a composer script. To run the unit tests, from the
|
|
root of the PHP project run:
|
|
|
|
```shell script
|
|
composer test
|
|
```
|
|
|
|
On Windows a batch file has been created, similar to an alias on Linux/Mac (e.g. `alias pu="composer test"`), the same
|
|
PHPUnit `composer test` can be run:
|
|
|
|
```shell script
|
|
pu
|
|
```
|
|
|
|
### Tests with Coverage Report
|
|
|
|
To run all test and generate a html coverage report run:
|
|
|
|
```shell script
|
|
composer test-coverage
|
|
```
|
|
|
|
The test-coverage report will be created in /builds, it is best viewed by opening **index.html** in your browser.
|
|
|
|
## Code Standard
|
|
|
|
Easy Coding Standard (ECS) is used to check for style and code standards, **PSR-12** is used. The current code is not
|
|
upto standard!
|
|
|
|
### Check Code
|
|
|
|
To check code, but not fix errors:
|
|
|
|
```shell script
|
|
composer check-cs
|
|
```
|
|
|
|
On Windows a batch file has been created, similar to an alias on Linux/Mac (e.g. `alias cc="composer check-cs"`), the
|
|
same PHPUnit `composer check-cs` can be run:
|
|
|
|
```shell script
|
|
cc
|
|
```
|
|
|
|
### Fix Code
|
|
|
|
There are may code fixes automatically provided by ECS, if advised to run --fix, the following script can be run:
|
|
|
|
```shell script
|
|
composer fix-cs
|
|
```
|
|
|
|
On Windows a batch file has been created, similar to an alias on Linux/Mac (e.g. `alias fc="composer fix-cs"`), the same
|
|
PHPUnit `composer fix-cs` can be run:
|
|
|
|
```shell script
|
|
fc
|
|
```
|
|
|
|
## Static Analysis
|
|
|
|
PHPStan is used to run static analysis checks:
|
|
|
|
```shell script
|
|
composer phpstan
|
|
```
|
|
|
|
On Windows a batch file has been created, similar to an alias on Linux/Mac (e.g. `alias ps="composer phpstan"`), the
|
|
same PHPUnit `composer phpstan` can be run:
|
|
|
|
```shell script
|
|
ps
|
|
```
|
|
|
|
**Happy coding**! |