diff --git a/app/views/broadcasts/_file_form.html.erb b/app/views/broadcasts/_file_form.html.erb index 55714a5..7ab4f5b 100644 --- a/app/views/broadcasts/_file_form.html.erb +++ b/app/views/broadcasts/_file_form.html.erb @@ -1,4 +1,4 @@ <%= bootstrap_form_for model, layout: :inline, remote: true do |form| %> - <%= form.file_field :files, direct_upload: true, multiple: true, accept: "*", hide_label: true, wrapper_class: "w-65 mr-2", id: "broadcast_files_#{token}" %> + <%= form.file_field :files, direct_upload: true, multiple: true, accept: "*", hide_label: true, required: true, wrapper_class: "w-65 mr-2", id: "broadcast_files_#{token}" %> <%= form.button fa_icon("upload", text: "Add File"), class: "btn btn-primary", type: :submit, data: { disable_with: fa_icon("spinner", text: "Adding File") } %> <% end %> diff --git a/app/views/public/broadcasts/_file_form.html.erb b/app/views/public/broadcasts/_file_form.html.erb index 5830c05..369bbf4 100644 --- a/app/views/public/broadcasts/_file_form.html.erb +++ b/app/views/public/broadcasts/_file_form.html.erb @@ -1,4 +1,4 @@ <%= bootstrap_form_for model, url: broadcast_url(token: token), layout: :inline, remote: true do |form| %> - <%= form.file_field :files, direct_upload: true, multiple: true, accept: "*", hide_label: true, wrapper_class: "w-65 mr-2", id: "broadcast_files_#{token}" %> + <%= form.file_field :files, direct_upload: true, multiple: true, accept: "*", hide_label: true, required: true, wrapper_class: "w-65 mr-2", id: "broadcast_files_#{token}" %> <%= form.button fa_icon("upload", text: "Add File"), class: "btn btn-primary", type: :submit, data: { disable_with: fa_icon("spinner", text: "Adding File") } %> <% end %> \ No newline at end of file diff --git a/spec/features/user_managing_broadcasts_spec.rb b/spec/features/user_managing_broadcasts_spec.rb index 27e8741..ab3d71f 100644 --- a/spec/features/user_managing_broadcasts_spec.rb +++ b/spec/features/user_managing_broadcasts_spec.rb @@ -40,12 +40,12 @@ feature "User managing broadcasts" do scenario "visit show page of broadcast", js: true do broadcast = create(:broadcast, :with_stream, :with_files, project: project) recording = create(:broadcast_recording, broadcast: broadcast) - + visit project_broadcast_path(project, broadcast) expect(page).to have_content("Live stream is waiting to begin.") expect(page).to have_content("Copy URL") - + within "#files" do expect(page).to have_content("contract.pdf") end @@ -54,6 +54,17 @@ feature "User managing broadcasts" do expect(page).to have_content(recording.download_file_name) end + scenario "form will not submit if user clicks Add files without selected files", js: true do + broadcast = create(:broadcast, :with_stream, :with_files, project: project) + + visit project_broadcast_path(project, broadcast) + + expect(page).to have_content("Live stream is waiting to begin.") + expect(page).to have_content add_file_button + + click_on add_file_button + end + scenario "visit multi-view broadcast page", js: true do broadcast_one = create(:broadcast, :with_stream, :with_files, name: "Broadcast 1", project: project) broadcast_two = create(:broadcast, :with_stream, :with_files, name: "Broadcast 2", project: project) @@ -80,8 +91,13 @@ feature "User managing broadcasts" do end end + private + def add_file_button + 'Add File' + end + def broadcast_name_field "broadcast[name]" end