Usptream sync
This commit is contained in:
@@ -21,7 +21,8 @@ $(document).on "turbolinks:load", ->
|
||||
|
||||
refreshBroadcastVideo: (data) ->
|
||||
$("#broadcast_updates").html data.status_content
|
||||
if data.streamer_status == 'recording' && data.status == 'active'
|
||||
stream_selected = $("#broadcast_video").attr('video-type') == 'stream';
|
||||
if data.streamer_status == 'recording' && data.status == 'active' && stream_selected
|
||||
$("#broadcast_video").html data.video_content
|
||||
new (Clappr.Player)(
|
||||
parentId: '#broadcast_video'
|
||||
|
||||
50
app/assets/javascripts/group_qr_code.js
Normal file
50
app/assets/javascripts/group_qr_code.js
Normal file
@@ -0,0 +1,50 @@
|
||||
$(document).on("click", "[data-behavior=select_contract_template]", function() {
|
||||
var _this = this;
|
||||
var checkbox = $(this).children("input:checkbox");
|
||||
|
||||
selectContractTemplate(_this, checkbox);
|
||||
});
|
||||
|
||||
$(document).on("click", "[data-behavior=select_contract_template] input[type='checkbox']", function(e) {
|
||||
e.stopPropagation();
|
||||
|
||||
var _this = this;
|
||||
var checkbox = $(this);
|
||||
|
||||
selectContractTemplate(_this, checkbox);
|
||||
});
|
||||
|
||||
function selectContractTemplate(clicked_element, checkbox) {
|
||||
if (clicked_element.hasChildNodes()) {
|
||||
if(checkbox.prop("checked")) {
|
||||
checkbox.prop('checked', false);
|
||||
} else {
|
||||
checkbox.prop('checked', true);
|
||||
}
|
||||
}
|
||||
|
||||
var checked = checkbox.prop("checked");
|
||||
var project_id = JSON.parse($('#group_qr_code').attr('data-project-id'));
|
||||
var contract_template_ids = JSON.parse($('#group_qr_code').attr('data-contract-template-ids'));
|
||||
var selected_contract_template_id = checkbox.val();
|
||||
|
||||
if (checked && !contract_template_ids.includes(selected_contract_template_id)) {
|
||||
contract_template_ids.push(selected_contract_template_id);
|
||||
} else if(!checked && contract_template_ids.includes(selected_contract_template_id)) {
|
||||
contract_template_ids.splice( $.inArray(selected_contract_template_id, contract_template_ids), 1 );
|
||||
}
|
||||
|
||||
$('#group_qr_code').attr('data-contract-template-ids', JSON.stringify(contract_template_ids));
|
||||
|
||||
if (contract_template_ids.length >= 2) {
|
||||
multi_sign_ids = $.param({multi_sign_ids: contract_template_ids});
|
||||
contract_template_url = "/en/contract_templates/" + contract_template_ids[0] + "/qr_codes?" + multi_sign_ids
|
||||
|
||||
$("#group_qr_code").attr("href", contract_template_url);
|
||||
$("#group_qr_code").attr("target", "_blank");
|
||||
$("#group_qr_code").removeClass('disabled');
|
||||
} else if (contract_template_ids.length < 2) {
|
||||
$("#group_qr_code").attr("href", "javascript:void(0);");
|
||||
$("#group_qr_code").addClass('disabled');
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
||||
return false;
|
||||
}
|
||||
|
||||
console.warn('Play prev : ', playback_url);
|
||||
$("#broadcast_video").attr('video-type', 'recording');
|
||||
|
||||
var playback_url = $(this).attr("data-playback-url")
|
||||
$("#broadcast_video").empty();
|
||||
@@ -23,4 +23,6 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
||||
$(this).siblings().children("i").remove();
|
||||
$(this).addClass('active');
|
||||
$(this).prepend('<i class="fa fa-check"> </i>');
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").attr('video-type', 'stream'); });
|
||||
@@ -1,21 +1,28 @@
|
||||
class ApprovalsController < ApplicationController
|
||||
include MedicalReleaseContext
|
||||
|
||||
before_action :set_medical_release
|
||||
before_action :set_releasable
|
||||
before_action :set_project
|
||||
|
||||
layout "project"
|
||||
|
||||
def create
|
||||
@medical_release.approve_by(current_user)
|
||||
if @medical_release.save
|
||||
redirect_to [@project, :medical_releases], notice: t('.release_approved')
|
||||
@releasable.approve_by(current_user)
|
||||
|
||||
if @releasable.save
|
||||
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def releasable_param
|
||||
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
|
||||
end
|
||||
|
||||
def set_releasable
|
||||
@releasable = authorize policy_scope(releasable_param.type).find(releasable_param.id)
|
||||
end
|
||||
|
||||
def set_project
|
||||
@project = @medical_release.project
|
||||
@project = @releasable.project
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,7 +16,12 @@ class ContractTemplates::QrCodesController < ApplicationController
|
||||
end
|
||||
|
||||
def qr_code
|
||||
authorize QrCode.build_from_contract_template(@contract_template)
|
||||
if params[:multi_sign_ids].present?
|
||||
contract_templates_group = authorize contract_templates.where(id: params[:multi_sign_ids]).order_by_recent
|
||||
authorize QrCode.build_from_multiple_contract_templates(contract_templates_group, @contract_template.project)
|
||||
else
|
||||
authorize QrCode.build_from_contract_template(@contract_template)
|
||||
end
|
||||
end
|
||||
|
||||
def download_attributes
|
||||
|
||||
18
app/controllers/public/contract_templates_controller.rb
Normal file
18
app/controllers/public/contract_templates_controller.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
class Public::ContractTemplatesController < Public::BaseController
|
||||
skip_after_action :verify_authorized, :verify_policy_scoped
|
||||
before_action :set_account, :set_project
|
||||
|
||||
def index
|
||||
@contract_templates = @project.contract_templates.where(id: params[:contract_template_ids]).order_by_name.paginate(page: params[:page])
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_project
|
||||
@project = @account.projects.find(params[:project_id])
|
||||
end
|
||||
|
||||
def set_account
|
||||
@account = Account.find_by(slug: params[:account_id])
|
||||
end
|
||||
end
|
||||
@@ -6,11 +6,11 @@ module TooltipHelper
|
||||
end
|
||||
end
|
||||
|
||||
def get_approval_data_for_medical_release(medical_release)
|
||||
if medical_release.approved_by_user_name.present?
|
||||
"#{medical_release.approved_by_user_name} [#{medical_release.approved_by_user_email}]"
|
||||
def get_approval_data_for_releasable(release)
|
||||
if release.approved_by_user_name.present?
|
||||
"#{release.approved_by_user_name} [#{release.approved_by_user_email}]"
|
||||
else
|
||||
medical_release.approved_by_user_email
|
||||
release.approved_by_user_email
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,6 +10,7 @@ class AcquiredMediaRelease < ApplicationRecord
|
||||
include Syncable
|
||||
include PersonName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -16,6 +16,7 @@ class AppearanceRelease < ApplicationRecord
|
||||
include GuardianName
|
||||
include SecondGuardianName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
17
app/models/concerns/approvable.rb
Normal file
17
app/models/concerns/approvable.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
module Approvable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
def approve_by(user)
|
||||
return unless approved_at.nil?
|
||||
|
||||
self.approved_by_user_name = user.full_name
|
||||
self.approved_by_user_email = user.email
|
||||
self.approved_at = Time.zone.now
|
||||
end
|
||||
|
||||
def approved?
|
||||
self.approved_at.present?
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -3,7 +3,7 @@
|
||||
module CsvExportable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
COMMON_HEADERS = %i[notes tags signed_at].freeze
|
||||
COMMON_HEADERS = %i[approved? notes tags signed_at].freeze
|
||||
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
|
||||
|
||||
included do
|
||||
|
||||
@@ -11,6 +11,7 @@ class LocationRelease < ApplicationRecord
|
||||
include Taggable
|
||||
include PersonName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -11,6 +11,7 @@ class MaterialRelease < ApplicationRecord
|
||||
include Taggable
|
||||
include PersonName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -12,10 +12,11 @@ class MedicalRelease < ApplicationRecord
|
||||
include GuardianName
|
||||
include SecondGuardianName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
%i[approved? name contact_info]
|
||||
%i[name contact_info]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -107,18 +108,6 @@ class MedicalRelease < ApplicationRecord
|
||||
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
||||
end
|
||||
|
||||
def approve_by(user)
|
||||
return unless approved_at.nil?
|
||||
|
||||
self.approved_by_user_name = user.full_name
|
||||
self.approved_by_user_email = user.email
|
||||
self.approved_at = Time.zone.now
|
||||
end
|
||||
|
||||
def approved?
|
||||
approved_at.present?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def valid_answers
|
||||
|
||||
@@ -10,6 +10,7 @@ class MiscRelease < ApplicationRecord
|
||||
include GuardianName
|
||||
include GuardianPhotoable
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -8,6 +8,7 @@ class MusicRelease < ApplicationRecord
|
||||
include Taggable
|
||||
include PersonName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -13,6 +13,18 @@ class QrCode
|
||||
new(url, "#{filename}.png")
|
||||
end
|
||||
|
||||
def self.build_from_multiple_contract_templates(contract_templates, project)
|
||||
account = project.account
|
||||
locale = I18n.locale
|
||||
host = AppHost.new.domain_with_port
|
||||
route = [account, project, :contract_templates, contract_template_ids: contract_templates.ids, locale: I18n.locale, host: AppHost.new.domain_with_port]
|
||||
|
||||
url = Rails.application.routes.url_helpers.url_for(route)
|
||||
filename = [project.account.name, project.name].map(&:parameterize).join("_")
|
||||
|
||||
new(url, "#{filename}.png")
|
||||
end
|
||||
|
||||
def initialize(url, filename = "qrcode.png")
|
||||
@url = url
|
||||
@filename = filename
|
||||
|
||||
@@ -15,6 +15,7 @@ class TalentRelease < ApplicationRecord
|
||||
include GuardianName
|
||||
include SecondGuardianName
|
||||
include CsvExportable
|
||||
include Approvable
|
||||
|
||||
class << self
|
||||
def custom_csv_exportable_headers
|
||||
|
||||
@@ -6,5 +6,5 @@ class TaskRequest < ApplicationRecord
|
||||
|
||||
scope :order_by_recent, -> { order(created_at: :desc) }
|
||||
|
||||
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }
|
||||
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }, allow_blank: true
|
||||
end
|
||||
|
||||
@@ -30,4 +30,12 @@ class AcquiredMediaReleasePolicy < ApplicationPolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -26,4 +26,12 @@ class AppearanceReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,4 +34,12 @@ class LocationReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,4 +34,12 @@ class MaterialReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -38,4 +38,12 @@ class MiscReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
download_single?
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,4 +22,12 @@ class MusicReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -34,4 +34,12 @@ class TalentReleasePolicy < ReleasePolicy
|
||||
def download_multiple?
|
||||
true
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(acquired_media_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "acquired_media_release_ids[]", acquired_media_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if acquired_media_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(acquired_media_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: acquired_media_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= acquired_media_release.name %>
|
||||
</td>
|
||||
@@ -35,6 +43,9 @@
|
||||
<% if policy(Contract).show? && (acquired_media_release.contract.attached? || acquired_media_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [acquired_media_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(AcquiredMediaRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_acquired_media_release_approvals_path(acquired_media_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(acquired_media_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, acquired_media_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "acquired_media_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th><%= AcquiredMediaRelease.human_attribute_name(:name) %></th>
|
||||
<th><%= t(".table_headers.file_infos_count") %></th>
|
||||
<th><%= t(".table_headers.notes") %></th>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(appearance_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if appearance_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(appearance_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: appearance_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if appearance_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(appearance_release.photo) %>
|
||||
@@ -39,6 +47,9 @@
|
||||
<% if policy(Contract).show? && (appearance_release.contract.attached? || appearance_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [appearance_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(AppearanceRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_appearance_release_approvals_path(appearance_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(appearance_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= AppearanceRelease.human_attribute_name(:person_name) %></th>
|
||||
<th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<div class="card shadow-sm">
|
||||
<%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
|
||||
<%= card_header text: t(".heading", release_type: @releasable_param.name.titleize), close_action_path: [@project, "#{@releasable_param.name.pluralize}"] %>
|
||||
<div class="card-body">
|
||||
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@releasable, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||
|
||||
<%= bootstrap_form_with model: @medical_release, method: :post, url: medical_release_approvals_path(@medical_release), local: true do |form| %>
|
||||
<%= bootstrap_form_with model: @releasable, method: :post, url: public_send("#{@releasable_param.name}_approvals_path", @releasable), local: true do |form| %>
|
||||
<div class="row align-items-center text-center mt-4">
|
||||
<%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
|
||||
<%= link_to t("shared.cancel"), [@releasable.project, "#{@releasable_param.name.pluralize}"], class: "col-3 text-reset" %>
|
||||
<div class="col-9">
|
||||
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
|
||||
</div>
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
|
||||
<h5 class="dropdown-header">Live Streams</h5>
|
||||
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", class: "dropdown-item active" %>
|
||||
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", data: { behavior: "play_stream"}, class: "dropdown-item active" %>
|
||||
<% @multi_view_broadcasts.each do |broadcast| %>
|
||||
<% if broadcast.id != @broadcast.id %>
|
||||
<%= link_to broadcast.name.titleize, broadcast.url, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
|
||||
<%= link_to broadcast.name.titleize, broadcast.url, data: { behavior: "play_stream"}, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<h5 class="dropdown-header">Previous Sessions</h5>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<tr>
|
||||
<td data-behavior="select_contract_template"><%= check_box_tag "contract_template_ids[]", contract_template.id, false %></td>
|
||||
<td>
|
||||
<%= contract_template.name %>
|
||||
</td>
|
||||
|
||||
@@ -5,12 +5,14 @@
|
||||
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :contract_template], class: "btn btn-primary" %>
|
||||
<%= link_to fa_icon("clone", text: t(".actions.import")), [:new, @project, :release_template_imports], class: "btn btn-secondary" %>
|
||||
<% end %>
|
||||
<%= link_to "Group QR Code", "javascript:void(0);", class: "btn btn-light border disabled", id: "group_qr_code", data: { project_id: @project.id, contract_template_ids: [] } %>
|
||||
</p>
|
||||
|
||||
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
|
||||
<table class="table table-striped tr-px-4 align-all-middle">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
|
||||
<th><%= ContractTemplate.human_attribute_name(:fee) %></th>
|
||||
<th><%= t(".table_headers.release_type") %></th>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
|
||||
</div>
|
||||
|
||||
<% if releasable.class == MedicalRelease && releasable.approved? %>
|
||||
<% if releasable.respond_to?(:approved?) && releasable.approved? %>
|
||||
<div class="page">
|
||||
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(location_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "location_release_ids[]", location_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if location_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(location_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: location_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if location_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(location_release.photo), class: "img-fluid" %>
|
||||
@@ -39,6 +47,9 @@
|
||||
<% if policy(Contract).show? && (location_release.contract.attached? || location_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [location_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(LocationRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_location_release_approvals_path(location_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(location_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, location_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= LocationRelease.human_attribute_name(:name) %></th>
|
||||
<th><%= t(".table_headers.address") %>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(material_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "material_release_ids[]", material_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if material_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(material_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: material_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if material_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(material_release.photo), class: "img-fluid" %>
|
||||
@@ -36,6 +44,9 @@
|
||||
<% if policy(Contract).show? && (material_release.contract.attached? || material_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [material_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(MaterialRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_material_release_approvals_path(material_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(material_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, material_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "material_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= MaterialRelease.human_attribute_name(:name) %></th>
|
||||
<th><%= t(".table_headers.notes") %></th>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if medical_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_medical_release(medical_release) %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(medical_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(misc_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "misc_release_ids[]", misc_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if misc_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(misc_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: misc_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if misc_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(misc_release.photo), class: "img-fluid" %>
|
||||
@@ -36,6 +44,9 @@
|
||||
<% if policy(misc_release.tags).new? %>
|
||||
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, misc_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
||||
<% end %>
|
||||
<% if policy(MiscRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_misc_release_approvals_path(misc_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (misc_release.contract.attached? || misc_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [misc_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "misc_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= MiscRelease.human_attribute_name(:person_name) %></th>
|
||||
<th><%= MiscRelease.human_attribute_name(:contact_info) %></th>
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(music_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "music_release_ids[]", music_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if music_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(music_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: music_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= music_release.name %>
|
||||
</td>
|
||||
@@ -36,6 +44,9 @@
|
||||
<% if policy(Contract).show? && (music_release.contract.attached? || music_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [music_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(MusicRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_music_release_approvals_path(music_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(music_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, music_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "music_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th><%= MusicRelease.human_attribute_name(:name) %></th>
|
||||
<th><%= t(".table_headers.file_infos_count") %></th>
|
||||
<th><%= t(".table_headers.composers_count") %></th>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<tr>
|
||||
<td>
|
||||
<%= contract_template.name %>
|
||||
</td>
|
||||
<td class="text-right" nowrap>
|
||||
<%= link_to t(".actions.sign"), [:new, contract_template.project.account, contract_template.project, contract_template, "#{contract_template.release_type}_release"], class: "btn btn-sm btn-primary", target: :_blank %>
|
||||
</td>
|
||||
</tr>
|
||||
27
app/views/public/contract_templates/index.html.erb
Normal file
27
app/views/public/contract_templates/index.html.erb
Normal file
@@ -0,0 +1,27 @@
|
||||
<% content_for :header do %>
|
||||
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-4 text-center">
|
||||
<h1 class="h4 m-0"><%= @account.name %></h1>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<% end %>
|
||||
|
||||
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
|
||||
<table class="table table-striped tr-px-4 align-all-middle">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%= render @contract_templates %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="mt-3">
|
||||
<%= will_paginate @contract_templates %>
|
||||
</div>
|
||||
@@ -1,5 +1,13 @@
|
||||
<tr id="<%= dom_id(talent_release) %>">
|
||||
<td data-behavior="select"><%= check_box_tag "talent_release_ids[]", talent_release.id, false %></td>
|
||||
<td class="text-center">
|
||||
<% if talent_release.approved? %>
|
||||
<% tooltip_user_data = get_approval_data_for_releasable(talent_release) %>
|
||||
<i class="fa fa-check-circle fa-2x text-success"
|
||||
data-toggle="tooltip"
|
||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: talent_release.approved_at %>"></i>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<% if talent_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(talent_release.photo), class: "img-fluid" %>
|
||||
@@ -42,6 +50,9 @@
|
||||
<% if policy(Contract).show? && (talent_release.contract.attached? || talent_release.contract_template.present?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [talent_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
<% if policy(TalentRelease).review? %>
|
||||
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_talent_release_approvals_path(talent_release), class: "dropdown-item" %>
|
||||
<% end %>
|
||||
<% if policy(talent_release).edit? %>
|
||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, talent_release], class: "dropdown-item" %>
|
||||
<% end %>
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "talent_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= TalentRelease.human_attribute_name(:person_name) %></th>
|
||||
<th><%= TalentRelease.human_attribute_name(:person_phone) %></th>
|
||||
|
||||
@@ -1,9 +1,19 @@
|
||||
<%= errors_summary_for task_request %>
|
||||
|
||||
<%= bootstrap_form_with model: model, url: [@project, @task_request, show_chat: true], local: true do |form| %>
|
||||
<div class="alert alert-info text-center text-md-left">
|
||||
<%= fa_icon "info-circle" %>
|
||||
<strong><%= t '.info_message' %></strong>
|
||||
|
||||
<div class="d-flex">
|
||||
<div class="row">
|
||||
<div class="col-xl-10 col-12">
|
||||
<div class="alert alert-info text-center text-md-left">
|
||||
<%= fa_icon "info-circle" %>
|
||||
<strong><%= t '.info_message' %></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-2 col-12">
|
||||
<%= form.submit t('.actions.chat_now'), class: "btn btn-block btn-warning pt-4 pb-4 mb-1", data: { disable_with: t("shared.disable_with") } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= form.text_area :description, label: t('.labels.description') %>
|
||||
|
||||
@@ -29,6 +29,9 @@ en:
|
||||
acquired_media_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
no_media: No Media
|
||||
create:
|
||||
notice: The acquired media release has been created
|
||||
@@ -49,6 +52,7 @@ en:
|
||||
search: Search
|
||||
empty: Acquired Media Releases will appear here
|
||||
table_headers:
|
||||
approved: Approved
|
||||
file_infos_count: No. Files
|
||||
name: Name
|
||||
notes: Notes
|
||||
@@ -121,6 +125,9 @@ en:
|
||||
appearance_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
no_photos: Needs Photo
|
||||
create:
|
||||
failed_import: Failed to create appearance release for files listed below
|
||||
@@ -152,6 +159,7 @@ en:
|
||||
empty: Appearance Releases will appear here
|
||||
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
|
||||
table_headers:
|
||||
approved: Approved
|
||||
contact_info: Contact info
|
||||
name: Name
|
||||
notes: Notes
|
||||
@@ -176,11 +184,11 @@ en:
|
||||
team_member: Team Member
|
||||
approvals:
|
||||
create:
|
||||
release_approved: Medical release has been approved
|
||||
release_approved: "%{release_type} has been approved"
|
||||
new:
|
||||
actions:
|
||||
approve: Approve
|
||||
heading: Review Medical Release
|
||||
heading: "Review %{release_type}"
|
||||
blank_contracts:
|
||||
new:
|
||||
number_of_copies_label: Number of copies
|
||||
@@ -762,6 +770,7 @@ en:
|
||||
empty: Location Releases will appear here
|
||||
table_headers:
|
||||
address: Address
|
||||
approved: Approved
|
||||
name: Name
|
||||
notes: Notes
|
||||
signed_at: Date Signed
|
||||
@@ -769,6 +778,9 @@ en:
|
||||
location_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
no_photos: Needs Photo
|
||||
new:
|
||||
heading: Import Location Release
|
||||
@@ -797,6 +809,7 @@ en:
|
||||
search: Search
|
||||
empty: Material Releases will appear here
|
||||
table_headers:
|
||||
approved: Approved
|
||||
name: Name
|
||||
notes: Notes
|
||||
signed_at: Date Signed
|
||||
@@ -804,6 +817,9 @@ en:
|
||||
material_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
no_photos: Needs Photo
|
||||
new:
|
||||
heading: Import Material Release (Products / Logos)
|
||||
@@ -840,6 +856,7 @@ en:
|
||||
search: Search
|
||||
empty: Misc Releases will appear here
|
||||
table_headers:
|
||||
approved: Approved
|
||||
contact_info: Contact info
|
||||
name: Person name
|
||||
notes: Notes
|
||||
@@ -848,6 +865,9 @@ en:
|
||||
misc_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
music_releases:
|
||||
create:
|
||||
notice: The music release has been created
|
||||
@@ -874,6 +894,7 @@ en:
|
||||
search: Search
|
||||
empty: Music Releases will appear here
|
||||
table_headers:
|
||||
approved: Approved
|
||||
composers_count: No. Composers
|
||||
file_infos_count: No. Files
|
||||
name: Name
|
||||
@@ -884,6 +905,9 @@ en:
|
||||
music_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
new:
|
||||
heading: Import Music Release
|
||||
update:
|
||||
@@ -1041,6 +1065,16 @@ en:
|
||||
broadcasts:
|
||||
show:
|
||||
alert: That broadcast is no longer available
|
||||
contract_templates:
|
||||
contract_template:
|
||||
actions:
|
||||
sign: Sign
|
||||
no_fee: No Fee
|
||||
index:
|
||||
heading: Release Templates
|
||||
table_headers:
|
||||
release_type: Type of Release
|
||||
signed_release_count: No. Signed Releases
|
||||
location_releases:
|
||||
create:
|
||||
notice: Your release has been signed. Thank you!
|
||||
@@ -1273,6 +1307,7 @@ en:
|
||||
search: Search
|
||||
empty: Talent Releases will appear here
|
||||
table_headers:
|
||||
approved: Approved
|
||||
email: Email
|
||||
name: Name
|
||||
notes: Notes
|
||||
@@ -1284,6 +1319,9 @@ en:
|
||||
talent_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
review: Review
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
update:
|
||||
notice: The talent release has been updated
|
||||
task_requests:
|
||||
@@ -1296,7 +1334,9 @@ en:
|
||||
heading:
|
||||
Edit Task Request
|
||||
form:
|
||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative.
|
||||
actions:
|
||||
chat_now: Chat Now
|
||||
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right
|
||||
labels:
|
||||
additional_notes: Please add any additional notes we should be aware of regarding this task.
|
||||
deadline: What is the deadline for this task?
|
||||
|
||||
@@ -499,7 +499,9 @@ es:
|
||||
create:
|
||||
success_message: Your task request was successfully submitted. Thank you. A chat window will pop up on the lower right in a few seconds. (ES)
|
||||
form:
|
||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative. (ES)
|
||||
actions:
|
||||
chat_now: Chat Now (ES)
|
||||
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right (ES)
|
||||
index:
|
||||
table_headers:
|
||||
task_request_description: Description (ES)
|
||||
|
||||
@@ -22,6 +22,9 @@ Rails.application.routes.draw do
|
||||
concern :file_infoable do
|
||||
resource :file_infos, only: [:edit, :update]
|
||||
end
|
||||
concern :approvable do
|
||||
resource :approvals, only: [:new, :create]
|
||||
end
|
||||
|
||||
constraints AdminSignedInConstraint.new do
|
||||
namespace :admin do
|
||||
@@ -121,7 +124,7 @@ Rails.application.routes.draw do
|
||||
scope module: :public do
|
||||
resources :accounts, only: [] do
|
||||
resources :projects, only: [] do
|
||||
resources :contract_templates, only: [] do
|
||||
resources :contract_templates, only: [:index] do
|
||||
resources :talent_releases, only: [:new, :create]
|
||||
resources :appearance_releases, only: [:new, :create]
|
||||
resources :acquired_media_releases, only: [:new, :create]
|
||||
@@ -141,12 +144,7 @@ Rails.application.routes.draw do
|
||||
ALL_RELEASES = RELEASES + [:music_releases]
|
||||
|
||||
ALL_RELEASES.each do |release|
|
||||
resources release, only: [], concerns: :taggable
|
||||
end
|
||||
|
||||
# Customization for medical releases
|
||||
resources :medical_releases, only: [], concerns: :taggable do
|
||||
resource :approvals, only: [:new, :create]
|
||||
resources release, only: [], concerns: [:taggable, :approvable]
|
||||
end
|
||||
|
||||
resources :bulk_taggings, only: [:new, :create]
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToMusicReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :music_releases, :approved_by_user_name, :text
|
||||
add_column :music_releases, :approved_by_user_email, :text
|
||||
add_column :music_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToMiscReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :misc_releases, :approved_by_user_name, :text
|
||||
add_column :misc_releases, :approved_by_user_email, :text
|
||||
add_column :misc_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToAcquiredMediaReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :acquired_media_releases, :approved_by_user_name, :text
|
||||
add_column :acquired_media_releases, :approved_by_user_email, :text
|
||||
add_column :acquired_media_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToMaterialReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :material_releases, :approved_by_user_name, :text
|
||||
add_column :material_releases, :approved_by_user_email, :text
|
||||
add_column :material_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToLocationReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :location_releases, :approved_by_user_name, :text
|
||||
add_column :location_releases, :approved_by_user_email, :text
|
||||
add_column :location_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToTalentReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :talent_releases, :approved_by_user_name, :text
|
||||
add_column :talent_releases, :approved_by_user_email, :text
|
||||
add_column :talent_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,7 @@
|
||||
class AddApprovalFieldsToAppearanceReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :appearance_releases, :approved_by_user_name, :text
|
||||
add_column :appearance_releases, :approved_by_user_email, :text
|
||||
add_column :appearance_releases, :approved_at, :timestamp
|
||||
end
|
||||
end
|
||||
@@ -172,7 +172,10 @@ CREATE TABLE public.acquired_media_releases (
|
||||
description text,
|
||||
person_first_name character varying,
|
||||
person_last_name character varying,
|
||||
signed_at timestamp without time zone
|
||||
signed_at timestamp without time zone,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -352,7 +355,10 @@ CREATE TABLE public.appearance_releases (
|
||||
guardian_2_address_city character varying,
|
||||
guardian_2_address_state character varying,
|
||||
guardian_2_address_zip character varying,
|
||||
guardian_2_address_country character varying
|
||||
guardian_2_address_country character varying,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -891,7 +897,10 @@ CREATE TABLE public.location_releases (
|
||||
filming_ended_on date,
|
||||
person_first_name character varying,
|
||||
person_last_name character varying,
|
||||
filming_hours text
|
||||
filming_hours text,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -980,7 +989,10 @@ CREATE TABLE public.material_releases (
|
||||
signed_at timestamp without time zone,
|
||||
description text,
|
||||
person_first_name character varying,
|
||||
person_last_name character varying
|
||||
person_last_name character varying,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -1135,7 +1147,10 @@ CREATE TABLE public.misc_releases (
|
||||
question_12_answer text,
|
||||
question_13_answer text,
|
||||
question_14_answer text,
|
||||
question_15_answer text
|
||||
question_15_answer text,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -1191,7 +1206,10 @@ CREATE TABLE public.music_releases (
|
||||
restriction_id bigint,
|
||||
restriction_text character varying,
|
||||
person_first_name character varying,
|
||||
person_last_name character varying
|
||||
person_last_name character varying,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -1547,7 +1565,10 @@ CREATE TABLE public.talent_releases (
|
||||
guardian_2_address_city character varying,
|
||||
guardian_2_address_state character varying,
|
||||
guardian_2_address_zip character varying,
|
||||
guardian_2_address_country character varying
|
||||
guardian_2_address_country character varying,
|
||||
approved_by_user_name text,
|
||||
approved_by_user_email text,
|
||||
approved_at timestamp without time zone
|
||||
);
|
||||
|
||||
|
||||
@@ -3924,6 +3945,13 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20200702152130'),
|
||||
('20200707155717'),
|
||||
('20200709120630'),
|
||||
('20200712181139');
|
||||
('20200712181139'),
|
||||
('20200715084927'),
|
||||
('20200716055453'),
|
||||
('20200716075851'),
|
||||
('20200716083706'),
|
||||
('20200716094927'),
|
||||
('20200716103525'),
|
||||
('20200716105723');
|
||||
|
||||
|
||||
|
||||
11246
package-lock.json
generated
Normal file
11246
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,7 @@ describe ContractTemplates::QrCodesController do
|
||||
let(:current_user) { create(:user, :manager, primary_account: account) }
|
||||
let(:project) { create(:project, members: [current_user], account: account) }
|
||||
let(:contract_template) { create(:contract_template, project: project) }
|
||||
let(:contract_templates) { create_list(:contract_template, 5, project: project)}
|
||||
|
||||
before do
|
||||
sign_in(current_user)
|
||||
@@ -16,5 +17,13 @@ describe ContractTemplates::QrCodesController do
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
context "for group qr code" do
|
||||
it "responds with success" do
|
||||
get :show, params: { contract_template_id: contract_templates.first, multi_sign_ids: contract_templates }
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Public::ContractTemplatesController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:account) { create(:account, name: "Dev Account") }
|
||||
let(:project) { create(:project, account: account) }
|
||||
let(:contract_templates) { create_list(:contract_template, 20, project: project) }
|
||||
|
||||
describe '#index' do
|
||||
it 'responds successfully' do
|
||||
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
it 'renders content if there are contract templates' do
|
||||
contract_template = create(:contract_template,
|
||||
name: 'My Contract Template', fee: 50, release_type: 'appearance',
|
||||
project: project)
|
||||
sign_path = new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
|
||||
sign_url = new_account_project_contract_template_appearance_release_url(project.account, project, contract_template)
|
||||
|
||||
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: [contract_template.id] }
|
||||
|
||||
expect(response.body).to have_content('My Contract Template')
|
||||
expect(response.body).to have_link('Sign', href: sign_path)
|
||||
end
|
||||
|
||||
context 'when there are many records' do
|
||||
it 'paginates the table' do
|
||||
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
|
||||
|
||||
expect(response.body).to have_link('2', href: account_project_contract_templates_path(project.account, project, contract_template_ids: contract_templates.map(&:id), page: 2))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -213,13 +213,117 @@ feature "User managing acquired_media releases" do
|
||||
expect(page).not_to have_link("Edit", exact: true)
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_acquired_media_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_acquired_media_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_acquired_media_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:acquired_media_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_acquired_media_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
acquired_media_release = create(:acquired_media_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_acquired_media_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(acquired_media_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
acquired_media_release = create(:acquired_media_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe')
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_acquired_media_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(acquired_media_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:acquired_media_release_with_contract_template, project: project)
|
||||
|
||||
visit project_acquired_media_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is associate" do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "should not show download" do
|
||||
collection1 = create(:acquired_media_release_with_contract_template, name: "EDM Music", project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_acquired_media_releases_path(project)
|
||||
|
||||
click_on "Manage"
|
||||
@@ -368,4 +472,40 @@ feature "User managing acquired_media releases" do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'acquired_media_releases.acquired_media_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Acquired Media Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -481,18 +481,131 @@ feature 'User managing appearance releases' do
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:appearance_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_appearance_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:appearance_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_appearance_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:appearance_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_appearance_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:appearance_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_appearance_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
appearance_release = create(:appearance_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
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_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
appearance_release = create(:appearance_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe')
|
||||
|
||||
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_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:appearance_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_appearance_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the user is associate' do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario 'should not show download' do
|
||||
chris = create(:appearance_release_with_contract_template, person_first_name: 'Chris', person_last_name: 'Evans', project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_appearance_releases_path(project)
|
||||
|
||||
click_on 'Manage'
|
||||
expect(page).not_to have_link('Download', exact: true)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:appearance_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_appearance_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -717,4 +830,40 @@ feature 'User managing appearance releases' do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'appearance_releases.appearance_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Appearance Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -78,6 +78,39 @@ feature 'User managing broadcasts' do
|
||||
expect(page).to have_content token_reset_notice
|
||||
end
|
||||
|
||||
scenario 'Player will not reload if stream is reactivated while user is watching previous recording', 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 stream_idle_message
|
||||
|
||||
broadcast.streamer_status = :recording
|
||||
broadcast.status = :active
|
||||
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||
|
||||
expect(page).to have_content stream_begun_message
|
||||
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||
|
||||
broadcast.streamer_status = :idle
|
||||
broadcast.status = :idle
|
||||
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||
|
||||
click_on switch_view_dropdown
|
||||
click_on recording.download_file_name
|
||||
|
||||
expect(page).to have_content stream_idle_message
|
||||
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||
|
||||
broadcast.streamer_status = :recording
|
||||
broadcast.status = :active
|
||||
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||
|
||||
expect(page).to have_content stream_begun_message
|
||||
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||
end
|
||||
|
||||
scenario 'user can go back and forth between live session and previous sessions', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||
@@ -212,4 +245,14 @@ feature 'User managing broadcasts' do
|
||||
def token_reset_notice
|
||||
t 'broadcasts.update.reset_notice'
|
||||
end
|
||||
|
||||
def stream_begun_message
|
||||
'Live stream has begun, click play to watch it'
|
||||
end
|
||||
|
||||
def stream_idle_message
|
||||
'Live stream is waiting to begin'
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -232,18 +232,131 @@ feature "User managing location releases" do
|
||||
expect(pdf_body).to have_content("06:00 - 20:00")
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:location_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_location_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:location_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_location_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:location_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_location_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:location_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_location_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
location_release = create(:location_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_location_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(location_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
location_release = create(:location_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe')
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_location_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(location_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:location_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_location_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is associate" do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "should not show download" do
|
||||
create(:location_release_with_contract_template, name: "Cheers", project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_location_releases_path(project)
|
||||
|
||||
click_on "Manage"
|
||||
expect(page).not_to have_link("Download", exact: true)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:location_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_location_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -386,4 +499,40 @@ feature "User managing location releases" do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'location_releases.location_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Location Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -234,18 +234,131 @@ feature "User managing material releases" do
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:material_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_material_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:material_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_material_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:material_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_material_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:material_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_material_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
material_release = create(:material_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_material_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(material_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
material_release = create(:material_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe')
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_material_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(material_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:material_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_material_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is associate" do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "should not show download" do
|
||||
create(:material_release_with_contract_template, name: "Apple MacBook Air", project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_material_releases_path(project)
|
||||
|
||||
click_on "Manage"
|
||||
expect(page).not_to have_link("Download", exact: true)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:material_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_material_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -393,4 +506,40 @@ feature "User managing material releases" do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'material_releases.material_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Material Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -561,7 +561,7 @@ feature "User managing medical releases" do
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading'
|
||||
t 'approvals.new.heading', release_type: "Medical Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
|
||||
@@ -79,6 +79,84 @@ feature "User managing misc releases" do
|
||||
expect(content_type).to eq('application/pdf')
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:misc_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_misc_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:misc_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_misc_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:misc_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_misc_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:misc_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_misc_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
misc_release = create(:misc_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
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_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
misc_release = create(:misc_release_with_contract_template,
|
||||
:native,
|
||||
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_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'viewing the contract PDF' do
|
||||
misc_release = create(:misc_release,
|
||||
:native,
|
||||
@@ -140,6 +218,14 @@ feature "User managing misc releases" do
|
||||
|
||||
expect(page).to have_link("Download", exact: true, count: 0)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:misc_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_misc_releases_path(project)
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -210,4 +296,44 @@ feature "User managing misc releases" do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def view_release_pdf_link_for(release)
|
||||
['Download', href: misc_release_contracts_path(release, format: 'pdf')]
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'misc_releases.misc_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Misc Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -86,18 +86,71 @@ feature "User managing music releases" do
|
||||
expect(page).to have_field("Search", with: "EDM")
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:music_release_with_contract_template, project: project)
|
||||
|
||||
visit project_music_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:music_release_with_contract_template, project: project)
|
||||
|
||||
visit project_music_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:music_release_with_contract_template, project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_music_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is associate" do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "should not show download" do
|
||||
collection1 = create(:music_release, name: "EDM Music", project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_music_releases_path(project)
|
||||
|
||||
click_on "Manage"
|
||||
expect(page).not_to have_link("Download", exact: true)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:music_release_with_contract_template, project: project)
|
||||
|
||||
visit project_music_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -163,4 +216,16 @@ feature "User managing music releases" do
|
||||
select "Other", from: "Restriction"
|
||||
fill_in "Describe other restrictions", with: "Test"
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'music_releases.music_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Music Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -373,18 +373,131 @@ feature "User managing talent releases" do
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is account manager" do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is visible" do
|
||||
create(:talent_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_talent_releases_path(project)
|
||||
|
||||
expect(page).to have_link(review_action, exact: true)
|
||||
end
|
||||
|
||||
scenario "Reviewing release" do
|
||||
create(:talent_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_talent_releases_path(project)
|
||||
|
||||
click_link review_action
|
||||
|
||||
expect(page).to have_content review_page_heading
|
||||
expect(page).to have_content approve_button
|
||||
end
|
||||
|
||||
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||
create(:talent_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_talent_releases_path(project)
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||
|
||||
create(:talent_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||
visit project_talent_releases_path(project)
|
||||
|
||||
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||
talent_release = create(:talent_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
approved_by_user_name: "Big Joe",
|
||||
approved_by_user_email: "some@email.com",
|
||||
approved_at: DateTime.now)
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_talent_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(talent_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).to have_content producer_label
|
||||
expect(pdf_body).to have_content production_label
|
||||
expect(pdf_body).to have_content issued_to_label
|
||||
expect(pdf_body).to have_content issued_by_label
|
||||
expect(pdf_body).to have_content date_issued
|
||||
expect(pdf_body).to have_content 'Big Joe'
|
||||
end
|
||||
|
||||
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||
talent_release = create(:talent_release_with_contract_template,
|
||||
:native,
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe')
|
||||
|
||||
sign_in(current_user)
|
||||
visit project_talent_releases_path(project)
|
||||
click_link *view_release_pdf_link_for(talent_release)
|
||||
|
||||
expect(content_type).to eq('application/pdf')
|
||||
expect(content_disposition).to include('inline')
|
||||
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||
expect(pdf_body).not_to have_content producer_label
|
||||
expect(pdf_body).not_to have_content production_label
|
||||
expect(pdf_body).not_to have_content issued_to_label
|
||||
expect(pdf_body).not_to have_content issued_by_label
|
||||
expect(pdf_body).not_to have_content date_issued
|
||||
expect(pdf_body).not_to have_content 'Big Joe'
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is project manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:talent_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_talent_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is associate" do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
before do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "should not show download" do
|
||||
create(:talent_release_with_contract_template, person_first_name: "Robert", person_last_name: "Downey Jr.", project: project)
|
||||
|
||||
sign_in current_user
|
||||
visit project_talent_releases_path(project)
|
||||
|
||||
click_on "Manage"
|
||||
expect(page).not_to have_link("Download", exact: true)
|
||||
end
|
||||
|
||||
scenario "Review action in Manage menu is not visible" do
|
||||
create(:talent_release_with_contract_template, :native, project: project)
|
||||
|
||||
visit project_talent_releases_path(project)
|
||||
click_on "Manage"
|
||||
|
||||
expect(page).not_to have_link(review_action, exact: true)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -566,4 +679,40 @@ feature "User managing talent releases" do
|
||||
def dummy_signature_legal_text
|
||||
'Some signature legal language'
|
||||
end
|
||||
|
||||
def review_action
|
||||
t 'talent_releases.talent_release.actions.review'
|
||||
end
|
||||
|
||||
def review_page_heading
|
||||
t 'approvals.new.heading', release_type: "Talent Release"
|
||||
end
|
||||
|
||||
def approve_button
|
||||
t 'approvals.new.actions.approve'
|
||||
end
|
||||
|
||||
def for_office_use_only
|
||||
t 'contracts.for_office_use_only.heading'
|
||||
end
|
||||
|
||||
def producer_label
|
||||
t 'contracts.for_office_use_only.description_labels.producer'
|
||||
end
|
||||
|
||||
def production_label
|
||||
t 'contracts.for_office_use_only.description_labels.production'
|
||||
end
|
||||
|
||||
def issued_to_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||
end
|
||||
|
||||
def issued_by_label
|
||||
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||
end
|
||||
|
||||
def date_issued
|
||||
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -91,6 +91,21 @@ feature "User managing task requests" do
|
||||
expect(page).to have_content add_new_project_label
|
||||
end
|
||||
|
||||
scenario "user can click Chat Now and start chat event with a blank form" do
|
||||
visit project_task_requests_path(project)
|
||||
|
||||
click_on create_task_request
|
||||
|
||||
expect(page).to have_content chat_now_button
|
||||
expect(page).to have_content form_notice
|
||||
|
||||
expect do
|
||||
click_on chat_now_button
|
||||
end.to change(TaskRequest, :count).by(1)
|
||||
|
||||
expect(page).to have_content task_request_created_notice
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def no_task_requests_label
|
||||
@@ -120,4 +135,20 @@ feature "User managing task requests" do
|
||||
def schedule_demo
|
||||
t 'task_requests.splash.actions.book_demo'
|
||||
end
|
||||
|
||||
def create_task_request
|
||||
t 'task_requests.index.actions.new'
|
||||
end
|
||||
|
||||
def chat_now_button
|
||||
t 'task_requests.form.actions.chat_now'
|
||||
end
|
||||
|
||||
def form_notice
|
||||
t 'task_requests.form.info_message'
|
||||
end
|
||||
|
||||
def task_request_created_notice
|
||||
t 'task_requests.create.success_message'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,6 +5,10 @@ RSpec.describe TaskRequest, type: :model do
|
||||
it { is_expected.to belong_to(:project) }
|
||||
end
|
||||
|
||||
describe "validations" do
|
||||
it { should validate_numericality_of(:time_allowed).only_integer.is_greater_than_or_equal_to(2).allow_nil }
|
||||
end
|
||||
|
||||
describe "enums" do
|
||||
it { is_expected.to define_enum_for(:status).with_values([:pending, :completed, :cancelled]) }
|
||||
end
|
||||
@@ -13,8 +17,4 @@ RSpec.describe TaskRequest, type: :model do
|
||||
subject { described_class }
|
||||
it { is_expected.to respond_to(:order_by_recent) }
|
||||
end
|
||||
|
||||
describe "#validations" do
|
||||
it { should validate_numericality_of(:time_allowed).only_integer.is_greater_than_or_equal_to(2) }
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user