ver. 0.293: Code review fixes — 6 repositories, 16 fixes

- ArticleRepository: SQL injection fix (addslashes→parameterized), DRY refactor topArticles/newsListArticles
- AttributeRepository: dead class_exists('\S') blocking cache/temp clear
- CategoryRepository: dead class_exists('\S') blocking SEO link generation (critical)
- BannerRepository: parameterize $today in SQL + null guard on query()
- BasketCalculator: null guard checkProductQuantityInStock + optional DI params
- PromotionRepository: null guard on $basket (production fatal)
- OrderRepository/ShopBasketController/ajax.php: explicit DI in BasketCalculator callers

614 tests, 1821 assertions (+4 new)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-19 01:07:39 +01:00
parent 29821bccf2
commit 054b1b4a34
19 changed files with 297 additions and 218 deletions

View File

@@ -64,4 +64,25 @@ class BasketCalculatorTest extends TestCase
$this->assertSame('3 produkty', BasketCalculator::countProductsText('3'));
$this->assertSame('0 produktów', BasketCalculator::countProductsText('abc'));
}
public function testCheckProductQuantityInStockReturnsFalseOnNullBasket(): void
{
$this->assertFalse(BasketCalculator::checkProductQuantityInStock(null));
}
public function testCheckProductQuantityInStockReturnsFalseOnEmptyBasket(): void
{
$this->assertFalse(BasketCalculator::checkProductQuantityInStock([]));
}
public function testValidateBasketReturnsEmptyArrayOnNull(): void
{
$this->assertSame([], BasketCalculator::validateBasket(null));
}
public function testValidateBasketReturnsBasketArrayAsIs(): void
{
$basket = [['product-id' => 1, 'quantity' => 2]];
$this->assertSame($basket, BasketCalculator::validateBasket($basket));
}
}