|
|
|
|
@ -2,38 +2,50 @@
|
|
|
|
|
|
|
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
|
|
RSpec.describe SubmittersRequestChangesController, type: :controller do
|
|
|
|
|
describe 'Request Changes' do
|
|
|
|
|
let(:account) { create(:account) }
|
|
|
|
|
let(:user) { create(:user, account: account) }
|
|
|
|
|
let(:template) { create(:template, account: account, author: user) }
|
|
|
|
|
let(:submission) { create(:submission, template: template, account: account, created_by_user: user) }
|
|
|
|
|
let(:submitter) { create(:submitter, submission: submission, account: account, completed_at: 1.hour.ago) }
|
|
|
|
|
let(:submitter) do
|
|
|
|
|
create(
|
|
|
|
|
:submitter,
|
|
|
|
|
submission: submission,
|
|
|
|
|
account: account,
|
|
|
|
|
completed_at: 1.hour.ago,
|
|
|
|
|
uuid: template.submitters.first['uuid']
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
sign_in user
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe 'GET #request_changes' do
|
|
|
|
|
it 'renders the request changes modal' do
|
|
|
|
|
get :request_changes, params: { slug: submitter.slug }, xhr: true
|
|
|
|
|
describe 'GET /submitters/:slug/request_changes' do
|
|
|
|
|
it 'renders the request changes modal when xhr request' do
|
|
|
|
|
get "/submitters/#{submitter.slug}/request_changes",
|
|
|
|
|
headers: { 'X-Requested-With' => 'XMLHttpRequest' }
|
|
|
|
|
|
|
|
|
|
expect(response).to have_http_status(:ok)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe 'POST #request_changes' do
|
|
|
|
|
describe 'POST /submitters/:slug/request_changes' do
|
|
|
|
|
context 'when user can request changes' do
|
|
|
|
|
it 'updates submitter and sends notifications' do
|
|
|
|
|
expect do
|
|
|
|
|
post :request_changes, params: { slug: submitter.slug, reason: 'Please fix the signature' }
|
|
|
|
|
post "/submitters/#{submitter.slug}/request_changes",
|
|
|
|
|
params: { reason: 'Please fix the signature' }
|
|
|
|
|
end.to change { submitter.reload.changes_requested_at }.from(nil)
|
|
|
|
|
.and change { submitter.reload.completed_at }.to(nil)
|
|
|
|
|
|
|
|
|
|
expect(response).to redirect_to(submission_path(submission))
|
|
|
|
|
expect(response).to have_http_status(:found)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'creates submission event' do
|
|
|
|
|
expect do
|
|
|
|
|
post :request_changes, params: { slug: submitter.slug, reason: 'Fix this' }
|
|
|
|
|
post "/submitters/#{submitter.slug}/request_changes",
|
|
|
|
|
params: { reason: 'Fix this' }
|
|
|
|
|
end.to change(SubmissionEvent, :count).by(1)
|
|
|
|
|
|
|
|
|
|
event = SubmissionEvent.last
|
|
|
|
|
@ -45,11 +57,16 @@ RSpec.describe SubmittersRequestChangesController, type: :controller do
|
|
|
|
|
context 'when user cannot request changes' do
|
|
|
|
|
let(:other_user) { create(:user, account: account) }
|
|
|
|
|
|
|
|
|
|
before { sign_in other_user }
|
|
|
|
|
before do
|
|
|
|
|
sign_out user
|
|
|
|
|
sign_in other_user
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'redirects with alert' do
|
|
|
|
|
post :request_changes, params: { slug: submitter.slug, reason: 'Fix this' }
|
|
|
|
|
expect(response).to redirect_to(root_path)
|
|
|
|
|
post "/submitters/#{submitter.slug}/request_changes",
|
|
|
|
|
params: { reason: 'Fix this' }
|
|
|
|
|
|
|
|
|
|
expect(response).to have_http_status(:found)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|