- Email notyfikacji zawiera numer zamówienia, klienta, datę, kwotę - Order joby (send_order, sync_payment, sync_status) ponawiane w nieskończoność co 30 min - Rozróżnienie PONAWIANY vs TRWAŁY BŁĄD w emailu - Cleanup stuck jobów po udanym wysłaniu zamówienia - +2 testy infinite retry w CronJobRepositoryTest Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
132 lines
4.2 KiB
Markdown
132 lines
4.2 KiB
Markdown
# Testowanie shopPRO
|
|
|
|
## Szybki start
|
|
|
|
```bash
|
|
# Pelny suite (PowerShell — rekomendowane)
|
|
./test.ps1
|
|
|
|
# Konkretny plik
|
|
./test.ps1 tests/Unit/Domain/Product/ProductRepositoryTest.php
|
|
|
|
# Konkretny test
|
|
./test.ps1 --filter testGetQuantityReturnsCorrectValue
|
|
|
|
# Alternatywne
|
|
composer test # standard
|
|
./test.bat # testdox (czytelna lista)
|
|
./test-simple.bat # kropki
|
|
./test-debug.bat # debug
|
|
./test.sh # Git Bash
|
|
```
|
|
|
|
## Aktualny stan
|
|
|
|
```text
|
|
OK (820 tests, 2277 assertions)
|
|
```
|
|
|
|
Zweryfikowano: 2026-03-19 (ver. 0.342)
|
|
|
|
## Konfiguracja
|
|
|
|
- **PHPUnit 9.6** via `phpunit.phar`
|
|
- **Bootstrap:** `tests/bootstrap.php`
|
|
- **Config:** `phpunit.xml`
|
|
|
|
## Struktura testow
|
|
|
|
```
|
|
tests/
|
|
|-- bootstrap.php
|
|
|-- stubs/
|
|
| |-- CacheHandler.php (inline w bootstrap)
|
|
| |-- Helpers.php (Shared\Helpers\Helpers stub)
|
|
| `-- ShopProduct.php (shop\Product stub)
|
|
|-- Unit/
|
|
| |-- Domain/
|
|
| | |-- Article/ArticleRepositoryTest.php
|
|
| | |-- Attribute/AttributeRepositoryTest.php
|
|
| | |-- Banner/BannerRepositoryTest.php
|
|
| | |-- Basket/BasketCalculatorTest.php
|
|
| | |-- Cache/CacheRepositoryTest.php
|
|
| | |-- Category/CategoryRepositoryTest.php
|
|
| | |-- Coupon/CouponRepositoryTest.php
|
|
| | |-- CronJob/CronJobTypeTest.php
|
|
| | |-- CronJob/CronJobRepositoryTest.php
|
|
| | |-- CronJob/CronJobProcessorTest.php
|
|
| | |-- Dictionaries/DictionariesRepositoryTest.php
|
|
| | |-- Integrations/IntegrationsRepositoryTest.php
|
|
| | |-- Languages/LanguagesRepositoryTest.php
|
|
| | |-- Layouts/LayoutsRepositoryTest.php
|
|
| | |-- Newsletter/NewsletterRepositoryTest.php
|
|
| | |-- Pages/PagesRepositoryTest.php
|
|
| | |-- PaymentMethod/PaymentMethodRepositoryTest.php
|
|
| | |-- Producer/ProducerRepositoryTest.php
|
|
| | |-- Product/ProductRepositoryTest.php
|
|
| | |-- ProductSet/ProductSetRepositoryTest.php
|
|
| | |-- Promotion/PromotionRepositoryTest.php
|
|
| | |-- Settings/SettingsRepositoryTest.php
|
|
| | |-- ShopStatus/ShopStatusRepositoryTest.php
|
|
| | |-- Transport/TransportRepositoryTest.php
|
|
| | |-- Update/UpdateRepositoryTest.php
|
|
| | `-- User/UserRepositoryTest.php
|
|
| |-- Shared/
|
|
| | `-- Security/
|
|
| | `-- CsrfTokenTest.php
|
|
| `-- admin/
|
|
| `-- Controllers/
|
|
| |-- ArticlesControllerTest.php
|
|
| |-- DictionariesControllerTest.php
|
|
| |-- IntegrationsControllerTest.php
|
|
| |-- ProductArchiveControllerTest.php
|
|
| |-- SettingsControllerTest.php
|
|
| |-- ShopAttributeControllerTest.php
|
|
| |-- ShopCategoryControllerTest.php
|
|
| |-- ShopCouponControllerTest.php
|
|
| |-- ShopPaymentMethodControllerTest.php
|
|
| |-- ShopProducerControllerTest.php
|
|
| |-- ShopProductControllerTest.php
|
|
| |-- ShopProductSetsControllerTest.php
|
|
| |-- ShopPromotionControllerTest.php
|
|
| |-- ShopStatusesControllerTest.php
|
|
| |-- ShopTransportControllerTest.php
|
|
| `-- UsersControllerTest.php
|
|
| |-- front/Controllers/
|
|
| | `-- ShopBasketControllerTest.php
|
|
| `-- api/
|
|
| |-- ApiRouterTest.php
|
|
| `-- Controllers/
|
|
| |-- OrdersApiControllerTest.php
|
|
| |-- ProductsApiControllerTest.php
|
|
| `-- DictionariesApiControllerTest.php
|
|
`-- Integration/ (puste — zarezerwowane)
|
|
```
|
|
|
|
## Dodawanie nowych testow
|
|
|
|
1. Plik w `tests/Unit/Domain/<Module>/<Class>Test.php`, `tests/Unit/admin/Controllers/<Class>Test.php` lub `tests/Unit/api/Controllers/<Class>Test.php`.
|
|
2. Rozszerz `PHPUnit\Framework\TestCase`.
|
|
3. Nazwy metod zaczynaj od `test`.
|
|
4. Wzorzec AAA: Arrange, Act, Assert.
|
|
|
|
## Mockowanie Medoo
|
|
|
|
```php
|
|
$mockDb = $this->createMock(\medoo::class);
|
|
$mockDb->method('get')->willReturn(42);
|
|
|
|
$repo = new ProductRepository($mockDb);
|
|
$value = $repo->getQuantity(123);
|
|
|
|
$this->assertEquals(42, $value);
|
|
```
|
|
|
|
## Bootstrap — stuby
|
|
|
|
`tests/bootstrap.php` rejestruje autoloader i definiuje stuby:
|
|
- `Redis`, `RedisConnection` — klasy Redis (aby nie wymagac rozszerzenia)
|
|
- `Shared\Cache\CacheHandler` — inline stub z `get()`/`set()`/`exists()`/`delete()`/`deletePattern()`
|
|
- `Shared\Helpers\Helpers` — z `tests/stubs/Helpers.php`
|
|
- `shop\Product` — z `tests/stubs/ShopProduct.php`
|