95 lines
2.8 KiB
Ruby
95 lines
2.8 KiB
Ruby
require "spec_helper"
|
|
|
|
describe CollectionsController do
|
|
include LoginMacros
|
|
include RedirectExpectationHelper
|
|
|
|
let(:collection) { create(:collection) }
|
|
|
|
describe "GET #index" do
|
|
it "assigns subtitle with collection title and subcollections" do
|
|
get :index, params: { collection_id: collection.name }
|
|
expect(assigns[:page_subtitle]).to eq("#{collection.title} - Subcollections")
|
|
end
|
|
|
|
context "denies access for work that isn't visible to user" do
|
|
subject { get :index, params: { work_id: work } }
|
|
let(:success) { expect(response).to render_template("index") }
|
|
let(:success_admin) { success }
|
|
|
|
include_examples "denies access for work that isn't visible to user"
|
|
end
|
|
|
|
context "denies access for restricted work to guest" do
|
|
let(:work) { create(:work, restricted: true) }
|
|
|
|
it "redirects with an error" do
|
|
get :index, params: { work_id: work }
|
|
it_redirects_to_with_error(root_path, "Sorry, you don't have permission to access the page you were trying to reach. Please log in.")
|
|
end
|
|
end
|
|
|
|
context "when indexing collections for an object" do
|
|
context "when work does not exist" do
|
|
it "raises an error" do
|
|
expect do
|
|
get :index, params: { work_id: 0 }
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
end
|
|
|
|
context "when work exists" do
|
|
let(:work) { create(:work) }
|
|
|
|
it "renders the index" do
|
|
get :index, params: { work_id: work.id }
|
|
expect(response).to render_template :index
|
|
end
|
|
end
|
|
|
|
context "when collection does not exist" do
|
|
it "raises an error" do
|
|
expect do
|
|
get :index, params: { collection_id: "not_here" }
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
end
|
|
|
|
context "when collection exists" do
|
|
let(:collection) { create(:collection) }
|
|
|
|
it "renders the index" do
|
|
get :index, params: { collection_id: collection.name }
|
|
expect(response).to render_template :index
|
|
end
|
|
end
|
|
|
|
context "when user does not exist" do
|
|
it "raises an error" do
|
|
expect do
|
|
get :index, params: { user_id: "not_here" }
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
end
|
|
|
|
context "when user exists" do
|
|
let(:user) { create(:user) }
|
|
|
|
it "renders the index" do
|
|
get :index, params: { user_id: user.login }
|
|
expect(response).to render_template :index
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "GET #show" do
|
|
context "when collection does not exist" do
|
|
it "raises an error" do
|
|
expect do
|
|
get :show, params: { id: "nonexistent" }
|
|
end.to raise_error ActiveRecord::RecordNotFound
|
|
end
|
|
end
|
|
end
|
|
end
|