Implement API sounds/create
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
describe 'API sounds' do
|
||||
subject { response }
|
||||
|
||||
before { api_sign_in }
|
||||
|
||||
describe 'sound show' do
|
||||
@@ -6,7 +8,6 @@ describe 'API sounds' do
|
||||
let(:request_method) { :get }
|
||||
let(:request_path) { api_sound_path(sound) }
|
||||
let(:request_show) { send request_method, request_path }
|
||||
subject { response }
|
||||
|
||||
before { request_show }
|
||||
|
||||
@@ -36,4 +37,41 @@ describe 'API sounds' do
|
||||
it { is_expected.to have_http_status 200 }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'sounds create' do
|
||||
let(:file) { attributes_for(:sound)[:file] }
|
||||
let(:upload) { fixture_file_upload file.path, file.content_type }
|
||||
let(:sound) { { file: upload } }
|
||||
|
||||
before { post api_sounds_path, sound: sound }
|
||||
|
||||
it { is_expected.to have_http_status 201 }
|
||||
|
||||
it 'creates the sound' do
|
||||
get response.location
|
||||
expect(response.body).to eq File.read(file.path, mode: 'rb')
|
||||
end
|
||||
|
||||
it 'returns the sound' do
|
||||
expect(json).to match(
|
||||
sound: {
|
||||
id: an_instance_of(Fixnum),
|
||||
sha256: /\A\h+\z/,
|
||||
mime_type: 'audio/mpeg'
|
||||
}
|
||||
)
|
||||
end
|
||||
|
||||
context 'when sound is invalid' do
|
||||
let(:sound) { { file: nil } }
|
||||
|
||||
it { is_expected.to have_http_status 422 }
|
||||
|
||||
it 'returns errors' do
|
||||
expect(json :any).to include(
|
||||
sha256: [an_instance_of(String)]
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user