ver. 0.282: Banners frontend migration, Cache cleanup, Shared\Cache namespace
- Banners frontend: front\Views\Banners (new), BannerRepository +2 frontend methods, front\view\Site przepięty, usunięte front\factory\Banners i front\view\Banners - Cache cleanup: eliminacja legacy class.Cache.php (file-based cache), 13 metod front\factory przepiętych z \Cache::fetch/store na CacheHandler - Shared\Cache namespace: CacheHandler i RedisConnection przeniesione do Shared\Cache\, 60 odwołań CacheHandler i 12 odwołań RedisConnection przepiętych, usunięte backward-compat wrappery class.CacheHandler.php i class.RedisConnection.php - Naprawione rozbieżności kluczy cache (random_products, category_name) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -269,4 +269,119 @@ class BannerRepositoryTest extends TestCase
|
||||
$this->assertSame('/uploads/banner-a.jpg', $result['items'][0]['thumbnail_src']);
|
||||
$this->assertSame('', $result['items'][1]['thumbnail_src']);
|
||||
}
|
||||
|
||||
// ─── Frontend methods ───────────────────────────────────────────
|
||||
|
||||
/**
|
||||
* Test banners() — cache miss, zwraca aktywne banery z plaskim formatem languages
|
||||
*/
|
||||
public function testBannersReturnsActiveBannersWithFlatLanguages(): void
|
||||
{
|
||||
$mockDb = $this->createMock(\medoo::class);
|
||||
|
||||
$queryStmt = $this->createMock(\PDOStatement::class);
|
||||
$queryStmt->expects($this->once())
|
||||
->method('fetchAll')
|
||||
->willReturn([
|
||||
['id' => 1, 'name' => 'Baner A'],
|
||||
['id' => 2, 'name' => 'Baner B'],
|
||||
]);
|
||||
|
||||
$mockDb->expects($this->once())
|
||||
->method('query')
|
||||
->willReturn($queryStmt);
|
||||
|
||||
$mockDb->expects($this->exactly(2))
|
||||
->method('get')
|
||||
->with('pp_banners_langs', '*', $this->anything())
|
||||
->willReturnOnConsecutiveCalls(
|
||||
['id_banner' => 1, 'id_lang' => 'pl', 'src' => 'a.jpg', 'url' => '/a', 'html' => '', 'text' => ''],
|
||||
['id_banner' => 2, 'id_lang' => 'pl', 'src' => 'b.jpg', 'url' => '/b', 'html' => '', 'text' => '']
|
||||
);
|
||||
|
||||
$repo = new BannerRepository($mockDb);
|
||||
$result = $repo->banners('pl');
|
||||
|
||||
$this->assertIsArray($result);
|
||||
$this->assertCount(2, $result);
|
||||
// Format plaski — $banner['languages']['src'], nie $banner['languages']['pl']['src']
|
||||
$this->assertSame('a.jpg', $result[0]['languages']['src']);
|
||||
$this->assertSame('b.jpg', $result[1]['languages']['src']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test banners() — brak wynikow zwraca null
|
||||
*/
|
||||
public function testBannersReturnsNullWhenNoBanners(): void
|
||||
{
|
||||
$mockDb = $this->createMock(\medoo::class);
|
||||
|
||||
$queryStmt = $this->createMock(\PDOStatement::class);
|
||||
$queryStmt->expects($this->once())
|
||||
->method('fetchAll')
|
||||
->willReturn([]);
|
||||
|
||||
$mockDb->expects($this->once())
|
||||
->method('query')
|
||||
->willReturn($queryStmt);
|
||||
|
||||
$repo = new BannerRepository($mockDb);
|
||||
$result = $repo->banners('pl');
|
||||
|
||||
$this->assertNull($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test mainBanner() — cache miss, zwraca baner z plaskim formatem languages
|
||||
*/
|
||||
public function testMainBannerReturnsActiveBannerWithFlatLanguages(): void
|
||||
{
|
||||
$mockDb = $this->createMock(\medoo::class);
|
||||
|
||||
$queryStmt = $this->createMock(\PDOStatement::class);
|
||||
$queryStmt->expects($this->once())
|
||||
->method('fetchAll')
|
||||
->willReturn([
|
||||
['id' => 5, 'name' => 'Main Banner', 'status' => 1, 'home_page' => 1],
|
||||
]);
|
||||
|
||||
$mockDb->expects($this->once())
|
||||
->method('query')
|
||||
->willReturn($queryStmt);
|
||||
|
||||
$mockDb->expects($this->once())
|
||||
->method('get')
|
||||
->with('pp_banners_langs', '*', ['AND' => ['id_banner' => 5, 'id_lang' => 'pl']])
|
||||
->willReturn(['id_banner' => 5, 'id_lang' => 'pl', 'src' => 'main.jpg', 'url' => '/main', 'html' => '', 'text' => '']);
|
||||
|
||||
$repo = new BannerRepository($mockDb);
|
||||
$result = $repo->mainBanner('pl');
|
||||
|
||||
$this->assertIsArray($result);
|
||||
$this->assertSame(5, (int)$result['id']);
|
||||
$this->assertSame('main.jpg', $result['languages']['src']);
|
||||
$this->assertSame('/main', $result['languages']['url']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test mainBanner() — brak wynikow zwraca null
|
||||
*/
|
||||
public function testMainBannerReturnsNullWhenNoBanner(): void
|
||||
{
|
||||
$mockDb = $this->createMock(\medoo::class);
|
||||
|
||||
$queryStmt = $this->createMock(\PDOStatement::class);
|
||||
$queryStmt->expects($this->once())
|
||||
->method('fetchAll')
|
||||
->willReturn([]);
|
||||
|
||||
$mockDb->expects($this->once())
|
||||
->method('query')
|
||||
->willReturn($queryStmt);
|
||||
|
||||
$repo = new BannerRepository($mockDb);
|
||||
$result = $repo->mainBanner('pl');
|
||||
|
||||
$this->assertNull($result);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user