Implement API sounds/create

This commit is contained in:
Thibault Jouan
2015-05-06 06:28:02 +00:00
parent b8d25dc918
commit 54ae036adc
3 changed files with 54 additions and 3 deletions

View File

@@ -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