diff --git a/app/policies/broadcast_policy.rb b/app/policies/broadcast_policy.rb index 15e7524..4c562e5 100644 --- a/app/policies/broadcast_policy.rb +++ b/app/policies/broadcast_policy.rb @@ -20,6 +20,10 @@ class BroadcastPolicy < ApplicationPolicy end def destroy_file? + if user.nil? || user.user.nil? + return false + end + user.manager? || user.account_manager? end end diff --git a/app/views/broadcasts/_file.html.erb b/app/views/broadcasts/_file.html.erb index 670050d..dec0579 100644 --- a/app/views/broadcasts/_file.html.erb +++ b/app/views/broadcasts/_file.html.erb @@ -1,5 +1,5 @@
- <% show_delete = policy(broadcast).destroy_file? %> + <% show_delete = controller.class.module_parent.to_s == "Public" ? false : policy(broadcast).destroy_file? %> <% file_class = show_delete ? "col-8" : "col-12" %>
  • diff --git a/spec/channels/broadcasts_channel_spec.rb b/spec/channels/broadcasts_channel_spec.rb index a540e3f..633ccd2 100644 --- a/spec/channels/broadcasts_channel_spec.rb +++ b/spec/channels/broadcasts_channel_spec.rb @@ -56,7 +56,7 @@ RSpec.describe BroadcastsChannel, type: :channel do describe ".broadcast_file_upload_updates" do it 'broadcasts to the channel with the right data' do broadcast = create(:broadcast, :with_stream, :with_files, skip_create_callback: true) - files_content = ApplicationController.render partial: "broadcasts/file", collection: broadcast.files + files_content = ApplicationController.render partial: "broadcasts/file", locals: { broadcast: broadcast }, collection: broadcast.files expect { BroadcastsChannel.broadcast_file_upload_updates(broadcast, broadcast.files, "pagination_content") diff --git a/spec/controllers/api/broadcasts_controller_spec.rb b/spec/controllers/api/broadcasts_controller_spec.rb index ee5e3af..5927bca 100644 --- a/spec/controllers/api/broadcasts_controller_spec.rb +++ b/spec/controllers/api/broadcasts_controller_spec.rb @@ -106,7 +106,7 @@ RSpec.describe Api::BroadcastsController, type: :controller do included = JSON.parse(response.body).dig('included') expect(relationships.keys).to include('files') - expect(included.size).to eq 1 + expect(included.size).to eq 3 expect(included.first.dig("id")).to eq broadcast.files.first.id.to_s expect(included.first.dig("type")).to eq 'active_storage_attachment' end diff --git a/spec/controllers/public/broadcasts_controller_spec.rb b/spec/controllers/public/broadcasts_controller_spec.rb index 8850bd7..f42338d 100644 --- a/spec/controllers/public/broadcasts_controller_spec.rb +++ b/spec/controllers/public/broadcasts_controller_spec.rb @@ -87,6 +87,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, project: project ) } it "uploads files to broadcast" do + allow(BroadcastsChannel).to receive(:broadcast_file_upload_updates) patch :update, params: { token: broadcast.token, broadcast: file_params }, xhr: true expect(broadcast.files.count).to eq(1)