require('spec_helper') describe Projects::UploadsController do let(:project) { create(:project) } let(:user) { create(:user) } let(:jpg) { fixture_file_upload(Rails.root + 'spec/fixtures/rails_sample.jpg', 'image/jpg') } let(:txt) { fixture_file_upload(Rails.root + 'spec/fixtures/doc_sample.txt', 'text/plain') } describe 'POST #create' do before do sign_in(user) project.team << [user, :developer] end context "without params['file']" do it 'returns an error' do post :create, project_id: project.to_param, format: :json expect(response.status).to eq(422) end end context 'with valid image' do before do post :create, project_id: project.to_param, file: jpg, format: :json end it 'returns a content with original filename, new link, and correct type.' do expect(response.body).to match '\"alt\":\"rails_sample\"' expect(response.body).to match "\"url\":\"/#{project.path_with_namespace}/uploads" expect(response.body).to match '\"is_image\":true' end end context 'with valid non-image file' do before do post :create, project_id: project.to_param, file: txt, format: :json end it 'returns a content with original filename, new link, and correct type.' do expect(response.body).to match '\"alt\":\"doc_sample.txt\"' expect(response.body).to match "\"url\":\"/#{project.path_with_namespace}/uploads" expect(response.body).to match '\"is_image\":false' end end end end