タグ列の番号飛びを許容

This commit is contained in:
shibafu 2020-05-14 00:27:09 +09:00
parent 41ce5229c7
commit 0ca7b8b7e1
3 changed files with 26 additions and 7 deletions

View File

@ -147,15 +147,14 @@ class CheckinCsvImporter
private function parseTags(int $line, array $record): array
{
$tags = [];
for ($i = 1; $i <= 32; $i++) {
$column = 'タグ' . $i;
if (empty($record[$column])) {
break;
foreach (array_keys($record) as $column) {
if (preg_match('/\Aタグ\d{1,2}\z/u', $column) !== 1) {
continue;
}
$tag = trim($record[$column]);
if (empty($tag)) {
break;
continue;
}
if (mb_strlen($tag) > 255) {
throw new CsvImportException("{$line} 行 : {$column}は255文字以内にしてください。");
@ -165,6 +164,9 @@ class CheckinCsvImporter
}
$tags[] = Tag::firstOrCreate(['name' => $tag]);
if (count($tags) >= 32) {
break;
}
}
return $tags;

View File

@ -215,7 +215,7 @@ class CheckinCsvImporterTest extends TestCase
$importer->execute();
}
public function testTagCantAcceptJumpedColumnUTF8()
public function testTagCanAcceptJumpedColumnUTF8()
{
$user = factory(User::class)->create();
@ -225,8 +225,9 @@ class CheckinCsvImporterTest extends TestCase
$tags = $ejaculation->tags()->get();
$this->assertSame(1, $user->ejaculations()->count());
$this->assertCount(1, $tags);
$this->assertCount(2, $tags);
$this->assertEquals('貧乳', $tags[0]->name);
$this->assertEquals('巨乳', $tags[1]->name);
}
public function testTagCantAcceptMultilineUTF8()
@ -239,6 +240,20 @@ class CheckinCsvImporterTest extends TestCase
$importer->execute();
}
public function testTagCanAccept32ColumnsUTF8()
{
$user = factory(User::class)->create();
$importer = new CheckinCsvImporter($user, __DIR__ . '/../../fixture/Csv/tag-33-column.utf8.csv');
$importer->execute();
$ejaculation = $user->ejaculations()->first();
$tags = $ejaculation->tags()->get();
$this->assertSame(1, $user->ejaculations()->count());
$this->assertCount(32, $tags);
$this->assertEquals('み', $tags[31]->name);
}
public function testSourceIsCsv()
{
$user = factory(User::class)->create();

View File

@ -0,0 +1,2 @@
日時,タグ1,タグ2,タグ3,タグ4,タグ5,タグ6,タグ7,タグ8,タグ9,タグ10,タグ11,タグ12,タグ13,タグ14,タグ15,タグ16,タグ17,タグ18,タグ19,タグ20,タグ21,タグ22,タグ23,タグ24,タグ25,タグ26,タグ27,タグ28,タグ29,タグ30,タグ31,タグ32,タグ33
2020/01/23 06:01,あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と,な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む
1 日時 タグ1 タグ2 タグ3 タグ4 タグ5 タグ6 タグ7 タグ8 タグ9 タグ10 タグ11 タグ12 タグ13 タグ14 タグ15 タグ16 タグ17 タグ18 タグ19 タグ20 タグ21 タグ22 タグ23 タグ24 タグ25 タグ26 タグ27 タグ28 タグ29 タグ30 タグ31 タグ32 タグ33
2 2020/01/23 06:01