Add force validate button in admin orders + fix Stripe Connect account in sync
- Add POST /admin/commandes/{id}/forcer-validation to force validate pending
orders (generates tickets, sends emails, notifies organizer)
- Add "Forcer validation" button in orders template for pending orders
- Fix retrievePaymentIntent to query on organizer's Connect account
- Update stripe:sync to pass organizer stripeAccountId when checking payments
- Add 3 tests for force validation (pending, non-pending, not found)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,8 +2,10 @@
|
||||
|
||||
namespace App\Tests\Controller;
|
||||
|
||||
use App\Entity\BilletBuyer;
|
||||
use App\Entity\Event;
|
||||
use App\Entity\User;
|
||||
use App\Service\BilletOrderService;
|
||||
use App\Service\EventIndexService;
|
||||
use App\Service\MailerService;
|
||||
use App\Service\MeilisearchService;
|
||||
@@ -743,6 +745,89 @@ class AdminControllerTest extends WebTestCase
|
||||
self::assertResponseIsSuccessful();
|
||||
}
|
||||
|
||||
public function testForceValidateOrderPending(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$admin = $this->createUser(['ROLE_ROOT']);
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
|
||||
$organizer = $this->createUser(['ROLE_ORGANIZER']);
|
||||
|
||||
$event = new Event();
|
||||
$event->setTitle('Test Event Force');
|
||||
$event->setAccount($organizer);
|
||||
$event->setStartAt(new \DateTimeImmutable('+1 day'));
|
||||
$event->setEndAt(new \DateTimeImmutable('+2 days'));
|
||||
$event->setAddress('1 rue test');
|
||||
$event->setZipcode('75001');
|
||||
$event->setCity('Paris');
|
||||
$em->persist($event);
|
||||
|
||||
$order = new BilletBuyer();
|
||||
$order->setEvent($event);
|
||||
$order->setEmail('buyer@test.fr');
|
||||
$order->setFirstName('Jean');
|
||||
$order->setLastName('Test');
|
||||
$order->setStatus(BilletBuyer::STATUS_PENDING);
|
||||
$em->persist($order);
|
||||
$em->flush();
|
||||
|
||||
$billetOrderService = $this->createMock(BilletOrderService::class);
|
||||
$billetOrderService->expects(self::once())->method('generateOrderTickets');
|
||||
$billetOrderService->expects(self::once())->method('generateAndSendTickets');
|
||||
$billetOrderService->expects(self::once())->method('notifyOrganizer');
|
||||
static::getContainer()->set(BilletOrderService::class, $billetOrderService);
|
||||
|
||||
$client->loginUser($admin);
|
||||
$client->request('POST', '/admin/commandes/'.$order->getId().'/forcer-validation');
|
||||
|
||||
self::assertResponseRedirects('/admin/commandes');
|
||||
}
|
||||
|
||||
public function testForceValidateOrderNonPendingFails(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$admin = $this->createUser(['ROLE_ROOT']);
|
||||
$em = static::getContainer()->get(EntityManagerInterface::class);
|
||||
|
||||
$organizer = $this->createUser(['ROLE_ORGANIZER']);
|
||||
|
||||
$event = new Event();
|
||||
$event->setTitle('Test Event Paid');
|
||||
$event->setAccount($organizer);
|
||||
$event->setStartAt(new \DateTimeImmutable('+1 day'));
|
||||
$event->setEndAt(new \DateTimeImmutable('+2 days'));
|
||||
$event->setAddress('1 rue test');
|
||||
$event->setZipcode('75001');
|
||||
$event->setCity('Paris');
|
||||
$em->persist($event);
|
||||
|
||||
$order = new BilletBuyer();
|
||||
$order->setEvent($event);
|
||||
$order->setEmail('buyer2@test.fr');
|
||||
$order->setFirstName('Pierre');
|
||||
$order->setLastName('Test');
|
||||
$order->setStatus(BilletBuyer::STATUS_PAID);
|
||||
$em->persist($order);
|
||||
$em->flush();
|
||||
|
||||
$client->loginUser($admin);
|
||||
$client->request('POST', '/admin/commandes/'.$order->getId().'/forcer-validation');
|
||||
|
||||
self::assertResponseRedirects('/admin/commandes');
|
||||
}
|
||||
|
||||
public function testForceValidateOrderNotFound(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
$admin = $this->createUser(['ROLE_ROOT']);
|
||||
|
||||
$client->loginUser($admin);
|
||||
$client->request('POST', '/admin/commandes/999999/forcer-validation');
|
||||
|
||||
self::assertResponseStatusCodeSame(404);
|
||||
}
|
||||
|
||||
public function testLogsPage(): void
|
||||
{
|
||||
$client = static::createClient();
|
||||
|
||||
Reference in New Issue
Block a user