. */ use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Poniverse\Ponyfm\Track; use Poniverse\Ponyfm\User; class ApiTest extends TestCase { use DatabaseMigrations; use WithoutMiddleware; public function testUploadWithoutFile() { $user = factory(User::class)->create(); $this->actingAs($user) ->post('/api/v1/tracks', []) ->seeJsonEquals([ 'errors' => [ 'track' => ['You must upload an audio file!'] ], 'message' => 'Validation failed' ]); $this->assertResponseStatus(400); } public function testUploadWithFileWithoutAutoPublish() { $this->callUploadWithParameters([ 'auto_publish' => false ]); $this->seeJsonEquals([ 'message' => "This track has been accepted for processing! Poll the status_url to know when it's ready to publish. It will be published at the track_url.", 'id' => "1", 'status_url' => "http://ponyfm-testing.poni/api/v1/tracks/1/upload-status", 'track_url' => "http://ponyfm-testing.poni/tracks/1-ponyfm-test-file", ]); } public function testUploadWithFileWithAutoPublish() { $this->callUploadWithParameters([]); $this->seeJsonEquals([ 'message' => "This track has been accepted for processing! Poll the status_url to know when it has been published. It will be published at the track_url.", 'id' => "1", 'status_url' => "http://ponyfm-testing.poni/api/v1/tracks/1/upload-status", 'track_url' => "http://ponyfm-testing.poni/tracks/1-ponyfm-test-file", ]); $this->visit('/tracks/1-ponyfm-test'); $this->assertResponseStatus(200); } public function testUploadWithOptionalData() { $track = factory(Track::class)->make(); $this->callUploadWithParameters([ 'title' => $track->title, 'track_type_id' => $track->track_type_id, 'genre' => $track->genre, 'album' => $track->album, 'released_at' => \Carbon\Carbon::create(2015, 1, 1, 1, 1, 1)->toIso8601String(), 'description' => $track->description, 'lyrics' => $track->lyrics, 'is_vocal' => true, 'is_explicit' => true, 'is_downloadable' => false, 'is_listed' => false, 'metadata' => $track->metadata ], [ 'cover' => $this->getTestFileForUpload('ponyfm-transparent-cover-art.png') ]); $this->seeInDatabase('genres', [ 'name' => $track->genre ]); $this->seeInDatabase('albums', [ 'title' => $track->album ]); $this->seeInDatabase('images', [ 'id' => 1, 'uploaded_by' => $this->user->id ]); $this->seeInDatabase('tracks', [ 'title' => $track->title, 'user_id' => $this->user->id, 'track_type_id' => $track->track_type_id, 'released_at' => "2015-01-01 01:01:01", 'description' => $track->description, 'lyrics' => $track->lyrics, 'is_vocal' => true, 'is_explicit' => true, 'is_downloadable' => false, 'is_listed' => false, 'cover_id' => 1, 'metadata' => $track->metadata ]); } }