Files
old-holivud2/spec/controllers/public/talent_releases_controller_spec.rb
2020-08-20 06:50:51 +02:00

105 lines
3.8 KiB
Ruby

require "rails_helper"
RSpec.describe Public::TalentReleasesController, type: :controller do
let(:user) { create(:user) }
let(:project) { create(:project, account: user.primary_account) }
render_views
describe "#create" do
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)
post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, talent_release: { person_address_city: "Albuquerque" } }
body = CGI.unescape_html(response.body)
expect(body).to match /Person first name can't be blank/
expect(body).to match /Person last name can't be blank/
expect(body).to match /Photos must be included/
expect(body).to match />can't be blank</
end
it "responds with success " do
contract_template = create(:contract_template, project: project)
post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, talent_release: talent_release_params }
expect(response).to be_successful
end
it "responds with success when guardian photo is attached for minor" do
contract_template = create(:contract_template, project: project)
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: minor_appearance_release_params }
expect(response).to be_successful
end
it "responds with success when guardian photo is not attached for minor" do
contract_template = create(:contract_template, project: project)
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: minor_appearance_release_params(false) }
expect(response).to be_successful
end
it "runs headshots job" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: talent_release_params }
}.to(
have_enqueued_job(AddHeadshotCollectionUidToProjectJob)
.with(project)
)
end
it "runs set tags for releasable job" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: talent_release_params }
}.to(
have_enqueued_job(SetTagsForReleasableJob)
.with(TalentRelease.last)
)
end
it "runs attach contract to releasable job" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: talent_release_params }
}.to(
have_enqueued_job(AttachContractToReleasableJob)
.with(TalentRelease.last)
)
end
end
private
def talent_release_params
attributes_for(:talent_release, :native).except(:signature).merge(signature_param, photos_param)
end
def minor_appearance_release_params(with_guardian_photo = true)
minor_type = with_guardian_photo ? :minor_with_guardian_photo : :minor
attributes_for(:talent_release, minor_type).merge(signature_param, photos_param)
end
def photos_param
path = Rails.root.join("spec", "fixtures", "files", "person_photo.png")
photo = Rack::Test::UploadedFile.new(path, "image/png")
{ photos: [photo] }
end
def signature_param
file = file_fixture("signature.png")
data_uri = Base64Image.from_image(file).data_uri
{ signature_base64: data_uri }
end
end