diff --git a/app/views/acquired_media_releases/index.html.erb b/app/views/acquired_media_releases/index.html.erb index edd521c..9218015 100644 --- a/app/views/acquired_media_releases/index.html.erb +++ b/app/views/acquired_media_releases/index.html.erb @@ -1,16 +1,19 @@
+ />
<% if policy(AcquiredMediaRelease).new? %> - <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :acquired_media_release], class: "btn btn-primary mr-2 mb-2" %> +
+ <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :acquired_media_release], class: "btn btn-primary mr-2 mb-2" %> +
<% end %> <% if @acquired_media_releases.any? && policy(AcquiredMediaRelease).tag_multiple? %> <%= button_to_bulk_tagging(@project) %> <% end %> - + <% if @acquired_media_releases.any? && policy(AcquiredMediaRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @acquired_media_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @acquired_media_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/acquired_media_releases/index.js.erb b/app/views/acquired_media_releases/index.js.erb index 4bc7e72..4ffebf9 100644 --- a/app/views/acquired_media_releases/index.js.erb +++ b/app/views/acquired_media_releases/index.js.erb @@ -1,3 +1,5 @@ $("#acquired_media_releases").html("<%= j render(@acquired_media_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#acquired_media_releases_pagination").html("<%= j will_paginate(@acquired_media_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @acquired_media_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/location_releases/index.html.erb b/app/views/location_releases/index.html.erb index b69328f..e1227b8 100644 --- a/app/views/location_releases/index.html.erb +++ b/app/views/location_releases/index.html.erb @@ -1,8 +1,11 @@
+ />
<% if policy(LocationRelease).new? %> - <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :location_release], class: "btn btn-primary mr-2 mb-2" %> +
+ <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :location_release], class: "btn btn-primary mr-2 mb-2" %> +
<% end %> <% if @location_releases.any? && policy(LocationRelease).tag_multiple? %> @@ -10,7 +13,7 @@ <% end %> <% if @location_releases.any? && policy(LocationRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @location_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @location_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/location_releases/index.js.erb b/app/views/location_releases/index.js.erb index 263a8a6..0ce1d89 100644 --- a/app/views/location_releases/index.js.erb +++ b/app/views/location_releases/index.js.erb @@ -1,3 +1,5 @@ $("#location_releases").html("<%= j render(@location_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#location_releases_pagination").html("<%= j will_paginate(@location_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @location_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/material_releases/index.html.erb b/app/views/material_releases/index.html.erb index d9caf62..e2c518d 100644 --- a/app/views/material_releases/index.html.erb +++ b/app/views/material_releases/index.html.erb @@ -1,8 +1,11 @@
+ />
<% if policy(MaterialRelease).new? %> - <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :material_release], class: "btn btn-primary mr-2 mb-2" %> +
+ <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :material_release], class: "btn btn-primary mr-2 mb-2" %> +
<% end %> <% if @material_releases.any? && policy(MaterialRelease).tag_multiple? %> @@ -10,7 +13,7 @@ <% end %> <% if @material_releases.any? && policy(MaterialRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @material_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @material_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/material_releases/index.js.erb b/app/views/material_releases/index.js.erb index 69a9833..ac2d433 100644 --- a/app/views/material_releases/index.js.erb +++ b/app/views/material_releases/index.js.erb @@ -1,3 +1,5 @@ $("#material_releases").html("<%= j render(@material_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#material_releases_pagination").html("<%= j will_paginate(@material_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @material_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/medical_releases/index.html.erb b/app/views/medical_releases/index.html.erb index abba148..f30d323 100644 --- a/app/views/medical_releases/index.html.erb +++ b/app/views/medical_releases/index.html.erb @@ -1,12 +1,15 @@
+ />
<% if @medical_releases.any? && policy(MedicalRelease).tag_multiple? %> - <%= button_to_bulk_tagging(@project) %> +
+ <%= button_to_bulk_tagging(@project) %> +
<% end %> <% if @medical_releases.any? && policy(MedicalRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @medical_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @medical_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/medical_releases/index.js.erb b/app/views/medical_releases/index.js.erb index e720a01..e6d506c 100644 --- a/app/views/medical_releases/index.js.erb +++ b/app/views/medical_releases/index.js.erb @@ -1,3 +1,5 @@ $("#medical_releases").html("<%= j render(@medical_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#medical_releases_pagination").html("<%= j will_paginate(@medical_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @medical_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/misc_releases/index.html.erb b/app/views/misc_releases/index.html.erb index 010786f..a0b296a 100644 --- a/app/views/misc_releases/index.html.erb +++ b/app/views/misc_releases/index.html.erb @@ -1,12 +1,15 @@
+ />
<% if @misc_releases.any? && policy(MiscRelease).tag_multiple? %> - <%= button_to_bulk_tagging(@project) %> +
+ <%= button_to_bulk_tagging(@project) %> +
<% end %> <% if @misc_releases.any? && policy(MiscRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @misc_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @misc_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/misc_releases/index.js.erb b/app/views/misc_releases/index.js.erb index 24f3ccf..558f9f7 100644 --- a/app/views/misc_releases/index.js.erb +++ b/app/views/misc_releases/index.js.erb @@ -1,3 +1,5 @@ $("#misc_releases").html("<%= j render(@misc_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#misc_releases_pagination").html("<%= j will_paginate(@misc_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @misc_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/music_releases/index.html.erb b/app/views/music_releases/index.html.erb index 3bb28ef..5f52754 100644 --- a/app/views/music_releases/index.html.erb +++ b/app/views/music_releases/index.html.erb @@ -1,8 +1,11 @@
+ />
<% if policy(MusicRelease).new? %> - <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :music_release], class: "btn btn-primary mr-2 mb-2" %> +
+ <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :music_release], class: "btn btn-primary mr-2 mb-2" %> +
<% end %> <% if @music_releases.any? && policy(MusicRelease).tag_multiple? %> @@ -10,7 +13,7 @@ <% end %> <% if @music_releases.any? && policy(MusicRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @music_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2" %> + <%= button_to "Download", [@project, :contract_downloads, release_type: @music_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2" %> <% end %> <%= bootstrap_form_with url: [@project, :music_releases], method: :get, remote: true, layout: :inline, id: "search" do |form| %> diff --git a/app/views/music_releases/index.js.erb b/app/views/music_releases/index.js.erb index 6c1706d..f3fc928 100644 --- a/app/views/music_releases/index.js.erb +++ b/app/views/music_releases/index.js.erb @@ -1,3 +1,5 @@ $("#music_releases").html("<%= j render(@music_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#music_releases_pagination").html("<%= j will_paginate(@music_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @music_releases.total_entries %>); \ No newline at end of file diff --git a/app/views/talent_releases/index.html.erb b/app/views/talent_releases/index.html.erb index 08a629d..6182f78 100644 --- a/app/views/talent_releases/index.html.erb +++ b/app/views/talent_releases/index.html.erb @@ -1,8 +1,11 @@
+ />
<% if policy(TalentRelease).new? %> - <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :talent_release], class: "btn btn-primary mr-2 mb-2" %> +
+ <%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :talent_release], class: "btn btn-primary mr-2 mb-2" %> +
<% end %> <% if @talent_releases.any? && policy(TalentRelease).tag_multiple? %> @@ -10,7 +13,7 @@ <% end %> <% if @talent_releases.any? && policy(TalentRelease).download_multiple? %> - <%= link_to "Download All", [@project, :contract_downloads, release_type: @talent_releases.name], method: :post, remote: true, class: "btn btn-light border ml-auto mr-2 mb-2", data: { + <%= button_to "Download", [@project, :contract_downloads, release_type: @talent_releases.name], id: "download_releases", method: :post, remote: true, class: "btn btn-light border mr-2 mb-2", data: { disable_with: "Please wait..." } %> <% end %> diff --git a/app/views/talent_releases/index.js.erb b/app/views/talent_releases/index.js.erb index e396385..76e549f 100644 --- a/app/views/talent_releases/index.js.erb +++ b/app/views/talent_releases/index.js.erb @@ -1,3 +1,5 @@ $("#talent_releases").html("<%= j render(@talent_releases) %>"); $("form input[type='search']").val("<%= params[:query] %>"); $("#talent_releases_pagination").html("<%= j will_paginate(@talent_releases) %>"); +$("#selected_releases_form").attr('data-releasable-ids', JSON.stringify([])); +$("#total_entries").val(<%= @talent_releases.total_entries %>); \ No newline at end of file diff --git a/spec/features/user_managing_medical_releases_spec.rb b/spec/features/user_managing_medical_releases_spec.rb index 7c43ddc..fa25a4e 100644 --- a/spec/features/user_managing_medical_releases_spec.rb +++ b/spec/features/user_managing_medical_releases_spec.rb @@ -197,13 +197,13 @@ feature "User managing medical releases" do expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1) end - scenario "Download All is visible" do + scenario "Download button is visible" do create(:medical_release_with_contract_template, :native, project: project) create(:medical_release_with_contract_template, :non_native, project: project) visit project_medical_releases_path(project) - expect(page).to have_content download_all_button + expect(page).to have_content download_button end scenario "Download action in Manage menu is visible" do @@ -264,7 +264,7 @@ feature "User managing medical releases" do visit project_medical_releases_path(project) - expect(page).not_to have_content download_all_button + expect(page).not_to have_content download_button end scenario "Download action in Manage menu is not visible" do @@ -308,7 +308,7 @@ feature "User managing medical releases" do visit project_medical_releases_path(project) - expect(page).not_to have_content download_all_button + expect(page).not_to have_content download_button end scenario "Download action in Manage menu is not visible" do @@ -341,8 +341,8 @@ feature "User managing medical releases" do private - def download_all_button - 'Download All' + def download_button + 'Download' end def download_action diff --git a/spec/features/user_managing_misc_releases_spec.rb b/spec/features/user_managing_misc_releases_spec.rb index 81beb63..ba6a56b 100644 --- a/spec/features/user_managing_misc_releases_spec.rb +++ b/spec/features/user_managing_misc_releases_spec.rb @@ -62,12 +62,12 @@ feature "User managing misc releases" do sign_in current_user end - scenario "Download All is visible" do + scenario "Download is visible" do create(:misc_release_with_contract_template, :native, project: project) visit project_misc_releases_path(project) - expect(page).to have_content download_all_button + expect(page).to have_content download_button end scenario "Downloading PDF of native misc release is possible" do @@ -145,8 +145,8 @@ feature "User managing misc releases" do private - def download_all_button - 'Download All' + def download_button + 'Download' end def view_release_pdf_link_for(release) diff --git a/spec/jobs/generate_contracts_zip_job_spec.rb b/spec/jobs/generate_contracts_zip_job_spec.rb index 48e9cfc..74d1e80 100644 --- a/spec/jobs/generate_contracts_zip_job_spec.rb +++ b/spec/jobs/generate_contracts_zip_job_spec.rb @@ -86,34 +86,36 @@ describe GenerateContractsZipJob do end it "generates ZIP containing CSV file with all filtered releases data for filtered releases" do - lowercase_plural = subject.constantize.model_name.plural - GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete') + if subject.respond_to?(:complete) && subject.respond_to?(:incomplete) + lowercase_plural = subject.constantize.model_name.plural + GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete') - complete_releases = project.public_send(lowercase_plural).complete - incomplete_releases = project.public_send(lowercase_plural).incomplete + complete_releases = project.public_send(lowercase_plural).complete + incomplete_releases = project.public_send(lowercase_plural).incomplete - generated_zip = download.file.blob.download - csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv" - Zip::InputStream.open(StringIO.new(generated_zip)) do |io| - while entry = io.get_next_entry - next unless entry.name == csv_file_name + generated_zip = download.file.blob.download + csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv" + Zip::InputStream.open(StringIO.new(generated_zip)) do |io| + while entry = io.get_next_entry + next unless entry.name == csv_file_name - csv_file = entry.get_input_stream.read + csv_file = entry.get_input_stream.read - release_class = Object.const_get subject - release_headers = release_class.csv_headers + release_class = Object.const_get subject + release_headers = release_class.csv_headers - release_headers.each do |header| - expect(csv_file).to match header - expect(csv_file).not_to match translation_missing - end + release_headers.each do |header| + expect(csv_file).to match header + expect(csv_file).not_to match translation_missing + end - complete_releases.each do |release| - expect(csv_file).to match release.person_first_name - end + complete_releases.each do |release| + expect(csv_file).to match release.person_first_name + end - incomplete_releases.each do |release| - expect(csv_file).not_to match release.person_first_name + incomplete_releases.each do |release| + expect(csv_file).not_to match release.person_first_name + end end end end @@ -164,16 +166,19 @@ describe GenerateContractsZipJob do end context "generates ZIP for acquired media releases" do - let(:release) { create(:acquired_media_release_with_contract_template, :native, project: project) } + let(:release) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "John Doe") } + let(:release2) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "Jane Doe") } + let(:release3) { create(:acquired_media_release_with_contract_template, :native, project: project, name: "Brad Doe") } subject { 'AcquiredMediaRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for appearance releases" do - let(:release) { create(:appearance_release_with_contract_template, :native, project: project, person_name: "John Doe") } - let(:incomplete_release) { create(:appearance_release_with_contract_template, project: project, person_name: "Jane Doe") } - let(:complete_release) { create(:appearance_release_with_contract_template, :non_native, project: project, person_name: "Brad Doe") } + let(:release) { create(:appearance_release_with_contract_template, :native, project: project, person_name: "John") } + let(:incomplete_release) { create(:appearance_release_with_contract_template, project: project, person_name: "Jane") } + let(:complete_release) { create(:appearance_release_with_contract_template, :non_native, project: project, person_name: "Brad") } subject { 'AppearanceRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" @@ -181,45 +186,63 @@ describe GenerateContractsZipJob do end context "generates ZIP for location releases" do - let(:release) { create(:location_release_with_contract_template, :native, project: project) } + let(:release) { create(:location_release_with_contract_template, :native, project: project, name: "John") } + let(:release2) { create(:location_release_with_contract_template, :native, project: project, name: "Jane") } + let(:release3) { create(:location_release_with_contract_template, :native, project: project, name: "Brad") } subject { 'LocationRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for material releases" do - let(:release) { create(:material_release_with_contract_template, :native, project: project) } + let(:release) { create(:material_release_with_contract_template, :native, project: project, name: "John") } + let(:release2) { create(:material_release_with_contract_template, :native, project: project, name: "Jane") } + let(:release3) { create(:material_release_with_contract_template, :native, project: project, name: "Brad") } subject { 'MaterialRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for medical releases" do - let(:release) { create(:medical_release_with_contract_template, :native, project: project) } + let(:release) { create(:medical_release_with_contract_template, :native, project: project, person_name: "John Doe") } + let(:release2) { create(:medical_release_with_contract_template, :native, project: project, person_name: "Jane Doe") } + let(:release3) { create(:medical_release_with_contract_template, :native, project: project, person_name: "Brad Doe") } subject { 'MedicalRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for misc releases" do - let(:release) { create(:misc_release_with_contract_template, :native, project: project) } + let(:release) { create(:misc_release_with_contract_template, :native, project: project, person_name: "John Doe") } + let(:release2) { create(:misc_release_with_contract_template, :native, project: project, person_name: "Jane Doe") } + let(:release3) { create(:misc_release_with_contract_template, :native, project: project, person_name: "Brad Doe") } subject { 'MiscRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for music releases" do - let(:release) { create(:music_release_with_contract_template, project: project) } + let(:release) { create(:music_release_with_contract_template, project: project, name: "John") } + let(:release2) { create(:music_release_with_contract_template, project: project, name: "Jane") } + let(:release3) { create(:music_release_with_contract_template, project: project, name: "Brad") } subject { 'MusicRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "generates ZIP for talent releases" do - let(:release) { create(:talent_release_with_contract_template, :native, project: project) } + let(:release) { create(:talent_release_with_contract_template, :native, project: project, person_name: "John Doe") } + let(:release2) { create(:talent_release_with_contract_template, :native, project: project, person_name: "Jane Doe") } + let(:release3) { create(:talent_release_with_contract_template, :native, project: project, person_name: "Brad Doe") } subject { 'TalentRelease' } it_behaves_like "generates ZIP containig CSV file with all releases data" + it_behaves_like "generates ZIP containig CSV file with specific releases data" end context "When there are errors" do