115 lines
2.8 KiB
Ruby
115 lines
2.8 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Admin::CastingSubmissionsController, type: :controller do
|
|
|
|
let!(:current_user) { create(:user, :admin) }
|
|
|
|
before do
|
|
sign_in(current_user)
|
|
end
|
|
|
|
describe "#index" do
|
|
it "returns a successful response" do
|
|
get :index
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
end
|
|
|
|
describe "#new" do
|
|
it "returns a successful response" do
|
|
get :new
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
|
|
it "assigns user, accounts" do
|
|
get :new
|
|
|
|
expect(assigns(:casting_submission)).not_to be_nil
|
|
expect(assigns(:accounts)).to eq Account.all
|
|
end
|
|
end
|
|
|
|
describe "#create" do
|
|
it "does create a new record" do
|
|
expect {
|
|
post :create, params: { casting_submission: casting_submission_params }
|
|
}.to change(CastingSubmission, :count)
|
|
end
|
|
end
|
|
|
|
describe "#edit" do
|
|
let(:casting_submission) { create(:casting_submission) }
|
|
|
|
it "returns a successful response" do
|
|
get :edit, params: { id: casting_submission }
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
|
|
it "assigns casting submission" do
|
|
get :edit, params: { id: casting_submission }
|
|
|
|
expect(assigns(:casting_submission)).to eq casting_submission
|
|
end
|
|
end
|
|
|
|
describe "#update" do
|
|
let(:casting_submission) { create(:casting_submission) }
|
|
|
|
it "redirects to casting submissions page" do
|
|
patch :update, params: { id: casting_submission, casting_submission: update_params }
|
|
|
|
expect(response).to be_redirect
|
|
expect(response).to redirect_to admin_casting_submissions_path
|
|
end
|
|
|
|
it "sets a flash notice" do
|
|
patch :update, params: { id: casting_submission, casting_submission: update_params }
|
|
|
|
expect(flash.notice).to eq "The casting submission has been updated"
|
|
end
|
|
|
|
it "updates casting submission" do
|
|
patch :update, params: { id: casting_submission, casting_submission: update_params }
|
|
|
|
expect(casting_submission.reload.zoom_meeting_url).to eq new_zoom_meeting_url
|
|
end
|
|
end
|
|
|
|
describe "#complete" do
|
|
let(:casting_submission) { create(:casting_submission) }
|
|
|
|
it "sets interviewed_at on casting submission" do
|
|
expect(casting_submission.interviewed_at).to be_nil
|
|
|
|
post :complete, params: { id: casting_submission }
|
|
|
|
expect(casting_submission.reload.interviewed_at).not_to be_nil
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def casting_submission_params
|
|
casting_call = create(:casting_call)
|
|
|
|
attributes_for(:casting_submission).except(:interviewed_at).merge(casting_call_id: casting_call.id)
|
|
end
|
|
|
|
def update_params
|
|
{
|
|
zoom_meeting_url: new_zoom_meeting_url
|
|
}
|
|
end
|
|
|
|
def new_zoom_meeting_url
|
|
"https://s01web.zoom.us/j/11111?pwd=Ab123Cq34"
|
|
end
|
|
|
|
def invalid_meeting_url_flash_error
|
|
t 'casting_submissions.validation_errors.invalid_meeting_url'
|
|
end
|
|
end
|