# Testowanie cmsPRO ## Szybki start ```bash # Instalacja PHPUnit (jednorazowo) composer install # Uruchomienie testów ./vendor/bin/phpunit # Konkretny plik ./vendor/bin/phpunit tests/Unit/Domain/Settings/SettingsRepositoryTest.php # Konkretny test ./vendor/bin/phpunit --filter testAllSettingsReturnsMappedArray ``` ## Aktualny stan ```text Testy jednostkowe dla Domain\ (Faza 2 DDD) ``` ## Konfiguracja - **PHPUnit 10** via `composer` - **Bootstrap:** `tests/bootstrap.php` - **Config:** `phpunit.xml` ## Struktura testów ``` tests/ ├── bootstrap.php ← autoloader + stuby (CacheHandler, S) └── Unit/ └── Domain/ ├── Languages/LanguagesRepositoryTest.php ├── Settings/SettingsRepositoryTest.php └── User/UserRepositoryTest.php ``` ## Stuby (bootstrap.php) - `\Shared\Cache\CacheHandler` — in-memory stub z `fetch()`/`store()`/`delete()`/`reset()` - `\S` — stub z `delete_cache()`, `htacces()`, `get_domain()`, `send_email()` - `medoo` — mockowany przez PHPUnit (`$this->createMock(\medoo::class)`) ## Dodawanie nowych testów 1. Plik w `tests/Unit/Domain//Test.php`. 2. Rozszerz `PHPUnit\Framework\TestCase`. 3. Nazwy metod zaczynaj od `test`. 4. Wzorzec AAA: Arrange, Act, Assert. ## Mockowanie Medoo ```php $db = $this->createMock(\medoo::class); $db->method('get')->willReturn(['id' => 1]); $repo = new SettingsRepository($db); $value = $repo->visitCounter(); $this->assertSame('1', $value); ```