タグ列の番号飛びを許容
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								tests/fixture/Csv/tag-33-column.utf8.csv
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tests/fixture/Csv/tag-33-column.utf8.csv
									
									
									
									
										vendored
									
									
										Normal 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,あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と,な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む
 | 
			
		||||
		
		
			
  | 
		Reference in New Issue
	
	Block a user