Ejemplo n.º 1
0
 public function testSync()
 {
     $this->expectsEvents(LibraryChanged::class);
     $media = new Media();
     $media->sync($this->mediaPath);
     // Standard mp3 files under root path should be recognized
     $this->seeInDatabase('songs', ['path' => $this->mediaPath . '/full.mp3', 'track' => 5]);
     // Ogg files and audio files in subdirectories should be recognized
     $this->seeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/back-in-black.ogg']);
     // GitHub issue #380. folder.png should be copied and used as the cover for files
     // under subdir/
     $song = Song::wherePath($this->mediaPath . '/subdir/back-in-black.ogg')->first();
     $this->assertNotNull($song->album->cover);
     // File search shouldn't be case-sensitive.
     $this->seeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/no-name.MP3']);
     // Non-audio files shouldn't be recognized
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/rubbish.log']);
     // Broken/corrupted audio files shouldn't be recognized
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/fake.mp3']);
     // Artists should be created
     $this->seeInDatabase('artists', ['name' => 'Cuckoo']);
     $this->seeInDatabase('artists', ['name' => 'Koel']);
     // Albums should be created
     $this->seeInDatabase('albums', ['name' => 'Koel Testing Vol. 1']);
     // Albums and artists should be correctly linked
     $album = Album::whereName('Koel Testing Vol. 1')->first();
     $this->assertEquals('Koel', $album->artist->name);
     // Compilation albums, artists and songs must be recognized
     $song = Song::whereTitle('This song belongs to a compilation')->first();
     $this->assertNotNull($song->contributing_artist_id);
     $this->assertTrue($song->album->is_compilation);
     $this->assertEquals(Artist::VARIOUS_ID, $song->album->artist_id);
     $currentCover = $album->cover;
     $song = Song::orderBy('id', 'desc')->first();
     // Modified file should be recognized
     touch($song->path, $time = time());
     $media->sync($this->mediaPath);
     $song = Song::find($song->id);
     $this->assertEquals($time, $song->mtime);
     // Albums with a non-default cover should have their covers overwritten
     $this->assertEquals($currentCover, Album::find($album->id)->cover);
 }