2023-04-23 06:22:04 -05:00
|
|
|
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace ShlinkioCliTest\Shlink\CLI\Command;
|
|
|
|
|
|
|
|
use PHPUnit\Framework\Attributes\Test;
|
|
|
|
use Shlinkio\Shlink\CLI\Command\ShortUrl\ListShortUrlsCommand;
|
|
|
|
use Shlinkio\Shlink\Importer\Command\ImportCommand;
|
|
|
|
use Shlinkio\Shlink\TestUtils\CliTest\CliTestCase;
|
|
|
|
|
|
|
|
use function fclose;
|
|
|
|
use function fopen;
|
|
|
|
use function fwrite;
|
|
|
|
use function is_string;
|
|
|
|
use function sys_get_temp_dir;
|
|
|
|
use function tempnam;
|
|
|
|
use function unlink;
|
|
|
|
|
|
|
|
class ImportShortUrlsTest extends CliTestCase
|
|
|
|
{
|
2023-05-29 02:43:12 -05:00
|
|
|
private false|string|null $tempCsvFile = null;
|
2023-04-23 06:22:04 -05:00
|
|
|
|
|
|
|
protected function setUp(): void
|
|
|
|
{
|
|
|
|
$this->tempCsvFile = tempnam(sys_get_temp_dir(), 'shlink_csv');
|
|
|
|
if (! $this->tempCsvFile) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$handle = fopen($this->tempCsvFile, 'w+');
|
|
|
|
if (! $handle) {
|
|
|
|
$this->fail('It was not possible to open the temporary file to write CSV on it');
|
|
|
|
}
|
|
|
|
|
|
|
|
fwrite(
|
|
|
|
$handle,
|
|
|
|
<<<CSV
|
|
|
|
longURL;tags;domain;short code;Title
|
|
|
|
https://shlink.io;foo,baz;s.test;testing-default-domain-import-1;
|
|
|
|
https://example.com;foo;s.test;testing-default-domain-import-2;
|
|
|
|
CSV,
|
|
|
|
);
|
|
|
|
fclose($handle);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function tearDown(): void
|
|
|
|
{
|
|
|
|
if (is_string($this->tempCsvFile)) {
|
|
|
|
unlink($this->tempCsvFile);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[Test]
|
|
|
|
public function defaultDomainIsIgnoredWhenExplicitlyProvided(): void
|
|
|
|
{
|
|
|
|
if (! $this->tempCsvFile) {
|
|
|
|
$this->fail('It was not possible to create a temporary CSV file');
|
|
|
|
}
|
|
|
|
|
|
|
|
[$output] = $this->exec([ImportCommand::NAME, 'csv'], [$this->tempCsvFile, ';']);
|
|
|
|
|
|
|
|
self::assertStringContainsString('https://shlink.io: Imported', $output);
|
|
|
|
self::assertStringContainsString('https://example.com: Imported', $output);
|
|
|
|
|
|
|
|
[$listOutput1] = $this->exec(
|
|
|
|
[ListShortUrlsCommand::NAME, '--show-domain', '--search-term', 'testing-default-domain-import-1'],
|
|
|
|
);
|
|
|
|
self::assertStringContainsString('DEFAULT', $listOutput1);
|
|
|
|
[$listOutput1] = $this->exec(
|
|
|
|
[ListShortUrlsCommand::NAME, '--show-domain', '--search-term', 'testing-default-domain-import-2'],
|
|
|
|
);
|
|
|
|
self::assertStringContainsString('DEFAULT', $listOutput1);
|
|
|
|
}
|
|
|
|
}
|