Example #1
0
 public function testSync()
 {
     $media = new Media();
     $media->sync($this->mediaPath);
     // Standard mp3 files under root path should be recognized
     $this->seeInDatabase('songs', ['path' => $this->mediaPath . '/full.mp3']);
     // Ogg files and audio files in subdirectories should be recognized
     $this->seeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/back-in-black.ogg']);
     // 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);
     $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);
 }
Example #2
0
 public function testWatchDirectoryDeleted()
 {
     $this->expectsEvents(LibraryChanged::class);
     $media = new Media();
     $media->sync($this->mediaPath);
     $media->syncByWatchRecord(new InotifyWatchRecord("MOVED_FROM,ISDIR {$this->mediaPath}/subdir"));
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/sic.mp3']);
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/no-name.MP3']);
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/back-in-black.mp3']);
 }
Example #3
0
 public function testWatchDirectoryDeleted()
 {
     $this->expectsEvents(LibraryChanged::class);
     $media = new Media();
     $media->sync($this->mediaPath);
     $path = $this->mediaPath . '/subdir';
     $record = m::mock(FSWatchRecord::class, ['isDeleted' => true, 'getPath' => $path, 'isFile' => false, 'isDir' => true, 'isValidEvent' => true], ["{$path} IsDir"]);
     $media->syncFSWatchRecord($record);
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/sic.mp3']);
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/no-name.MP3']);
     $this->notSeeInDatabase('songs', ['path' => $this->mediaPath . '/subdir/back-in-black.mp3']);
 }
Example #4
0
 public function testDotDirectories()
 {
     config(['koel.ignore_dot_files' => false]);
     $media = new Media();
     $media->sync($this->mediaPath);
     $this->seeInDatabase('albums', ['name' => 'Hidden Album']);
     config(['koel.ignore_dot_files' => true]);
     $media->sync($this->mediaPath);
     $this->notSeeInDatabase('albums', ['name' => 'Hidden Album']);
 }