92 lines
2.8 KiB
Ruby
92 lines
2.8 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe MedicalReleasesController, 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(:medical_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 "Some notes here"
|
|
expect(response.body).to have_content "Manage"
|
|
end
|
|
|
|
context "when there are no medical releases" do
|
|
it "renders an empty message" do
|
|
get :index, params: { project_id: project }
|
|
|
|
expect(response.body).to have_content("Medical releases will appear here")
|
|
end
|
|
end
|
|
|
|
context "when there are many records" do
|
|
it "paginates the table" do
|
|
create_list(:medical_release, 20, project: project)
|
|
|
|
get :index, params: { project_id: project }
|
|
|
|
expect(response.body).to have_link("2", href: project_medical_releases_path(project, page: 2))
|
|
end
|
|
end
|
|
|
|
context "for xhr request" do
|
|
it "filters the releases by a query param" do
|
|
medical_releases = [
|
|
create(:medical_release, person_name: "Adam Sandler", project: project),
|
|
create(:medical_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!(:medical_release) { create(:medical_release, project: project) }
|
|
|
|
it "responds with redirect" do
|
|
delete :destroy, params: { project_id: project, id: medical_release }
|
|
|
|
expect(response).to be_redirect
|
|
expect(response).to redirect_to [project, :medical_releases]
|
|
end
|
|
|
|
it "sets the flash" do
|
|
delete :destroy, params: { project_id: project, id: medical_release }
|
|
|
|
expect(flash.alert).not_to be_nil
|
|
end
|
|
|
|
it "destroys the record" do
|
|
expect {
|
|
delete :destroy, params: { project_id: project, id: medical_release }
|
|
}.to change(MedicalRelease, :count).by(-1)
|
|
end
|
|
end
|
|
end
|