Files
shopPRO/TESTING.md

249 lines
5.4 KiB
Markdown

# Testowanie shopPRO
## Szybki start
### Pelny zestaw testow
```bash
composer test
```
Alternatywnie (Windows):
```bash
./test.ps1
./test.bat
./test-simple.bat
./test-debug.bat
```
Alternatywnie (Git Bash):
```bash
./test.sh
```
### Konkretny plik testowy
```bash
./test.ps1 tests/Unit/Domain/Product/ProductRepositoryTest.php
./test.ps1 tests/Unit/admin/Controllers/ArticlesControllerTest.php
```
### Konkretny test (`--filter`)
```bash
./test.ps1 --filter testGetQuantityReturnsCorrectValue
```
## Aktualny stan suite
Ostatnio zweryfikowano: 2026-02-10
```text
OK (82 tests, 181 assertions)
```
## Struktura testow
```text
tests/
|-- bootstrap.php
|-- Unit/
| |-- Domain/
| | |-- Article/ArticleRepositoryTest.php
| | |-- Banner/BannerRepositoryTest.php
| | |-- Cache/CacheRepositoryTest.php
| | |-- Dictionaries/DictionariesRepositoryTest.php
| | |-- Product/ProductRepositoryTest.php
| | |-- Settings/SettingsRepositoryTest.php
| | `-- User/UserRepositoryTest.php
| `-- admin/
| `-- Controllers/
| |-- ArticlesControllerTest.php
| |-- DictionariesControllerTest.php
| |-- ProductArchiveControllerTest.php
| |-- SettingsControllerTest.php
| `-- UsersControllerTest.php
`-- Integration/
```
## Tryby uruchamiania
### 1. TestDox (czytelna lista)
```bash
./test.bat
```
Uruchamia:
```bash
C:\xampp\php\php.exe phpunit.phar --testdox
```
### 2. Standard (kropki)
```bash
./test-simple.bat
```
Uruchamia:
```bash
C:\xampp\php\php.exe phpunit.phar
```
### 3. Debug (pelne logowanie)
```bash
./test-debug.bat
```
Uruchamia:
```bash
C:\xampp\php\php.exe phpunit.phar --debug
```
### 4. PowerShell (najbardziej niezawodne)
```bash
./test.ps1
```
- najpierw probuje `php` z PATH
- jesli brak, probuje m.in. `C:\xampp\php\php.exe`
- zawsze dodaje `--do-not-cache-result`
## Interpretacja wynikow
```text
. = test przeszedl
E = error (blad wykonania)
F = failure (niezgodna asercja)
```
Przyklad sukcesu:
```text
................................................................. 65 / 82 ( 79%)
................. 82 / 82 (100%)
OK (82 tests, 181 assertions)
```
## Dodawanie nowych testow
1. Dodaj plik w odpowiednim module, np. `tests/Unit/Domain/<Module>/<Class>Test.php`.
2. Rozszerz `PHPUnit\Framework\TestCase`.
3. Nazwy metod zaczynaj od `test`.
4. Trzymaj sie wzorca AAA: Arrange, Act, Assert.
## Mockowanie (przyklad)
```php
$mockDb = $this->createMock(\medoo::class);
$mockDb->method('get')->willReturn(42);
$repo = new ProductRepository($mockDb);
$value = $repo->getQuantity(123);
$this->assertEquals(42, $value);
```
## Przydatne informacje
- Konfiguracja PHPUnit: `phpunit.xml`
- Bootstrap testow: `tests/bootstrap.php`
- Dodatkowy opis: `tests/README.md`
## Aktualizacja suite
Ostatnio zweryfikowano: 2026-02-12
```text
OK (119 tests, 256 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/User/UserRepositoryTest.php` (25 testow: CRUD, logon, 2FA verify/send, checkLogin, updateById)
- `tests/Unit/admin/Controllers/UsersControllerTest.php` (12 testow: kontrakty + normalizeUser)
Aktualizacja po migracji widokow Users (2026-02-12):
```text
OK (120 tests, 262 assertions)
```
## Aktualizacja suite (finalizacja Users)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (120 tests, 262 assertions)
```
Aktualizacja po migracji Languages (2026-02-12):
```text
OK (130 tests, 301 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Languages/LanguagesRepositoryTest.php`
- `tests/Unit/admin/Controllers/LanguagesControllerTest.php`
## Aktualizacja suite (release 0.254)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (130 tests, 301 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Languages/LanguagesRepositoryTest.php`
- `tests/Unit/admin/Controllers/LanguagesControllerTest.php`
## Aktualizacja suite (release 0.255)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (130 tests, 303 assertions)
```
## Aktualizacja suite (release 0.256)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (141 tests, 336 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Layouts/LayoutsRepositoryTest.php`
- `tests/Unit/admin/Controllers/LayoutsControllerTest.php`
Zaktualizowane testy 2026-02-12:
- `tests/Unit/Domain/Languages/LanguagesRepositoryTest.php` (defaultLanguageId)
- `tests/Unit/admin/Controllers/ArticlesControllerTest.php` (konstruktor + LayoutsRepository)
## Aktualizacja suite (release 0.257)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (150 tests, 372 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Newsletter/NewsletterRepositoryTest.php`
- `tests/Unit/admin/Controllers/NewsletterControllerTest.php`
## Aktualizacja suite (release 0.258)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (150 tests, 372 assertions)
```
## Aktualizacja suite (release 0.259)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (158 tests, 397 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Scontainers/ScontainersRepositoryTest.php`
- `tests/Unit/admin/Controllers/ScontainersControllerTest.php`
## Aktualizacja suite (release 0.260)
Ostatnio zweryfikowano: 2026-02-12
```text
OK (165 tests, 424 assertions)
```
Nowe testy dodane 2026-02-12:
- `tests/Unit/Domain/Article/ArticleRepositoryTest.php` (rozszerzenie o testy `restore`, `deletePermanently`, `listArchivedForAdmin`)
- `tests/Unit/admin/Controllers/ArticlesArchiveControllerTest.php`