Compare commits

..

10 Commits

Author SHA1 Message Date
Bilal
76940714b0 fix buttons position 2020-09-07 13:34:18 +03:00
Bilal
08a07c2a22 fix specs 2020-09-07 13:19:46 +03:00
Bilal
25fa534760 improve Download button for Talent releases 2020-09-07 13:07:27 +03:00
Bilal
c32e8f5109 improve Download button for Music releases 2020-09-07 13:03:01 +03:00
Bilal
f7c5bb7b0f improve Download button for Misc releases 2020-09-07 13:00:38 +03:00
Bilal
7d93d89e8e improve Download button for Medical releases 2020-09-07 12:54:00 +03:00
Bilal
4128d96941 improve Download button for Material releases 2020-09-07 12:47:31 +03:00
Bilal
1cf18e8f85 fix search match specs for generating contracts 2020-09-07 12:41:55 +03:00
Bilal
3694817fef improve Download button for Location releases 2020-09-07 12:15:09 +03:00
Bilal
a77cf9344c improve Download button for Acq.Media releases 2020-09-07 12:04:34 +03:00
39 changed files with 137 additions and 461 deletions

View File

@@ -1,30 +1,4 @@
// Do not allow file attachments in rich text content // Do not allow file attachments in rich text content
addEventListener("trix-file-accept", function(event) { addEventListener("trix-file-accept", function(event) {
event.preventDefault(); event.preventDefault();
}); })
Trix.config.textAttributes.underline = {
style: { "textDecoration": "underline" },
inheritable: true,
parser: function (element) {
var style = window.getComputedStyle(element);
return style.textDecoration === "underline";
}
}
document.addEventListener('trix-initialize', function (e) {
const trix = e.target;
const toolBar = trix.toolbarElement;
// // Creation of the button
const button = document.createElement("button");
button.setAttribute("type", "button");
button.setAttribute("class", "trix-button trix-button--icon trix-button--icon-underline");
button.setAttribute("data-trix-attribute", "underline");
button.setAttribute("title", "underline");
button.setAttribute("tabindex", "-1");
button.innerText = "U";
// Attachment of the button to the toolBar
toolBar.querySelector('.trix-button-group--text-tools').appendChild(button);
});

View File

@@ -461,10 +461,3 @@ a[data-behavior=seekable-timecode] {
border-color: transparent; border-color: transparent;
border-bottom: 3px solid #ff0000; border-bottom: 3px solid #ff0000;
} }
//Trix underline style
trix-toolbar {
.trix-button--icon-underline::before {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3Cpath d='M12 17c3.31 0 6-2.69 6-6V3h-2.5v8c0 1.93-1.57 3.5-3.5 3.5S8.5 12.93 8.5 11V3H6v8c0 3.31 2.69 6 6 6zm-7 2v2h14v-2H5z'/%3E%3C/svg%3E");
}
}

View File

@@ -48,10 +48,6 @@ u {
margin-right: -30px; margin-right: -30px;
} }
.embed-person-photo {
text-align: right;
}
.do-not-copy-warning { .do-not-copy-warning {
padding-right: 15px; padding-right: 15px;
} }

View File

@@ -1,5 +1,4 @@
class AccountSessionsController < ApplicationController class AccountSessionsController < ApplicationController
skip_before_action :redirect_locked_accounts
def update def update
authorize :account_session, :update? authorize :account_session, :update?
session[:active_account] = account_session_params[:account_id] session[:active_account] = account_session_params[:account_id]

View File

@@ -1,31 +0,0 @@
class Admin::AccountLocksController < Admin::ApplicationController
before_action :set_account
def create
authorize :account_lock, :create?
@account.update(locked: true)
redirect_to admin_accounts_path, notice: 'Account locked'
end
def destroy
authorize :account_lock, :destroy?
@account.update(locked: false)
redirect_to admin_accounts_path, notice: 'Account unlocked'
end
private
def set_account
if params[:account_id].present?
@account = Account.find_by(slug: params[:account_id])
else
failure_redirect
end
rescue ActiveRecord::RecordNotFound
failure_redirect
end
def failure_redirect
redirect_to admin_accounts_path, alert: 'Failed to find the account'
end
end

View File

@@ -13,7 +13,6 @@ class ApplicationController < ActionController::Base
include SetCurrentRequestDetails include SetCurrentRequestDetails
before_action :redirect_accountless before_action :redirect_accountless
before_action :redirect_locked_accounts
private private
@@ -30,12 +29,6 @@ class ApplicationController < ActionController::Base
end end
end end
def redirect_locked_accounts
if Current.user && !Current.user.admin? && Current.account.present? && Current.account.locked?
redirect_to locked_account_path
end
end
def signed_in_as_admin? def signed_in_as_admin?
signed_in? && current_user.admin? signed_in? && current_user.admin?
end end

View File

@@ -3,7 +3,7 @@ class ContractsController < ApplicationController
respond_to do |format| respond_to do |format|
format.pdf { send_contract_pdf } format.pdf { send_contract_pdf }
if Rails.env.development? || Rails.env.test? if Rails.env.development?
format.html { render_sample_html } format.html { render_sample_html }
end end
end end

View File

@@ -1,10 +0,0 @@
class LockedAccountsController < ApplicationController
skip_before_action :redirect_locked_accounts
skip_after_action :verify_policy_scoped
def index
unless Current.account.locked?
redirect_to projects_path
end
end
end

View File

@@ -1,9 +0,0 @@
class AccountLockPolicy < ApplicationPolicy
def create?
user.admin?
end
def destroy?
user.admin?
end
end

View File

@@ -1,16 +1,19 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @acquired_media_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(AcquiredMediaRelease).new? %> <% 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" %> <div class="mr-auto">
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :acquired_media_release], class: "btn btn-primary mr-2 mb-2" %>
</div>
<% end %> <% end %>
<% if @acquired_media_releases.any? && policy(AcquiredMediaRelease).tag_multiple? %> <% if @acquired_media_releases.any? && policy(AcquiredMediaRelease).tag_multiple? %>
<%= button_to_bulk_tagging(@project) %> <%= button_to_bulk_tagging(@project) %>
<% end %> <% end %>
<% if @acquired_media_releases.any? && policy(AcquiredMediaRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#acquired_media_releases").html("<%= j render(@acquired_media_releases) %>"); $("#acquired_media_releases").html("<%= j render(@acquired_media_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#acquired_media_releases_pagination").html("<%= j will_paginate(@acquired_media_releases) %>"); $("#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 %>);

View File

@@ -30,11 +30,6 @@
<%= link_to fa_icon("arrow-right", text: "Overview"), admin_account_path(account), class: "dropdown-item" %> <%= link_to fa_icon("arrow-right", text: "Overview"), admin_account_path(account), class: "dropdown-item" %>
<%= link_to fa_icon("pencil", text: "Edit"), edit_admin_account_path(account), class: "dropdown-item" %> <%= link_to fa_icon("pencil", text: "Edit"), edit_admin_account_path(account), class: "dropdown-item" %>
<%= link_to fa_icon("arrow-right", text: "Account Managers"), account_auths_path({ account_id: account.id}), class: "dropdown-item" %> <%= link_to fa_icon("arrow-right", text: "Account Managers"), account_auths_path({ account_id: account.id}), class: "dropdown-item" %>
<% if account.locked? %>
<%= link_to fa_icon("unlock", text: "Unlock Account"), [:admin, account, :lock], method: :delete, class: "dropdown-item" %>
<% else %>
<%= link_to fa_icon("lock", text: "Lock Account"), [:admin, account, :lock], method: :post, class: "dropdown-item" %>
<% end %>
</div> </div>
</div> </div>
</td> </td>

View File

@@ -4,31 +4,19 @@
</div> </div>
<hr> <hr>
<% end %> <% end %>
<% if preview %>
<h1>PREVIEW ONLY</h1>
<% end %>
<% if contract_template.body.present? %>
<%= contract_template.body %>
<br/>
<% end %>
<% if releasable.minor? && contract_template.guardian_clause.present? %>
<p class="text-left"><strong>Guardian Clause</strong></p>
<%= contract_template.guardian_clause %>
<% end %>
<div class="page"> <% if releasable.respond_to?(:question_1_answer) %>
<% if preview %>
<h1>PREVIEW ONLY</h1>
<% end %>
<% if releasable.model_name == "AppearanceRelease" && releasable.person_photo.attached? %>
<div class="embed-person-photo">
<%= image_tag releasable.photos.first.variant(auto_orient: true, resize: "200x200"), id: "top-person-photo" %>
</div>
<hr>
<% end %>
<% if contract_template.body.present? %>
<%= contract_template.body %>
<br/>
<% end %>
<% if releasable.minor? && contract_template.guardian_clause.present? %>
<p class="text-left"><strong>Guardian Clause</strong></p>
<%= contract_template.guardian_clause %>
<% end %>
</div>
<% if contract_template.present? && contract_template.has_questionnaire? %>
<div class="page"> <div class="page">
<%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %> <%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
</div> </div>

View File

@@ -1,8 +1,11 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @location_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(LocationRelease).new? %> <% 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" %> <div class="mr-auto">
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :location_release], class: "btn btn-primary mr-2 mb-2" %>
</div>
<% end %> <% end %>
<% if @location_releases.any? && policy(LocationRelease).tag_multiple? %> <% if @location_releases.any? && policy(LocationRelease).tag_multiple? %>
@@ -10,7 +13,7 @@
<% end %> <% end %>
<% if @location_releases.any? && policy(LocationRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#location_releases").html("<%= j render(@location_releases) %>"); $("#location_releases").html("<%= j render(@location_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#location_releases_pagination").html("<%= j will_paginate(@location_releases) %>"); $("#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 %>);

View File

@@ -1 +0,0 @@
<p><%= t '.account_locked_message' %></p>

View File

@@ -1,8 +1,11 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @material_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(MaterialRelease).new? %> <% 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" %> <div class="mr-auto">
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :material_release], class: "btn btn-primary mr-2 mb-2" %>
</div>
<% end %> <% end %>
<% if @material_releases.any? && policy(MaterialRelease).tag_multiple? %> <% if @material_releases.any? && policy(MaterialRelease).tag_multiple? %>
@@ -10,7 +13,7 @@
<% end %> <% end %>
<% if @material_releases.any? && policy(MaterialRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#material_releases").html("<%= j render(@material_releases) %>"); $("#material_releases").html("<%= j render(@material_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#material_releases_pagination").html("<%= j will_paginate(@material_releases) %>"); $("#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 %>);

View File

@@ -1,12 +1,15 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @medical_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if @medical_releases.any? && policy(MedicalRelease).tag_multiple? %> <% if @medical_releases.any? && policy(MedicalRelease).tag_multiple? %>
<%= button_to_bulk_tagging(@project) %> <div class="ml-auto">
<%= button_to_bulk_tagging(@project) %>
</div>
<% end %> <% end %>
<% if @medical_releases.any? && policy(MedicalRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#medical_releases").html("<%= j render(@medical_releases) %>"); $("#medical_releases").html("<%= j render(@medical_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#medical_releases_pagination").html("<%= j will_paginate(@medical_releases) %>"); $("#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 %>);

View File

@@ -1,12 +1,15 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @misc_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if @misc_releases.any? && policy(MiscRelease).tag_multiple? %> <% if @misc_releases.any? && policy(MiscRelease).tag_multiple? %>
<%= button_to_bulk_tagging(@project) %> <div class="ml-auto">
<%= button_to_bulk_tagging(@project) %>
</div>
<% end %> <% end %>
<% if @misc_releases.any? && policy(MiscRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#misc_releases").html("<%= j render(@misc_releases) %>"); $("#misc_releases").html("<%= j render(@misc_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#misc_releases_pagination").html("<%= j will_paginate(@misc_releases) %>"); $("#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 %>);

View File

@@ -1,8 +1,11 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @music_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(MusicRelease).new? %> <% 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" %> <div class="mr-auto">
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :music_release], class: "btn btn-primary mr-2 mb-2" %>
</div>
<% end %> <% end %>
<% if @music_releases.any? && policy(MusicRelease).tag_multiple? %> <% if @music_releases.any? && policy(MusicRelease).tag_multiple? %>
@@ -10,7 +13,7 @@
<% end %> <% end %>
<% if @music_releases.any? && policy(MusicRelease).download_multiple? %> <% 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 %> <% end %>
<%= bootstrap_form_with url: [@project, :music_releases], method: :get, remote: true, layout: :inline, id: "search" do |form| %> <%= bootstrap_form_with url: [@project, :music_releases], method: :get, remote: true, layout: :inline, id: "search" do |form| %>

View File

@@ -1,3 +1,5 @@
$("#music_releases").html("<%= j render(@music_releases) %>"); $("#music_releases").html("<%= j render(@music_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#music_releases_pagination").html("<%= j will_paginate(@music_releases) %>"); $("#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 %>);

View File

@@ -1,8 +1,11 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input id="total_entries" type=hidden value=<%= @talent_releases.total_entries %> />
<div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3"> <div class="d-md-flex d-sm-flex flex-sm-column flex-md-row flex-md-wrap mb-3">
<% if policy(TalentRelease).new? %> <% 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" %> <div class="mr-auto">
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :talent_release], class: "btn btn-primary mr-2 mb-2" %>
</div>
<% end %> <% end %>
<% if @talent_releases.any? && policy(TalentRelease).tag_multiple? %> <% if @talent_releases.any? && policy(TalentRelease).tag_multiple? %>
@@ -10,7 +13,7 @@
<% end %> <% end %>
<% if @talent_releases.any? && policy(TalentRelease).download_multiple? %> <% 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..." } %> disable_with: "Please wait..." } %>
<% end %> <% end %>

View File

@@ -1,3 +1,5 @@
$("#talent_releases").html("<%= j render(@talent_releases) %>"); $("#talent_releases").html("<%= j render(@talent_releases) %>");
$("form input[type='search']").val("<%= params[:query] %>"); $("form input[type='search']").val("<%= params[:query] %>");
$("#talent_releases_pagination").html("<%= j will_paginate(@talent_releases) %>"); $("#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 %>);

View File

@@ -1651,6 +1651,3 @@ en:
edit: Edit edit: Edit
report: Report report: Report
generating: Generating... generating: Generating...
locked_accounts:
index:
account_locked_message: This account is locked. Please contact a BIG admin.

View File

@@ -705,6 +705,3 @@ es:
production_elements_logs: Production Elements Logs, and more (ES) production_elements_logs: Production Elements Logs, and more (ES)
reduces_labor_cost: Reduces labor costs (ES) reduces_labor_cost: Reduces labor costs (ES)
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES) simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES)
locked_accounts:
index:
account_locked_message: This account is locked. Please contact a BIG admin. (ES)

View File

@@ -30,9 +30,7 @@ Rails.application.routes.draw do
namespace :admin do namespace :admin do
mount Sidekiq::Web => '/background_queue', as: :background_queue mount Sidekiq::Web => '/background_queue', as: :background_queue
resources :accounts, only: [:index, :new, :create, :edit, :update, :show] do resources :accounts, only: [:index, :new, :create, :edit, :update, :show]
resource :account_lock, path: :lock, as: :lock, only: [:create, :destroy]
end
resources :users, only: [:index, :new, :create, :edit, :update, :destroy] do resources :users, only: [:index, :new, :create, :edit, :update, :destroy] do
resource :masquerade, only: :create resource :masquerade, only: :create
end end
@@ -50,9 +48,7 @@ Rails.application.routes.draw do
scope "(:locale)", locale: AVAILABLE_LOCALES_REGEX do scope "(:locale)", locale: AVAILABLE_LOCALES_REGEX do
resource :account_session, only: [:update] resource :account_session, only: [:update]
resource :session, only: [:destroy] resource :session, only: [:destroy]
resource :account, only: [:new, :create, :update] do resource :account, only: [:new, :create, :update]
get 'locked' => 'locked_accounts#index'
end
resources :account_auths, only: [:index, :create, :update, :destroy] resources :account_auths, only: [:index, :create, :update, :destroy]
resources :projects, shallow: true do resources :projects, shallow: true do
resources :acquired_media_releases, except: [:show], concerns: [:contractable, :notable, :file_uploadable] resources :acquired_media_releases, except: [:show], concerns: [:contractable, :notable, :file_uploadable]

View File

@@ -1,5 +0,0 @@
class AddLockedToAccounts < ActiveRecord::Migration[6.0]
def change
add_column :accounts, :locked, :boolean, default: false
end
end

View File

@@ -95,8 +95,7 @@ CREATE TABLE public.accounts (
slug character varying, slug character varying,
plan_uid character varying, plan_uid character varying,
created_at timestamp without time zone NOT NULL, created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL
locked boolean DEFAULT false
); );
@@ -4028,7 +4027,6 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200812060406'), ('20200812060406'),
('20200819070738'), ('20200819070738'),
('20200820082501'), ('20200820082501'),
('20200824171649'), ('20200824171649');
('20200908085319');

View File

@@ -19,22 +19,6 @@ FactoryBot.define do
amendment_clause "Amendment Legal Language" amendment_clause "Amendment Legal Language"
end end
trait :with_questionnaire_legal_text do
questionnaire_legal_text "Questionnaire Legal Text"
end
trait :with_one_question do
question_1_text "Is this a question?"
end
trait :with_exhibits do
exhibit_a_legal_text "Exhibit A legal text"
exhibit_b_legal_text "Exhibit B legal text"
exhibit_a_question_text "Exhibit A question text"
exhibit_b_question_text "Exhibit B question text"
end
factory :appearance_release_contract_template do factory :appearance_release_contract_template do
release_type "appearance" release_type "appearance"
end end

View File

@@ -30,24 +30,6 @@ feature "Admin managing accounts" do
expect(page).to have_content "Created at less than a minute ago" expect(page).to have_content "Created at less than a minute ago"
end end
scenario "locks and unlocks account" do
sign_in current_user
visit admin_signed_in_root_path
expect(Account.last.locked?).to eq false
click_button "Manage"
expect(page).not_to have_content "Unlock Account"
click_link "Lock Account"
expect(Account.last.locked?).to eq true
click_button "Manage"
expect(page).not_to have_content "Lock Account"
click_link "Unlock Account"
expect(Account.last.locked?).to eq false
end
scenario "sees videos for an account in the system" do scenario "sees videos for an account in the system" do
visit_account_overview_page visit_account_overview_page

View File

@@ -386,13 +386,6 @@ RSpec.feature 'User manages contract templates', type: :feature do
expect(ct.signature_legal_text.id).not_to eq ContractTemplate.last.signature_legal_text.id expect(ct.signature_legal_text.id).not_to eq ContractTemplate.last.signature_legal_text.id
end end
scenario 'trix editor has underline button', js: true do
visit new_project_contract_template_path(project)
select 'Appearance Release', from: 'Release type'
expect(page).to have_selector("button[data-trix-attribute='underline']")
end
context 'When the user is associate' do context 'When the user is associate' do
let(:current_user) { create(:user, :associate) } let(:current_user) { create(:user, :associate) }

View File

@@ -544,7 +544,7 @@ feature 'User managing appearance releases' do
expect(pdf_body).to have_content('Guardian Email') expect(pdf_body).to have_content('Guardian Email')
end end
scenario "viewing the contract PDF when exhibit A is signed and without questionnaire" do scenario "viewing the contract PDF when exhibit A is signed" do
contract_template = create(:appearance_release_contract_template, project: project, exhibit_a_legal_text: "Exhibit A legal text", exhibit_a_question_text: "Exhibit A question text") contract_template = create(:appearance_release_contract_template, project: project, exhibit_a_legal_text: "Exhibit A legal text", exhibit_a_question_text: "Exhibit A question text")
appearance_release = create(:appearance_release, appearance_release = create(:appearance_release,
:amendment_signed, :amendment_signed,
@@ -566,122 +566,10 @@ feature 'User managing appearance releases' do
expect(pdf_body).to have_content("John Doe") expect(pdf_body).to have_content("John Doe")
expect(pdf_body).to have_content exhibit_a_heading expect(pdf_body).to have_content "Exhibit A"
expect(pdf_body).to have_content "Exhibit A legal text" expect(pdf_body).to have_content "Exhibit A legal text"
expect(pdf_body).to have_content "Exhibit A question text" expect(pdf_body).to have_content "Exhibit A question text"
expect(pdf_body).to have_content "Answer to exhibit A question" expect(pdf_body).to have_content "Answer to exhibit A question"
expect(pdf_body).not_to have_content questionnaire_heading
expect(pdf_body).not_to have_content exhibit_b_heading
end
scenario "viewing the contract PDF when exhibit B is signed and without questionnaire" do
contract_template = create(:appearance_release_contract_template, project: project, exhibit_b_legal_text: "Exhibit B legal text", exhibit_b_question_text: "Exhibit B question text")
appearance_release = create(:appearance_release,
:amendment_signed,
:native,
contract_template: contract_template,
project: project,
person_first_name: "John",
person_last_name: "Doe",
exhibit_b_answer: "Answer to exhibit B question"
)
sign_in(current_user)
visit project_appearance_releases_path(project)
click_link *view_release_pdf_link_for(appearance_release)
expect(content_type).to eq("application/pdf")
expect(content_disposition).to include("inline")
expect(pdf_filename).to include("doe-john")
expect(pdf_body).to have_content("John Doe")
expect(pdf_body).to have_content exhibit_b_heading
expect(pdf_body).to have_content "Exhibit B legal text"
expect(pdf_body).to have_content "Exhibit B question text"
expect(pdf_body).to have_content "Answer to exhibit B question"
expect(pdf_body).not_to have_content questionnaire_heading
expect(pdf_body).not_to have_content exhibit_a_heading
end
scenario "viewing the contract PDF with questionnaire and without exhibits" do
contract_template = create(:appearance_release_contract_template, :with_questionnaire_legal_text, :with_one_question, project: project)
appearance_release = create(:appearance_release,
:amendment_signed,
:native,
contract_template: contract_template,
project: project,
person_first_name: "John",
person_last_name: "Doe",
question_1_answer: "Yes"
)
sign_in(current_user)
visit project_appearance_releases_path(project)
click_link *view_release_pdf_link_for(appearance_release)
expect(content_type).to eq("application/pdf")
expect(content_disposition).to include("inline")
expect(pdf_filename).to include("doe-john")
expect(pdf_body).to have_content questionnaire_heading
expect(pdf_body).to have_content contract_template.question_1_text
expect(pdf_body).to have_content appearance_release.question_1_answer
expect(pdf_body).not_to have_content exhibit_a_heading
expect(pdf_body).not_to have_content exhibit_b_heading
end
scenario "viewing the contract PDF with questionnaire and with exhibits" do
contract_template = create(:appearance_release_contract_template,
:with_questionnaire_legal_text,
:with_one_question,
:with_exhibits,
project: project)
appearance_release = create(:appearance_release,
:amendment_signed,
:native,
contract_template: contract_template,
project: project,
person_first_name: "John",
person_last_name: "Doe",
question_1_answer: "Yes",
exhibit_a_answer: "Exhibit A answer",
exhibit_b_answer: "Exhibit B answer"
)
sign_in(current_user)
visit project_appearance_releases_path(project)
click_link *view_release_pdf_link_for(appearance_release)
expect(content_type).to eq("application/pdf")
expect(content_disposition).to include("inline")
expect(pdf_filename).to include("doe-john")
expect(pdf_body).to have_content questionnaire_heading
expect(pdf_body).to have_content contract_template.question_1_text
expect(pdf_body).to have_content appearance_release.question_1_answer
expect(pdf_body).to have_content exhibit_a_heading
expect(pdf_body).to have_content contract_template.exhibit_a_legal_text.to_plain_text
expect(pdf_body).to have_content contract_template.exhibit_a_question_text
expect(pdf_body).to have_content appearance_release.exhibit_a_answer
expect(pdf_body).to have_content exhibit_b_heading
expect(pdf_body).to have_content contract_template.exhibit_b_legal_text.to_plain_text
expect(pdf_body).to have_content contract_template.exhibit_b_question_text
expect(pdf_body).to have_content appearance_release.exhibit_b_answer
end
scenario "viewing the contract PDF - it shows person photo on first page if person photo is attached" do
appearance_release = create(:appearance_release_with_contract_template, :native, :minor_with_guardian_photo, project: project)
visit view_release_pdf_html_preview_link_for(appearance_release)
person_photo_url = url_for(appearance_release.person_photo.variant(auto_orient: true, resize: "200x200")).to_s
expect(page).to have_selector("#top-person-photo[src^='#{person_photo_url}']")
end end
scenario 'deleting a release', js: true do scenario 'deleting a release', js: true do
@@ -1020,10 +908,6 @@ feature 'User managing appearance releases' do
['Download', href: appearance_release_contracts_path(appearance_release, format: 'pdf')] ['Download', href: appearance_release_contracts_path(appearance_release, format: 'pdf')]
end end
def view_release_pdf_html_preview_link_for(appearance_release)
appearance_release_contracts_path(appearance_release)
end
def successful_submission_message def successful_submission_message
'Your release was successfully submitted. Thank you.' 'Your release was successfully submitted. Thank you.'
end end
@@ -1103,16 +987,4 @@ feature 'User managing appearance releases' do
def amendment_signature_label def amendment_signature_label
t 'contracts.amendment_page.description_labels.amendment_signature' t 'contracts.amendment_page.description_labels.amendment_signature'
end end
def questionnaire_heading
t 'contracts.questionnaire.heading.appearance_release'
end
def exhibit_a_heading
t 'contracts.exhibit_a_page.heading.appearance_release'
end
def exhibit_b_heading
t 'contracts.exhibit_b_page.heading.appearance_release'
end
end end

View File

@@ -1,34 +0,0 @@
require "rails_helper"
feature "User managing locked account" do
let(:user) { create(:user, :account_manager) }
let(:project) { create(:project) }
before do
sign_in(user)
user.accounts.first.update(locked: true)
end
scenario "user is redirected to custom landing page when opens projects index page" do
paths = [
projects_path,
project_path(project),
project_task_requests_path(project),
project_contract_templates_path(project),
project_broadcasts_path(project),
project_videos_path(project),
]
paths.each do |path|
visit path
expect(page).to have_content locked_account_warning
end
end
private
def locked_account_warning
t 'locked_accounts.index.account_locked_message'
end
end

View File

@@ -197,13 +197,13 @@ feature "User managing medical releases" do
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1) expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
end 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, :native, project: project)
create(:medical_release_with_contract_template, :non_native, project: project) create(:medical_release_with_contract_template, :non_native, project: project)
visit project_medical_releases_path(project) visit project_medical_releases_path(project)
expect(page).to have_content download_all_button expect(page).to have_content download_button
end end
scenario "Download action in Manage menu is visible" do scenario "Download action in Manage menu is visible" do
@@ -244,32 +244,11 @@ feature "User managing medical releases" do
expect(pdf_filename).to include("doe-john") expect(pdf_filename).to include("doe-john")
expect(pdf_body).to have_content("John Doe") expect(pdf_body).to have_content("John Doe")
expect(pdf_body).to have_content questionnaire_heading.upcase expect(pdf_body).to have_content "MEDICAL QUESTIONNAIRE"
expect(pdf_body).to have_content "Question 1 text" expect(pdf_body).to have_content "Question 1 text"
expect(pdf_body).to have_content "Question 1 answer" expect(pdf_body).to have_content "Question 1 answer"
expect(pdf_body).to have_content "Questionnaire legal text" expect(pdf_body).to have_content "Questionnaire legal text"
end end
scenario 'viewing contract PDF without medical questionnaire' do
contract_template = create(:medical_release_contract_template, project: project)
medical_release = create(:medical_release,
:native,
contract_template: contract_template,
project: project,
person_first_name: "John",
person_last_name: "Doe",
)
sign_in(current_user)
visit project_medical_releases_path(project)
click_link *view_release_pdf_link_for(medical_release)
expect(content_type).to eq("application/pdf")
expect(content_disposition).to include("inline")
expect(pdf_filename).to include("doe-john")
expect(pdf_body).not_to have_content questionnaire_heading.upcase
end
end end
context "when the user is manager(project manager)" do context "when the user is manager(project manager)" do
@@ -285,7 +264,7 @@ feature "User managing medical releases" do
visit project_medical_releases_path(project) visit project_medical_releases_path(project)
expect(page).not_to have_content download_all_button expect(page).not_to have_content download_button
end end
scenario "Download action in Manage menu is not visible" do scenario "Download action in Manage menu is not visible" do
@@ -329,7 +308,7 @@ feature "User managing medical releases" do
visit project_medical_releases_path(project) visit project_medical_releases_path(project)
expect(page).not_to have_content download_all_button expect(page).not_to have_content download_button
end end
scenario "Download action in Manage menu is not visible" do scenario "Download action in Manage menu is not visible" do
@@ -362,8 +341,8 @@ feature "User managing medical releases" do
private private
def download_all_button def download_button
'Download All' 'Download'
end end
def download_action def download_action
@@ -520,8 +499,4 @@ feature "User managing medical releases" do
def dummy_signature_legal_text def dummy_signature_legal_text
'Some signature legal language' 'Some signature legal language'
end end
def questionnaire_heading
t 'contracts.questionnaire.heading.medical_release'
end
end end

View File

@@ -62,12 +62,12 @@ feature "User managing misc releases" do
sign_in current_user sign_in current_user
end end
scenario "Download All is visible" do scenario "Download is visible" do
create(:misc_release_with_contract_template, :native, project: project) create(:misc_release_with_contract_template, :native, project: project)
visit project_misc_releases_path(project) visit project_misc_releases_path(project)
expect(page).to have_content download_all_button expect(page).to have_content download_button
end end
scenario "Downloading PDF of native misc release is possible" do scenario "Downloading PDF of native misc release is possible" do
@@ -80,7 +80,7 @@ feature "User managing misc releases" do
end end
scenario 'viewing the contract PDF with questionnaire' do scenario 'viewing the contract PDF' do
misc_release = create(:misc_release, misc_release = create(:misc_release,
:native, :native,
contract_template: build(:misc_release_contract_template, question_1_text: 'Q1'), contract_template: build(:misc_release_contract_template, question_1_text: 'Q1'),
@@ -121,30 +121,10 @@ feature "User managing misc releases" do
expect(pdf_body).to have_content('Woman') expect(pdf_body).to have_content('Woman')
expect(pdf_body).to have_content('Brunette') expect(pdf_body).to have_content('Brunette')
expect(pdf_body).not_to have_content('Guardian Email') expect(pdf_body).not_to have_content('Guardian Email')
expect(pdf_body).to have_content questionnaire_heading.upcase expect(pdf_body).to have_content('QUESTIONNAIRE')
expect(pdf_body).to have_content('Q1') expect(pdf_body).to have_content('Q1')
expect(pdf_body).to have_content('A1') expect(pdf_body).to have_content('A1')
end end
scenario 'viewing the contract PDF without questionnaire' do
misc_release = create(:misc_release,
:native,
contract_template: build(:misc_release_contract_template),
project: project,
person_first_name: 'Jane',
person_last_name: 'Doe'
)
sign_in(current_user)
visit project_misc_releases_path(project)
click_link *view_release_pdf_link_for(misc_release)
expect(content_type).to eq('application/pdf')
expect(content_disposition).to include('inline')
expect(pdf_filename).to include('doe-jane')
expect(pdf_body).not_to have_content questionnaire_heading.upcase
end
end end
context "when the user is manager(project manager)" do context "when the user is manager(project manager)" do
@@ -165,8 +145,8 @@ feature "User managing misc releases" do
private private
def download_all_button def download_button
'Download All' 'Download'
end end
def view_release_pdf_link_for(release) def view_release_pdf_link_for(release)
@@ -235,8 +215,4 @@ feature "User managing misc releases" do
def view_release_pdf_link_for(release) def view_release_pdf_link_for(release)
['Download', href: misc_release_contracts_path(release, format: 'pdf')] ['Download', href: misc_release_contracts_path(release, format: 'pdf')]
end end
def questionnaire_heading
t 'contracts.questionnaire.heading.misc_release'
end
end end

View File

@@ -86,34 +86,36 @@ describe GenerateContractsZipJob do
end end
it "generates ZIP containing CSV file with all filtered releases data for filtered releases" do it "generates ZIP containing CSV file with all filtered releases data for filtered releases" do
lowercase_plural = subject.constantize.model_name.plural if subject.respond_to?(:complete) && subject.respond_to?(:incomplete)
GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete') lowercase_plural = subject.constantize.model_name.plural
GenerateContractsZipJob.perform_now(project, download, subject, [], '', 'complete')
complete_releases = project.public_send(lowercase_plural).complete complete_releases = project.public_send(lowercase_plural).complete
incomplete_releases = project.public_send(lowercase_plural).incomplete incomplete_releases = project.public_send(lowercase_plural).incomplete
generated_zip = download.file.blob.download generated_zip = download.file.blob.download
csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv" csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv"
Zip::InputStream.open(StringIO.new(generated_zip)) do |io| Zip::InputStream.open(StringIO.new(generated_zip)) do |io|
while entry = io.get_next_entry while entry = io.get_next_entry
next unless entry.name == csv_file_name 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_class = Object.const_get subject
release_headers = release_class.csv_headers release_headers = release_class.csv_headers
release_headers.each do |header| release_headers.each do |header|
expect(csv_file).to match header expect(csv_file).to match header
expect(csv_file).not_to match translation_missing expect(csv_file).not_to match translation_missing
end end
complete_releases.each do |release| complete_releases.each do |release|
expect(csv_file).to match release.person_first_name expect(csv_file).to match release.person_first_name
end end
incomplete_releases.each do |release| incomplete_releases.each do |release|
expect(csv_file).not_to match release.person_first_name expect(csv_file).not_to match release.person_first_name
end
end end
end end
end end
@@ -164,16 +166,19 @@ describe GenerateContractsZipJob do
end end
context "generates ZIP for acquired media releases" do 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' } subject { 'AcquiredMediaRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for appearance releases" do context "generates ZIP for appearance releases" do
let(:release) { create(:appearance_release_with_contract_template, :native, project: project, person_name: "John 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 Doe") } 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 Doe") } let(:complete_release) { create(:appearance_release_with_contract_template, :non_native, project: project, person_name: "Brad") }
subject { 'AppearanceRelease' } subject { 'AppearanceRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" it_behaves_like "generates ZIP containig CSV file with all releases data"
@@ -181,45 +186,63 @@ describe GenerateContractsZipJob do
end end
context "generates ZIP for location releases" do 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' } subject { 'LocationRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for material releases" do 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' } subject { 'MaterialRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for medical releases" do 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' } subject { 'MedicalRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for misc releases" do 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' } subject { 'MiscRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for music releases" do 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' } subject { 'MusicRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "generates ZIP for talent releases" do 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' } subject { 'TalentRelease' }
it_behaves_like "generates ZIP containig CSV file with all releases data" 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 end
context "When there are errors" do context "When there are errors" do