Increased MSI to 62%

This commit is contained in:
Alejandro Celaya 2018-11-17 18:06:06 +01:00
parent a705ef21a9
commit d2ed7d6417
6 changed files with 66 additions and 20 deletions

View File

@ -126,7 +126,7 @@ class ProcessVisitsCommand extends Command
$this->getApplication()->renderException($e, $this->output); $this->getApplication()->renderException($e, $this->output);
} }
throw new IpCannotBeLocatedException('An error occurred while locating IP', 0, $e); throw new IpCannotBeLocatedException('An error occurred while locating IP', $e->getCode(), $e);
} }
} }
} }

View File

@ -62,13 +62,22 @@ class GeneratePreviewCommandTest extends TestCase
]); ]);
$this->shortUrlService->listShortUrls(1)->willReturn($paginator)->shouldBeCalledOnce(); $this->shortUrlService->listShortUrls(1)->willReturn($paginator)->shouldBeCalledOnce();
$this->previewGenerator->generatePreview('http://foo.com')->shouldBeCalledOnce(); $generatePreview1 = $this->previewGenerator->generatePreview('http://foo.com')->willReturn('');
$this->previewGenerator->generatePreview('https://bar.com')->shouldBeCalledOnce(); $generatePreview2 = $this->previewGenerator->generatePreview('https://bar.com')->willReturn('');
$this->previewGenerator->generatePreview('http://baz.com/something')->shouldBeCalledOnce(); $generatePreview3 = $this->previewGenerator->generatePreview('http://baz.com/something')->willReturn('');
$this->commandTester->execute([ $this->commandTester->execute([
'command' => 'shortcode:process-previews', 'command' => 'shortcode:process-previews',
]); ]);
$output = $this->commandTester->getDisplay();
$this->assertContains('Processing URL http://foo.com', $output);
$this->assertContains('Processing URL https://bar.com', $output);
$this->assertContains('Processing URL http://baz.com/something', $output);
$this->assertContains('Finished processing all URLs', $output);
$generatePreview1->shouldHaveBeenCalledOnce();
$generatePreview2->shouldHaveBeenCalledOnce();
$generatePreview3->shouldHaveBeenCalledOnce();
} }
/** /**

View File

@ -3,9 +3,11 @@ declare(strict_types=1);
namespace ShlinkioTest\Shlink\CLI\Command\ShortUrl; namespace ShlinkioTest\Shlink\CLI\Command\ShortUrl;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Prophecy\Argument; use Prophecy\Argument;
use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Prophecy\ObjectProphecy;
use Psr\Http\Message\UriInterface;
use Shlinkio\Shlink\CLI\Command\ShortUrl\GenerateShortUrlCommand; use Shlinkio\Shlink\CLI\Command\ShortUrl\GenerateShortUrlCommand;
use Shlinkio\Shlink\Core\Entity\ShortUrl; use Shlinkio\Shlink\Core\Entity\ShortUrl;
use Shlinkio\Shlink\Core\Exception\InvalidUrlException; use Shlinkio\Shlink\Core\Exception\InvalidUrlException;
@ -13,9 +15,8 @@ use Shlinkio\Shlink\Core\Service\UrlShortener;
use Symfony\Component\Console\Application; use Symfony\Component\Console\Application;
use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Console\Tester\CommandTester;
use Zend\I18n\Translator\Translator; use Zend\I18n\Translator\Translator;
use function strpos;
class GenerateShortcodeCommandTest extends TestCase class GenerateShortUrlCommandTest extends TestCase
{ {
/** /**
* @var CommandTester * @var CommandTester
@ -43,18 +44,19 @@ class GenerateShortcodeCommandTest extends TestCase
*/ */
public function properShortCodeIsCreatedIfLongUrlIsCorrect() public function properShortCodeIsCreatedIfLongUrlIsCorrect()
{ {
$this->urlShortener->urlToShortCode(Argument::cetera()) $urlToShortCode = $this->urlShortener->urlToShortCode(Argument::cetera())->willReturn(
->willReturn( (new ShortUrl(''))->setShortCode('abc123')
(new ShortUrl(''))->setShortCode('abc123') );
)
->shouldBeCalledOnce();
$this->commandTester->execute([ $this->commandTester->execute([
'command' => 'shortcode:generate', 'command' => 'shortcode:generate',
'longUrl' => 'http://domain.com/foo/bar', 'longUrl' => 'http://domain.com/foo/bar',
'--maxVisits' => '3',
]); ]);
$output = $this->commandTester->getDisplay(); $output = $this->commandTester->getDisplay();
$this->assertTrue(strpos($output, 'http://foo.com/abc123') > 0);
$this->assertContains('http://foo.com/abc123', $output);
$urlToShortCode->shouldHaveBeenCalledOnce();
} }
/** /**
@ -75,4 +77,29 @@ class GenerateShortcodeCommandTest extends TestCase
$output $output
); );
} }
/**
* @test
*/
public function properlyProcessesProvidedTags()
{
$urlToShortCode = $this->urlShortener->urlToShortCode(
Argument::type(UriInterface::class),
Argument::that(function (array $tags) {
Assert::assertEquals(['foo', 'bar', 'baz', 'boo', 'zar'], $tags);
return $tags;
}),
Argument::cetera()
)->willReturn((new ShortUrl(''))->setShortCode('abc123'));
$this->commandTester->execute([
'command' => 'shortcode:generate',
'longUrl' => 'http://domain.com/foo/bar',
'--tags' => ['foo,bar', 'baz', 'boo,zar'],
]);
$output = $this->commandTester->getDisplay();
$this->assertContains('http://foo.com/abc123', $output);
$urlToShortCode->shouldHaveBeenCalledOnce();
}
} }

View File

@ -15,7 +15,7 @@ use Zend\I18n\Translator\Translator;
use Zend\Paginator\Adapter\ArrayAdapter; use Zend\Paginator\Adapter\ArrayAdapter;
use Zend\Paginator\Paginator; use Zend\Paginator\Paginator;
class ListShortcodesCommandTest extends TestCase class ListShortUrlsCommandTest extends TestCase
{ {
/** /**
* @var CommandTester * @var CommandTester
@ -52,7 +52,7 @@ class ListShortcodesCommandTest extends TestCase
*/ */
public function loadingMorePagesCallsListMoreTimes() public function loadingMorePagesCallsListMoreTimes()
{ {
// The paginator will return more than one page for the first 3 times // The paginator will return more than one page
$data = []; $data = [];
for ($i = 0; $i < 50; $i++) { for ($i = 0; $i < 50; $i++) {
$data[] = new ShortUrl('url_' . $i); $data[] = new ShortUrl('url_' . $i);
@ -64,6 +64,11 @@ class ListShortcodesCommandTest extends TestCase
$this->commandTester->setInputs(['y', 'y', 'n']); $this->commandTester->setInputs(['y', 'y', 'n']);
$this->commandTester->execute(['command' => 'shortcode:list']); $this->commandTester->execute(['command' => 'shortcode:list']);
$output = $this->commandTester->getDisplay();
$this->assertContains('Continue with page 2?', $output);
$this->assertContains('Continue with page 3?', $output);
$this->assertContains('Continue with page 4?', $output);
} }
/** /**
@ -82,6 +87,15 @@ class ListShortcodesCommandTest extends TestCase
$this->commandTester->setInputs(['n']); $this->commandTester->setInputs(['n']);
$this->commandTester->execute(['command' => 'shortcode:list']); $this->commandTester->execute(['command' => 'shortcode:list']);
$output = $this->commandTester->getDisplay();
$this->assertContains('url_1', $output);
$this->assertContains('url_9', $output);
$this->assertNotContains('url_10', $output);
$this->assertNotContains('url_20', $output);
$this->assertNotContains('url_30', $output);
$this->assertContains('Continue with page 2?', $output);
$this->assertNotContains('Continue with page 3?', $output);
} }
/** /**

View File

@ -35,11 +35,9 @@ class PreviewGenerator implements PreviewGeneratorInterface
/** /**
* Generates and stores preview for provided website and returns the path to the image file * Generates and stores preview for provided website and returns the path to the image file
* *
* @param string $url
* @return string
* @throws PreviewGenerationException * @throws PreviewGenerationException
*/ */
public function generatePreview($url) public function generatePreview(string $url): string
{ {
/** @var Image $image */ /** @var Image $image */
$image = $this->imageBuilder->build(Image::class, ['url' => $url]); $image = $this->imageBuilder->build(Image::class, ['url' => $url]);

View File

@ -10,9 +10,7 @@ interface PreviewGeneratorInterface
/** /**
* Generates and stores preview for provided website and returns the path to the image file * Generates and stores preview for provided website and returns the path to the image file
* *
* @param string $url
* @return string
* @throws PreviewGenerationException * @throws PreviewGenerationException
*/ */
public function generatePreview($url); public function generatePreview(string $url): string;
} }