Files
shopPRO/docs/TESTING.md
Jacek Pyziak 9cac0d1eeb ver. 0.296: REST API for ordersPRO — orders management, dictionaries, API key auth
- New API layer: ApiRouter, OrdersApiController, DictionariesApiController
- Orders API: list (with filters/pagination/updated_since), details, change status, set paid/unpaid
- Dictionaries API: order statuses, transport methods, payment methods
- X-Api-Key authentication via pp_settings.api_key
- OrderRepository: listForApi(), findForApi(), touchUpdatedAt()
- updated_at column on pp_shop_orders for polling support
- api.php: skip session for API requests, route to ApiRouter
- SettingsController: api_key field in system tab
- 30 new tests (666 total, 1930 assertions)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:25:07 +01:00

3.8 KiB

Testowanie shopPRO

Szybki start

# 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

OK (666 tests, 1930 assertions)

Zweryfikowano: 2026-02-19 (ver. 0.296)

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
|   |   |-- 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
|   |   `-- User/UserRepositoryTest.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
|   `-- api/
|       |-- ApiRouterTest.php
|       `-- Controllers/
|           |-- OrdersApiControllerTest.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

$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