[backend] bump deps and fix styles

This commit is contained in:
2025-10-07 00:23:41 +02:00
parent 449718cdf2
commit 6855590d6b
8 changed files with 1043 additions and 968 deletions
+1025 -856
View File
File diff suppressed because it is too large Load Diff
@@ -75,10 +75,10 @@ class Article
public function defineOpenGraph(?OpenGraph $object): self public function defineOpenGraph(?OpenGraph $object): self
{ {
$this->metadata = new OpenGraph( $this->metadata = new OpenGraph(
title: $object->title, title: $object?->title,
description: $object->description, description: $object?->description,
image: $object->image, image: $object?->image,
locale: $object->locale ?? "fr" locale: $object->locale ?? 'fr'
); );
return $this; return $this;
@@ -6,7 +6,6 @@ namespace Basango\Aggregator\Presentation\Web\Controller;
use Basango\Aggregator\Application\UseCase\Command\CreateArticle; use Basango\Aggregator\Application\UseCase\Command\CreateArticle;
use Basango\Aggregator\Domain\Model\ValueObject\Link; use Basango\Aggregator\Domain\Model\ValueObject\Link;
use Basango\Aggregator\Domain\Model\ValueObject\OpenGraph;
use Basango\Aggregator\Presentation\WriteModel\AddArticleModel; use Basango\Aggregator\Presentation\WriteModel\AddArticleModel;
use Basango\SharedKernel\Presentation\Web\Controller\AbstractController; use Basango\SharedKernel\Presentation\Web\Controller\AbstractController;
use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\DependencyInjection\Attribute\Autowire;
@@ -25,7 +24,7 @@ use Symfony\Component\Routing\Requirement\Requirement;
final class AddArticleController extends AbstractController final class AddArticleController extends AbstractController
{ {
public function __construct( public function __construct(
#[Autowire(env: "BASANGO_CRAWLER_TOKEN")] private string $token #[Autowire(env: 'BASANGO_CRAWLER_TOKEN')] private readonly string $token
) { ) {
} }
@@ -33,12 +32,12 @@ final class AddArticleController extends AbstractController
path: '/api/aggregator/articles', path: '/api/aggregator/articles',
name: 'aggregator_add_article', name: 'aggregator_add_article',
requirements: [ requirements: [
'token' => Requirement::ASCII_SLUG 'token' => Requirement::ASCII_SLUG,
], ],
methods: ['POST'] methods: ['POST']
)] )]
public function __invoke( public function __invoke(
#[MapQueryParameter] string $token, #[MapQueryParameter] string $token,
#[MapRequestPayload] AddArticleModel $model #[MapRequestPayload] AddArticleModel $model
): JsonResponse { ): JsonResponse {
if ($token !== $this->token) { if ($token !== $this->token) {
@@ -48,14 +47,13 @@ final class AddArticleController extends AbstractController
$this->handleCommand(new CreateArticle( $this->handleCommand(new CreateArticle(
$model->title, $model->title,
Link::from($model->link), Link::from($model->link),
join(', ', $model->categories), implode(', ', $model->categories),
$model->body, $model->body,
$model->source, $model->source,
$model->timestamp, $model->timestamp,
$model->metadata, $model->metadata,
)); ));
return new JsonResponse(status: Response::HTTP_CREATED); return new JsonResponse(status: Response::HTTP_CREATED);
} }
} }
@@ -23,7 +23,7 @@ class Bookmark
/** /**
* @var DataCollection<int, Article> * @var DataCollection<int, Article>
*/ */
private(set) public iterable $articles; public private(set) iterable $articles;
private function __construct( private function __construct(
public readonly User $user, public readonly User $user,
@@ -5,7 +5,6 @@ declare(strict_types=1);
namespace Basango\SharedKernel\Domain\DataTransfert; namespace Basango\SharedKernel\Domain\DataTransfert;
use Basango\SharedKernel\Domain\Assert; use Basango\SharedKernel\Domain\Assert;
use BackedEnum as T;
use Symfony\Component\Uid\UuidV7; use Symfony\Component\Uid\UuidV7;
/** /**
+9
View File
@@ -1,4 +1,13 @@
{ {
"doctrine/deprecations": {
"version": "1.1",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "87424683adc81d7dc305eefec1fced883084aab9"
}
},
"doctrine/doctrine-bundle": { "doctrine/doctrine-bundle": {
"version": "2.13", "version": "2.13",
"recipe": { "recipe": {
@@ -1,37 +0,0 @@
<?php
declare(strict_types=1);
namespace Tests\Unit\Aggregator\Domain\Model\ValueObject;
use Basango\Aggregator\Domain\Model\ValueObject\Crawling\PageRange;
use Basango\SharedKernel\Domain\Exception\InvalidArgument;
use PHPUnit\Framework\TestCase;
/**
* Class PageRangeTest.
*
* @author bernard-ng <bernard@devscast.tech>
*/
final class PageRangeTest extends TestCase
{
public function testItShouldCreatePageRange(): void
{
$pageRange = PageRange::from('1:10');
$this->assertEquals(1, $pageRange->start);
$this->assertEquals(10, $pageRange->end);
}
public function testEndPageShouldBeGreaterThanStartPage(): void
{
$this->expectException(InvalidArgument::class);
PageRange::from('10:1');
}
public function testNonNegativePages(): void
{
$this->expectException(InvalidArgument::class);
PageRange::from('-1:-10');
}
}
@@ -1,63 +0,0 @@
<?php
declare(strict_types=1);
namespace Tests\Unit\Aggregator\Domain\Service;
use Basango\Aggregator\Domain\Service\Crawling\DateParser;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
/**
* Class DateParserTest.
*
* @author bernard-ng <bernard@devscast.tech>
*/
final class DateParserTest extends TestCase
{
private DateParser $dateParser;
#[\Override]
protected function setUp(): void
{
$this->dateParser = new DateParser();
}
#[DataProvider('validDateProvider')]
public function testCreateTimeStampWithValidDates(
string $date,
?string $format,
?string $pattern,
?string $replacement,
string $expected
): void {
$result = $this->dateParser->createTimeStamp($date, $format, $pattern, $replacement);
$this->assertEquals($expected, $result);
}
#[DataProvider('invalidDateProvider')]
public function testCreateTimeStampWithInvalidDates(
string $date,
?string $format,
?string $pattern,
?string $replacement
): void {
$currentTimestamp = new \DateTime('midnight')->format('U');
$result = $this->dateParser->createTimeStamp($date, $format, $pattern, $replacement);
$this->assertEquals($currentTimestamp, $result);
}
public static function validDateProvider(): \Generator
{
yield ['2004-02-12T15:19:21', 'c', null, null, '1076599161'];
yield ['08/10/2024 - 00:00', 'Y-m-d H:i', '/(\d{2})\/(\d{2})\/(\d{4}) - (\d{2}:\d{2})/', '$3-$2-$1 $4', '1728345600'];
yield ['mar 08/10/2024 - 00:00', 'Y-m-d H:i', '/\w{3} (\d{2})\/(\d{2})\/(\d{4}) - (\d{2}:\d{2})/', '$3-$2-$1 $4', '1728345600'];
yield ['Mardi 8 octobre 2024 - 00:00', 'Y-m-d H:i', '/(\d{1}) (\d{1,2}) (\d{2}) (\d{4}) - (\d{2}:\d{2})/', '$4-$3-$2 $5', '1728345600'];
yield ['8.10.2024 00:00', 'd.m.Y H:i', null, null, '1728345600'];
}
public static function invalidDateProvider(): \Generator
{
yield ['invalid date string', null, null, null];
}
}