From a95d0fb8507da79c9b308d2e0b2ac627b43089e5 Mon Sep 17 00:00:00 2001 From: Chris Roos Date: Fri, 14 Jun 2024 13:51:32 +0100 Subject: [PATCH 1/2] WIP: Add basic tests for projects admin --- spec/factories/project.rb | 4 ++ spec/features/admin/admin_projects_spec.rb | 47 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 spec/features/admin/admin_projects_spec.rb diff --git a/spec/factories/project.rb b/spec/factories/project.rb index e1da44760..ab6fbd5e8 100644 --- a/spec/factories/project.rb +++ b/spec/factories/project.rb @@ -33,5 +33,9 @@ content_type: 'image/png') end end + + factory :internal_project do + user_id { nil } + end end end diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb new file mode 100644 index 000000000..b4527ee29 --- /dev/null +++ b/spec/features/admin/admin_projects_spec.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'Admin projects', type: :request do + let(:admin_user) { create(:admin_user) } + + describe 'GET /projects' do + it 'responds 200' do + create(:project) + + sign_in_as admin_user + + get "/admin/projects" + expect(response).to have_http_status(:success) + end + end + + describe 'GET /projects/:id' do + it 'responds 200 for an internal project' do + project = create(:internal_project) + + sign_in_as admin_user + + get "/admin/projects/#{project.id}" + + expect(response).to have_http_status(:success) + end + + it 'responds 404 for a user created project' do + project = create(:project) + + sign_in_as admin_user + + get "/admin/projects/#{project.id}" + + expect(response).to have_http_status(:not_found) + end + end + + private + + def sign_in_as(user) + allow(User).to receive(:from_omniauth).and_return(admin_user) + get '/auth/callback' + end +end From 1e3bf6eb554004a451569196f6203e5e8619eb28 Mon Sep 17 00:00:00 2001 From: Chris Roos Date: Fri, 14 Jun 2024 13:52:09 +0100 Subject: [PATCH 2/2] WIP: Fix project with Admin::ProjectsController To avoid the following error when visiting /admin/projects in development: undefined method `host=' for # --- app/controllers/admin/projects_controller.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index 35e3c0b01..8f1dd1fac 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -2,7 +2,7 @@ module Admin class ProjectsController < Admin::ApplicationController - before_action :set_host_for_local_storage + include ActiveStorage::SetCurrent def scoped_resource resource_class.internal_projects @@ -13,11 +13,5 @@ def destroy_image image.purge redirect_back(fallback_location: requested_resource) end - - private - - def set_host_for_local_storage - ActiveStorage::Current.host = request.base_url if Rails.application.config.active_storage.service == :local - end end end