2015-12-25 03:08:49 +01:00
< ? php
/**
* Pony . fm - A community for pony fan music .
* Copyright ( C ) 2015 Peter Deltchev
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
use Illuminate\Foundation\Testing\WithoutMiddleware ;
use Illuminate\Foundation\Testing\DatabaseMigrations ;
2016-01-01 01:12:30 +01:00
use Poniverse\Ponyfm\Models\Track ;
use Poniverse\Ponyfm\Models\User ;
2015-12-25 03:08:49 +01:00
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 );
}
2015-12-26 12:40:47 +01:00
public function testUploadWithFileWithoutAutoPublish () {
$this -> callUploadWithParameters ([
'auto_publish' => false
]);
2015-12-25 03:08:49 +01:00
2015-12-26 12:40:47 +01:00
$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 " ,
2015-12-27 16:31:54 +01:00
'track_url' => " http://ponyfm-testing.poni/tracks/1-ponyfm-test-file " ,
2015-12-26 12:40:47 +01:00
]);
}
2015-12-25 03:08:49 +01:00
2015-12-26 12:40:47 +01:00
public function testUploadWithFileWithAutoPublish () {
$this -> callUploadWithParameters ([]);
2015-12-25 03:08:49 +01:00
$this -> seeJsonEquals ([
2015-12-26 12:40:47 +01:00
'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 " ,
2015-12-27 16:31:54 +01:00
'track_url' => " http://ponyfm-testing.poni/tracks/1-ponyfm-test-file " ,
2015-12-25 03:08:49 +01:00
]);
2015-12-26 12:40:47 +01:00
$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
2015-12-27 11:36:49 +01:00
], [
'cover' => $this -> getTestFileForUpload ( 'ponyfm-transparent-cover-art.png' )
2015-12-26 12:40:47 +01:00
]);
$this -> seeInDatabase ( 'genres' , [
'name' => $track -> genre
]);
$this -> seeInDatabase ( 'albums' , [
'title' => $track -> album
]);
2015-12-27 11:36:49 +01:00
$this -> seeInDatabase ( 'images' , [
'id' => 1 ,
'uploaded_by' => $this -> user -> id
]);
2015-12-26 12:40:47 +01:00
$this -> seeInDatabase ( 'tracks' , [
'title' => $track -> title ,
2015-12-27 11:36:49 +01:00
'user_id' => $this -> user -> id ,
2015-12-26 12:40:47 +01:00
'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 ,
2015-12-27 11:36:49 +01:00
'cover_id' => 1 ,
2015-12-26 12:40:47 +01:00
'metadata' => $track -> metadata
]);
2015-12-25 03:08:49 +01:00
}
}