test(pulse): cover heartbeat enable/disable gate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit\Framework\TeleCartPulse;
|
||||
|
||||
use Mockery as m;
|
||||
use Openguru\OpenCartFramework\Cache\CacheInterface;
|
||||
use Openguru\OpenCartFramework\TeleCartPulse\PayloadSigner;
|
||||
use Openguru\OpenCartFramework\TeleCartPulse\TeleCartEvent;
|
||||
use Openguru\OpenCartFramework\TeleCartPulse\TeleCartPulseService;
|
||||
use Openguru\OpenCartFramework\Telegram\TelegramInitDataDecoder;
|
||||
use Openguru\OpenCartFramework\Telegram\TelegramService;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class TeleCartPulseServiceHeartbeatTest extends TestCase
|
||||
{
|
||||
protected function tearDown(): void
|
||||
{
|
||||
m::close();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testDisabledHeartbeatSendsNothingAndTouchesNoCache(): void
|
||||
{
|
||||
$cache = m::mock(CacheInterface::class);
|
||||
$cache->shouldNotReceive('get');
|
||||
$cache->shouldNotReceive('set');
|
||||
|
||||
$telegramService = m::mock(TelegramService::class);
|
||||
$telegramService->shouldNotReceive('getMe');
|
||||
|
||||
$service = new TeleCartPulseService(
|
||||
m::mock(TelegramInitDataDecoder::class),
|
||||
$telegramService,
|
||||
$cache,
|
||||
m::mock(LoggerInterface::class),
|
||||
m::mock(TeleCartEvent::class),
|
||||
'some-api-key',
|
||||
m::mock(PayloadSigner::class),
|
||||
false
|
||||
);
|
||||
|
||||
$service->handleHeartbeat();
|
||||
|
||||
// shouldNotReceive() expectations are verified on Mockery::close() in tearDown.
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
|
||||
public function testEnabledHeartbeatPassesGateAndConsultsCache(): void
|
||||
{
|
||||
// Cache hit → метод выходит сразу после проверки кэша, не доходя до getMe()/HTTP.
|
||||
$cache = m::mock(CacheInterface::class);
|
||||
$cache->shouldReceive('get')->once()->with('telecart_pulse_heartbeat')->andReturn(time());
|
||||
$cache->shouldNotReceive('set');
|
||||
|
||||
$telegramService = m::mock(TelegramService::class);
|
||||
$telegramService->shouldNotReceive('getMe');
|
||||
|
||||
$service = new TeleCartPulseService(
|
||||
m::mock(TelegramInitDataDecoder::class),
|
||||
$telegramService,
|
||||
$cache,
|
||||
m::mock(LoggerInterface::class),
|
||||
m::mock(TeleCartEvent::class),
|
||||
'some-api-key',
|
||||
m::mock(PayloadSigner::class),
|
||||
true
|
||||
);
|
||||
|
||||
$service->handleHeartbeat();
|
||||
|
||||
$this->addToAssertionCount(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user