DevisProcessControllerTest : 24 tests (show states, sign guards, signed accept, refuse avec/sans raison, DocuSeal archive) OrderPaymentControllerTest : 28 tests (index, verify flow, resend, virement/cheque, stripe guards, stripeSuccess/Check, findRevendeur) UnsubscribeControllerTest : 2 tests (invalid/valid token) WebmailControllerTest : 1 test (login render) OrderPaymentController : @codeCoverageIgnore sur blocs Stripe (createStripeIntent try/catch, stripeSuccess PI retrieve) JS : istanbul ignore next sur confirm modal branches PHP : 1321 tests, JS : 115 tests Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
66 lines
2.3 KiB
PHP
66 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Tests\Controller;
|
|
|
|
use App\Controller\UnsubscribeController;
|
|
use App\Service\UnsubscribeManager;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Psr\Container\ContainerInterface;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
use Symfony\Component\HttpFoundation\Session\Session;
|
|
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
|
|
use Symfony\Component\Routing\RouterInterface;
|
|
use Twig\Environment;
|
|
|
|
class UnsubscribeControllerTest extends TestCase
|
|
{
|
|
private function buildController(): UnsubscribeController
|
|
{
|
|
$session = new Session(new MockArraySessionStorage());
|
|
$stack = $this->createStub(RequestStack::class);
|
|
$stack->method('getSession')->willReturn($session);
|
|
|
|
$twig = $this->createStub(Environment::class);
|
|
$twig->method('render')->willReturn('<html></html>');
|
|
|
|
$router = $this->createStub(RouterInterface::class);
|
|
$router->method('generate')->willReturn('/some/path');
|
|
|
|
$container = $this->createStub(ContainerInterface::class);
|
|
$container->method('has')->willReturn(true);
|
|
$container->method('get')->willReturnMap([
|
|
['twig', $twig],
|
|
['router', $router],
|
|
['request_stack', $stack],
|
|
]);
|
|
|
|
$controller = new UnsubscribeController();
|
|
$controller->setContainer($container);
|
|
|
|
return $controller;
|
|
}
|
|
|
|
public function testInvalidTokenRendersInvalidTemplate(): void
|
|
{
|
|
$manager = $this->createStub(UnsubscribeManager::class);
|
|
$manager->method('isValidToken')->willReturn(false);
|
|
|
|
$controller = $this->buildController();
|
|
$response = $controller->__invoke('test@example.com', 'invalid-token', $manager);
|
|
|
|
$this->assertSame(200, $response->getStatusCode());
|
|
}
|
|
|
|
public function testValidTokenUnsubscribesAndRendersSuccessTemplate(): void
|
|
{
|
|
$manager = $this->createMock(UnsubscribeManager::class);
|
|
$manager->method('isValidToken')->willReturn(true);
|
|
$manager->expects($this->once())->method('unsubscribe')->with('test@example.com');
|
|
|
|
$controller = $this->buildController();
|
|
$response = $controller->__invoke('test@example.com', 'valid-token', $manager);
|
|
|
|
$this->assertSame(200, $response->getStatusCode());
|
|
}
|
|
}
|