Updated setting short URL tags so that it accepts providing the domain

This commit is contained in:
Alejandro Celaya
2020-02-01 22:59:21 +01:00
parent 5d1d9dcac3
commit 6858dc4785
5 changed files with 11 additions and 9 deletions

View File

@@ -47,9 +47,9 @@ class ShortUrlService implements ShortUrlServiceInterface
* @param string[] $tags * @param string[] $tags
* @throws ShortUrlNotFoundException * @throws ShortUrlNotFoundException
*/ */
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl public function setTagsByShortCode(ShortUrlIdentifier $identifier, array $tags = []): ShortUrl
{ {
$shortUrl = $this->urlResolver->resolveShortUrl(new ShortUrlIdentifier($shortCode)); $shortUrl = $this->urlResolver->resolveShortUrl($identifier);
$shortUrl->setTags($this->tagNamesToEntities($this->em, $tags)); $shortUrl->setTags($this->tagNamesToEntities($this->em, $tags));
$this->em->flush(); $this->em->flush();

View File

@@ -22,7 +22,7 @@ interface ShortUrlServiceInterface
* @param string[] $tags * @param string[] $tags
* @throws ShortUrlNotFoundException * @throws ShortUrlNotFoundException
*/ */
public function setTagsByShortCode(string $shortCode, array $tags = []): ShortUrl; public function setTagsByShortCode(ShortUrlIdentifier $identifier, array $tags = []): ShortUrl;
/** /**
* @throws ShortUrlNotFoundException * @throws ShortUrlNotFoundException

View File

@@ -71,7 +71,7 @@ class ShortUrlServiceTest extends TestCase
$tagRepo->findOneBy(['name' => 'bar'])->willReturn(null)->shouldBeCalledOnce(); $tagRepo->findOneBy(['name' => 'bar'])->willReturn(null)->shouldBeCalledOnce();
$this->em->getRepository(Tag::class)->willReturn($tagRepo->reveal()); $this->em->getRepository(Tag::class)->willReturn($tagRepo->reveal());
$this->service->setTagsByShortCode($shortCode, ['foo', 'bar']); $this->service->setTagsByShortCode(new ShortUrlIdentifier($shortCode), ['foo', 'bar']);
} }
/** @test */ /** @test */

View File

@@ -9,6 +9,7 @@ use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Shlinkio\Shlink\Core\Exception\ValidationException; use Shlinkio\Shlink\Core\Exception\ValidationException;
use Shlinkio\Shlink\Core\Model\ShortUrlIdentifier;
use Shlinkio\Shlink\Core\Service\ShortUrlServiceInterface; use Shlinkio\Shlink\Core\Service\ShortUrlServiceInterface;
use Shlinkio\Shlink\Rest\Action\AbstractRestAction; use Shlinkio\Shlink\Rest\Action\AbstractRestAction;
@@ -27,7 +28,6 @@ class EditShortUrlTagsAction extends AbstractRestAction
public function handle(Request $request): Response public function handle(Request $request): Response
{ {
$shortCode = $request->getAttribute('shortCode');
$bodyParams = $request->getParsedBody(); $bodyParams = $request->getParsedBody();
if (! isset($bodyParams['tags'])) { if (! isset($bodyParams['tags'])) {
@@ -35,9 +35,10 @@ class EditShortUrlTagsAction extends AbstractRestAction
'tags' => 'List of tags has to be provided', 'tags' => 'List of tags has to be provided',
]); ]);
} }
$tags = $bodyParams['tags']; ['tags' => $tags] = $bodyParams;
$identifier = ShortUrlIdentifier::fromApiRequest($request);
$shortUrl = $this->shortUrlService->setTagsByShortCode($shortCode, $tags); $shortUrl = $this->shortUrlService->setTagsByShortCode($identifier, $tags);
return new JsonResponse(['tags' => $shortUrl->getTags()->toArray()]); return new JsonResponse(['tags' => $shortUrl->getTags()->toArray()]);
} }
} }

View File

@@ -9,6 +9,7 @@ use PHPUnit\Framework\TestCase;
use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\ObjectProphecy;
use Shlinkio\Shlink\Core\Entity\ShortUrl; use Shlinkio\Shlink\Core\Entity\ShortUrl;
use Shlinkio\Shlink\Core\Exception\ValidationException; use Shlinkio\Shlink\Core\Exception\ValidationException;
use Shlinkio\Shlink\Core\Model\ShortUrlIdentifier;
use Shlinkio\Shlink\Core\Service\ShortUrlService; use Shlinkio\Shlink\Core\Service\ShortUrlService;
use Shlinkio\Shlink\Rest\Action\ShortUrl\EditShortUrlTagsAction; use Shlinkio\Shlink\Rest\Action\ShortUrl\EditShortUrlTagsAction;
@@ -34,8 +35,8 @@ class EditShortUrlTagsActionTest extends TestCase
public function tagsListIsReturnedIfCorrectShortCodeIsProvided(): void public function tagsListIsReturnedIfCorrectShortCodeIsProvided(): void
{ {
$shortCode = 'abc123'; $shortCode = 'abc123';
$this->shortUrlService->setTagsByShortCode($shortCode, [])->willReturn(new ShortUrl('')) $this->shortUrlService->setTagsByShortCode(new ShortUrlIdentifier($shortCode), [])->willReturn(new ShortUrl(''))
->shouldBeCalledOnce(); ->shouldBeCalledOnce();
$response = $this->action->handle( $response = $this->action->handle(
(new ServerRequest())->withAttribute('shortCode', 'abc123') (new ServerRequest())->withAttribute('shortCode', 'abc123')