Files
old-holivud2/spec/controllers/misc_releases_controller_spec.rb
2020-06-24 04:48:12 +02:00

117 lines
3.5 KiB
Ruby

require "rails_helper"
RSpec.describe MiscReleasesController, type: :controller do
render_views
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: user.primary_account) }
before do
sign_in user
end
describe "#index" do
it "responds successfully" do
get :index, params: { project_id: project }
expect(response).to be_successful
end
it "renders content" do
release = create(:misc_release, project: project,
person_first_name: "My",
person_last_name: "Release",
person_phone: "5551234567",
person_email: "jane.doe@test.com")
create(:note, notable: release, content: "Some notes here")
get :index, params: { project_id: project }
expect(response.body).to have_content "My Release"
expect(response.body).to have_content "P: 5551234567"
expect(response.body).to have_content "jane.doe@test.com"
expect(response.body).to have_content "Some notes here"
expect(response.body).to have_content "Manage"
end
context "when there are no misc releases" do
it "renders an empty message" do
get :index, params: { project_id: project }
expect(response.body).to have_content("Misc Releases will appear here")
end
end
context "when there are many records" do
it "paginates the table" do
create_list(:misc_release, 20, project: project)
get :index, params: { project_id: project }
expect(response.body).to have_link("2", href: project_misc_releases_path(project, page: 2))
end
end
context "for xhr request" do
it "filters the releases by a query param" do
misc_releases = [
create(:misc_release, person_name: "Adam Sandler", project: project),
create(:misc_release, person_name: "Zoe Perry", project: project),
]
get :index, params: { project_id: project, query: "Zoe" }, xhr: true
expect(response.body).not_to have_content("Adam Sandler")
expect(response.body).to have_content("Zoe Perry")
end
end
end
describe "#destroy" do
let!(:misc_release) { create(:misc_release, project: project) }
it "responds with redirect" do
delete :destroy, params: { project_id: project, id: misc_release }
expect(response).to be_redirect
expect(response).to redirect_to [project, :misc_releases]
end
it "sets the flash" do
delete :destroy, params: { project_id: project, id: misc_release }
expect(flash.alert).not_to be_nil
end
it "destroys the record" do
expect {
delete :destroy, params: { project_id: project, id: misc_release }
}.to change(MiscRelease, :count).by(-1)
end
end
private
def misc_release_params
attributes_for(:misc_release).merge(exploitable_rights_params)
end
def minor_misc_release_params
attributes_for(:misc_release, :minor_with_guardian_photo).merge(exploitable_rights_params)
end
def exploitable_rights_params
{
applicable_medium_id: ApplicableMedium.last.id,
applicable_medium_text: "applicable_media",
territory_id: Territory.last.id,
territory_text: "territory",
term_id: Term.last.id,
term_text: "term",
restriction_id: Restriction.last.id,
restriction_text: "restrictions",
}
end
end