mirror of
https://github.com/manyfold3d/manyfold.git
synced 2026-10-22 11:42:19 -05:00
110 lines
3.7 KiB
Ruby
110 lines
3.7 KiB
Ruby
require "rails_helper"
|
|
|
|
# libraries GET /libraries(.:format) libraries#index
|
|
# POST /libraries(.:format) libraries#create
|
|
# new_library GET /libraries/new(.:format) libraries#new
|
|
# edit_library GET /libraries/:id/edit(.:format) libraries#edit
|
|
# library GET /libraries/:id(.:format) libraries#show
|
|
# PATCH /libraries/:id(.:format) libraries#update
|
|
# PUT /libraries/:id(.:format) libraries#update
|
|
# DELETE /libraries/:id(.:format) libraries#destroy
|
|
|
|
RSpec.describe "Libraries" do
|
|
context "when signed out" do
|
|
it "needs testing when multiuser is enabled"
|
|
end
|
|
|
|
context "when signed in" do
|
|
let!(:library) do
|
|
create(:library) do |l|
|
|
create_list(:model, 2, library: l)
|
|
end
|
|
end
|
|
|
|
describe "GET /settings/libraries" do
|
|
before { get "/settings/libraries" }
|
|
|
|
it "denies permission", :as_member do
|
|
expect(response).to have_http_status(:not_found)
|
|
end
|
|
|
|
it "shows list", :as_administrator do
|
|
expect(response).to have_http_status(:success)
|
|
end
|
|
end
|
|
|
|
describe "POST /libraries/" do
|
|
before { post "/libraries", params: {library: {name: "new", path: "."}} }
|
|
|
|
it "creates a new library", :as_administrator do
|
|
expect(response).to redirect_to("/libraries/#{Library.last.to_param}")
|
|
end
|
|
|
|
it "is denied to non-admins", :as_moderator do
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
end
|
|
|
|
describe "GET /libraries/new" do
|
|
before { get "/libraries/new" }
|
|
|
|
it "shows the new library form", :as_administrator do
|
|
expect(response).to have_http_status(:success)
|
|
end
|
|
|
|
it "is denied to non-admins", :as_moderator do
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
end
|
|
|
|
describe "GET /libraries/:id/edit" do
|
|
before { get "/libraries/#{library.to_param}/edit" }
|
|
|
|
it "shows the edit library form", :as_administrator do
|
|
expect(response).to have_http_status(:success)
|
|
end
|
|
|
|
it "is denied to non-administrators", :as_moderator do
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
end
|
|
|
|
describe "GET /libraries/:id" do
|
|
it "redirects to models index with library filter", :as_member do
|
|
get "/libraries/#{library.to_param}"
|
|
expect(response).to redirect_to("/models?library=#{library.public_id}")
|
|
end
|
|
end
|
|
|
|
describe "PATCH /libraries/:id" do
|
|
before { patch "/libraries/#{library.to_param}", params: {library: {name: "new"}} }
|
|
|
|
it "updates the library", :as_administrator do
|
|
expect(response).to redirect_to("/settings/libraries")
|
|
end
|
|
|
|
it "is denied to non-administrators", :as_moderator do
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
end
|
|
|
|
describe "DELETE /libraries/:id" do
|
|
before do
|
|
# Add a model and file to test cascading removal
|
|
model = create(:model, library: library)
|
|
create(:model_file, model: model)
|
|
# Remove library
|
|
delete "/libraries/#{library.to_param}"
|
|
end
|
|
|
|
it "removes the library", :as_administrator do
|
|
expect(response).to redirect_to("/settings/libraries")
|
|
end
|
|
|
|
it "is denied to non-administrators", :as_moderator do
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
end
|
|
end
|
|
end
|