Compare commits
4 Commits
add-splash
...
send-error
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3a240464d | ||
|
|
7cdb814d6d | ||
|
|
2dea0f29b9 | ||
|
|
d6a3542308 |
13
app/assets/javascripts/update_required_status.js
Normal file
13
app/assets/javascripts/update_required_status.js
Normal file
@@ -0,0 +1,13 @@
|
||||
$(document).on("turbolinks:load", function() {
|
||||
$("[data-behavior=update-required-status]").click(function(e) {
|
||||
const required = !!($(this)[0] && $(this)[0].checked);
|
||||
|
||||
|
||||
$("[data-required-tag=guardian]").each(function(index, element) {
|
||||
const labelForField = element.previousSibling;
|
||||
|
||||
element.required = required;
|
||||
labelForField.classList.add("required");
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -17,7 +17,9 @@ class Api::ApiController < ActionController::Base
|
||||
def return_error(exception)
|
||||
raise exception if Rails.env.test?
|
||||
|
||||
logger.error "==Handled======="
|
||||
Raven.capture_exception(exception)
|
||||
|
||||
logger.error "==Handled======"
|
||||
logger.error exception.message
|
||||
logger.error exception.backtrace.join("\n")
|
||||
logger.error "==Handled======="
|
||||
|
||||
@@ -5,6 +5,8 @@ class Api::UserTokenController < Knock::AuthTokenController
|
||||
|
||||
# Catch exception and return JSON-formatted error
|
||||
def return_error(exception)
|
||||
Raven.capture_exception(exception)
|
||||
|
||||
logger.error "==Handled======="
|
||||
logger.error exception.message
|
||||
logger.error exception.backtrace.join("\n")
|
||||
|
||||
@@ -5,6 +5,7 @@ class BroadcastsController < ApplicationController
|
||||
before_action :build_broadcast, only: [:new, :create]
|
||||
before_action :set_broadcast, only: [:show, :destroy, :update]
|
||||
before_action :set_multi_view_broadcasts, only: [:show]
|
||||
before_action :show_splash_screen, only: :index
|
||||
|
||||
def index
|
||||
@broadcasts = filtered_broadcasts.order_by_recent.paginate(page: params[:page])
|
||||
@@ -49,6 +50,10 @@ class BroadcastsController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def show_splash_screen
|
||||
render :splash if broadcasts.count.zero?
|
||||
end
|
||||
|
||||
def broadcast_params
|
||||
params.require(:broadcast).permit(:name, files: [])
|
||||
end
|
||||
|
||||
@@ -7,6 +7,7 @@ class ContractTemplatesController < ApplicationController
|
||||
|
||||
before_action :set_project, except: [:destroy]
|
||||
before_action :set_contract_template, only: [:destroy]
|
||||
before_action :show_splash_screen, only: :index
|
||||
|
||||
def index
|
||||
@contract_templates = contract_templates.non_archived.order_by_name.paginate(page: params[:page])
|
||||
@@ -38,6 +39,10 @@ class ContractTemplatesController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def show_splash_screen
|
||||
render :splash if contract_templates.non_archived.count.zero?
|
||||
end
|
||||
|
||||
def set_contract_template
|
||||
@contract_template = authorize contract_templates.find(params[:id])
|
||||
end
|
||||
|
||||
@@ -46,6 +46,7 @@ class Public::MiscReleasesController < Public::BaseController
|
||||
.permit(
|
||||
person_params,
|
||||
guardian_params,
|
||||
questionnaire_params,
|
||||
:signature_base64,
|
||||
:locale,
|
||||
:contract_template,
|
||||
@@ -85,6 +86,26 @@ class Public::MiscReleasesController < Public::BaseController
|
||||
]
|
||||
end
|
||||
|
||||
def questionnaire_params
|
||||
[
|
||||
:question_1_answer,
|
||||
:question_2_answer,
|
||||
:question_3_answer,
|
||||
:question_4_answer,
|
||||
:question_5_answer,
|
||||
:question_6_answer,
|
||||
:question_7_answer,
|
||||
:question_8_answer,
|
||||
:question_9_answer,
|
||||
:question_10_answer,
|
||||
:question_11_answer,
|
||||
:question_12_answer,
|
||||
:question_13_answer,
|
||||
:question_14_answer,
|
||||
:question_15_answer,
|
||||
]
|
||||
end
|
||||
|
||||
def misc_release_params_with_locale
|
||||
misc_release_params.merge(locale: I18n.locale)
|
||||
end
|
||||
|
||||
@@ -3,6 +3,7 @@ class VideosController < ApplicationController
|
||||
|
||||
before_action :set_project, only: [:index, :new, :create, :landing]
|
||||
before_action :set_video, only: [:edit, :update]
|
||||
before_action :show_splash_screen, only: :index
|
||||
|
||||
def landing
|
||||
authorize Video, :new?
|
||||
@@ -60,6 +61,10 @@ class VideosController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def show_splash_screen
|
||||
render :splash if videos.count.zero?
|
||||
end
|
||||
|
||||
def set_project
|
||||
@project = policy_scope(Project).find(params[:project_id])
|
||||
end
|
||||
|
||||
@@ -84,7 +84,7 @@ class Account < ApplicationRecord
|
||||
end
|
||||
|
||||
def taskme_enabled?
|
||||
plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme"
|
||||
ENV["TASKME_ENABLED"] && (plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme")
|
||||
end
|
||||
|
||||
def plan_name
|
||||
|
||||
@@ -5,6 +5,8 @@ class ContractTemplate < ApplicationRecord
|
||||
include Syncable
|
||||
include PgSearch
|
||||
|
||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||
|
||||
belongs_to :project
|
||||
belongs_to :parent, class_name: 'ContractTemplate', optional: true
|
||||
has_many :duplicates, class_name: 'ContractTemplate', foreign_key: 'parent_id'
|
||||
@@ -59,4 +61,8 @@ class ContractTemplate < ApplicationRecord
|
||||
def archive
|
||||
update(archived_at: Time.zone.now)
|
||||
end
|
||||
|
||||
def has_questionnaire?
|
||||
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,15 +14,37 @@ class MedicalRelease < ApplicationRecord
|
||||
|
||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||
|
||||
composed_of :person_address,
|
||||
composed_of :person_address,
|
||||
class_name: "Address",
|
||||
mapping: [
|
||||
%w(person_address_street1 street1),
|
||||
%w(person_address_street2 street2),
|
||||
%w(person_address_city city),
|
||||
%w(person_address_state state),
|
||||
%w(person_address_zip zip),
|
||||
%w(person_address_country country)
|
||||
mapping: [
|
||||
%w[person_address_street1 street1],
|
||||
%w[person_address_street2 street2],
|
||||
%w[person_address_city city],
|
||||
%w[person_address_state state],
|
||||
%w[person_address_zip zip],
|
||||
%w[person_address_country country]
|
||||
]
|
||||
|
||||
composed_of :guardian_address,
|
||||
class_name: 'Address',
|
||||
mapping: [
|
||||
%w[guardian_address_street1 street1],
|
||||
%w[guardian_address_street2 street2],
|
||||
%w[guardian_address_city city],
|
||||
%w[guardian_address_state state],
|
||||
%w[guardian_address_zip zip],
|
||||
%w[guardian_address_country country]
|
||||
]
|
||||
|
||||
composed_of :guardian_2_address,
|
||||
class_name: 'Address',
|
||||
mapping: [
|
||||
%w[guardian_2_address_street1 street1],
|
||||
%w[guardian_2_address_street2 street2],
|
||||
%w[guardian_2_address_city city],
|
||||
%w[guardian_2_address_state state],
|
||||
%w[guardian_2_address_zip zip],
|
||||
%w[guardian_2_address_country country]
|
||||
]
|
||||
|
||||
def self.face_photo_acceptable_content_types
|
||||
@@ -32,6 +54,7 @@ class MedicalRelease < ApplicationRecord
|
||||
# These validations apply to all releases
|
||||
validates :person_first_name, :person_last_name, presence: true
|
||||
validates :person_email, email: true, allow_blank: true
|
||||
validate :valid_answers
|
||||
|
||||
acts_as_taggable_on :internal_tags, :tags
|
||||
|
||||
@@ -76,4 +99,15 @@ class MedicalRelease < ApplicationRecord
|
||||
def contract_file_name
|
||||
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def valid_answers
|
||||
(1..ContractTemplate::NUMBER_OF_CUSTOM_FIELDS).each do |index|
|
||||
if contract_template && contract_template["question_#{index}_text"].present? &&
|
||||
public_send("question_#{index}_answer").blank?
|
||||
errors.add("question_#{index}", I18n.t('medical_releases.custom_validation_errors.question_answer_is_required'))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,6 +10,8 @@ class MiscRelease < ApplicationRecord
|
||||
include GuardianName
|
||||
include GuardianPhotoable
|
||||
|
||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||
|
||||
composed_of :person_address,
|
||||
class_name: "Address",
|
||||
mapping: [
|
||||
|
||||
@@ -11,12 +11,14 @@
|
||||
<hr class="divider-light mx-n4">
|
||||
<nav>
|
||||
<ul class="nav nav-pills nav-pills-dark flex-column">
|
||||
<li class="nav-item">
|
||||
<%= link_to [project, :task_requests], class: class_string("nav-link", "active" => controller_name == "task_requests") do %>
|
||||
<%= lock_icon_for(Current.account, :taskme) %>
|
||||
<%= product_wordmark :task_me, class: class_string("d-inline-block", "disabled" => !Current.account.taskme_enabled?) %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% if Current.account.taskme_enabled? %>
|
||||
<li class="nav-item">
|
||||
<%= link_to [project, :task_requests], class: class_string("nav-link", "active" => controller_name == "task_requests") do %>
|
||||
<%= lock_icon_for(Current.account, :taskme) %>
|
||||
<%= product_wordmark :task_me, class: class_string("d-inline-block", "disabled" => !Current.account.taskme_enabled?) %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
<li class="nav-item">
|
||||
<%= link_to [project, :contract_templates], class: class_string("nav-link", "active" => %w(contract_templates release_template_imports).include?(controller_name)) do %>
|
||||
<%= lock_icon_for Current.account, :releaseme %>
|
||||
|
||||
59
app/views/broadcasts/splash.html.erb
Normal file
59
app/views/broadcasts/splash.html.erb
Normal file
@@ -0,0 +1,59 @@
|
||||
<div class="d-flex flex-row">
|
||||
<div class="d-flex flex-column">
|
||||
<%= product_wordmark :direct_me, prefix: t('.headings.welcome'), class: "h2" %>
|
||||
<p class="text-muted"><%= t '.headings.subtitle' %>
|
||||
</div>
|
||||
|
||||
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
|
||||
<% if policy(Broadcast).new? %>
|
||||
<%= link_to t(".actions.create_stream"), [:new, @project, :broadcast], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="pt-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card-body p-0">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="embed-responsive-item">
|
||||
<table class="w-100 h-100 bg-secondary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center align-middle text-white">
|
||||
Video tutorial will be available soon
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.how_it_works' %></h3>
|
||||
<ol>
|
||||
<li><%= t '.list_items.create_stream' %></li>
|
||||
<li><%= t '.list_items.share_stream' %></li>
|
||||
<li><%= t '.list_items.launch_video_conference' %></li>
|
||||
<li><%= t '.list_items.share_files' %></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.benefits' %></h3>
|
||||
<ul class="fa-ul ml-5">
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_from_mobile_app'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.direct_shoots_anywhere'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.share_live_stream'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_multiple_cameras'))) %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2,7 +2,7 @@
|
||||
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :name, wrapper_class: "col-sm-6" %>
|
||||
<%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical) } }, class: "form-control custom-select" %>
|
||||
<%= form.select :release_type, options_for_release_type_select(project, @release_type), { wrapper_class: "col-sm-6" }, data: { toggle: "collapse-select", target_show_values_mapping: { "#guardian_clause": %w(appearance talent misc medical), "#fee_field": %w(appearance talent location material acquired_media), "#exploitable_rights_fields": %w(appearance talent location material acquired_media), "#custom_fields": %w(medical misc) } }, class: "form-control custom-select" %>
|
||||
</div>
|
||||
<div class="form-row" id="fee_field">
|
||||
<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", wrapper_class: "col-sm-6" %>
|
||||
|
||||
58
app/views/contract_templates/splash.html.erb
Normal file
58
app/views/contract_templates/splash.html.erb
Normal file
@@ -0,0 +1,58 @@
|
||||
<div class="d-flex flex-row">
|
||||
<div class="d-flex flex-column">
|
||||
<%= product_wordmark :release_me, prefix: t('.headings.welcome'), class: "h2" %>
|
||||
<p class="text-muted"><%= t '.headings.subtitle' %>
|
||||
</div>
|
||||
|
||||
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
|
||||
<% if policy(ContractTemplate).new? %>
|
||||
<%= link_to t(".actions.create_template"), [:new, @project, :contract_template], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="pt-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card-body p-0">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="embed-responsive-item">
|
||||
<table class="w-100 h-100 bg-secondary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center align-middle text-white">
|
||||
Video tutorial will be available soon
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.how_it_works' %></h3>
|
||||
<ol>
|
||||
<li><%= t '.list_items.create_releases' %></li>
|
||||
<li><%= t '.list_items.download_mobile_app' %></li>
|
||||
<li><%= t '.list_items.print_QR_code' %></li>
|
||||
<li><%= t '.list_items.releases_automatically_organized' %></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.benefits' %></h3>
|
||||
<ul class="fa-ul ml-5">
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.all_releases_available'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.manage_large_audience'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.add_tags_and_notes'))) %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,8 +1,8 @@
|
||||
<p class="heading"><strong><u><%= t ".heading" %></u></strong></p>
|
||||
<p class="heading"><strong><u><%= t ".heading.#{releasable.model_name.param_key}" %></u></strong></p>
|
||||
|
||||
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
||||
<% (1..releasable.class::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
||||
<% if contract_template.public_send("question_#{n}_text").present? %>
|
||||
<p><strong><%= contract_template.public_send("question_#{n}_text") %></strong></p>
|
||||
<p><%= releasable.public_send("question_#{n}_answer") %></p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
@@ -16,9 +16,9 @@
|
||||
<%= contract_template.guardian_clause %>
|
||||
<% end %>
|
||||
|
||||
<% if releasable.model_name == "MedicalRelease" %>
|
||||
<% if releasable.model_name.in? %w(MedicalRelease MiscRelease) %>
|
||||
<div class="page">
|
||||
<%= render "contracts/medical_questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
|
||||
<%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||
@@ -72,12 +72,12 @@
|
||||
<div class="<%= class_string("collapse" => !@appearance_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_first_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_last_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.phone_field :guardian_phone, required: @appearance_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", required: @appearance_release.minor? %>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", required: @appearance_release.minor?, data: { required_tag: "guardian" } %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.medical_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.medical_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||
@@ -30,7 +30,7 @@
|
||||
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
||||
<% if @contract_template.public_send("question_#{n}_text").present? %>
|
||||
<div class="form-row">
|
||||
<%= form.text_area "question_#{n}_answer", wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
|
||||
<%= form.text_area "question_#{n}_answer", required: true, wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
@@ -59,14 +59,12 @@
|
||||
<div class="<%= class_string("collapse" => !@medical_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: @medical_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: @medical_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, required: @medical_release.minor?, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_first_name, required: @medical_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_last_name, required: @medical_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.phone_field :guardian_phone, required: @medical_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_email, required: @medical_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_email, required: @medical_release.minor?, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", required: @medical_release.minor? %>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", required: @medical_release.minor?, data: { required_tag: "guardian" } %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||
@@ -20,6 +20,19 @@
|
||||
<hr>
|
||||
<% end %>
|
||||
|
||||
<% if @contract_template.has_questionnaire? %>
|
||||
<%= card_field_set_tag t(".questionnaire.heading") do %>
|
||||
<% (1..MiscRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
||||
<% if @contract_template.public_send("question_#{n}_text").present? %>
|
||||
<div class="form-row">
|
||||
<%= form.text_area "question_#{n}_answer", wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<hr>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".personal_info.heading") do %>
|
||||
<div class="alert alert-warning font-weight-bold"><%= t ".personal_info.instructions" %></div>
|
||||
<div class="form-row">
|
||||
@@ -43,14 +56,12 @@
|
||||
<div class="<%= class_string("collapse" => !@misc_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: @misc_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: @misc_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_first_name, required: @misc_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_last_name, required: @misc_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian" %>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<% unless @contract_template.guardian_clause.blank? %>
|
||||
<%= form.form_group :minor do %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<%= form.check_box :minor, label: t("helpers.label.appearance_release.minor"), data: { behavior: "update-required-status", target: "[data-ujs-target=guardian-fields]", toggle: "collapse" } %>
|
||||
<% end %>
|
||||
|
||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||
@@ -46,12 +46,12 @@
|
||||
<div class="<%= class_string("collapse" => !@talent_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||
<div class="form-row">
|
||||
<%= form.text_field :guardian_first_name, required: @talent_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field :guardian_last_name, required: @talent_release.minor?, wrapper_class: "col-sm-3" %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field :guardian_first_name, required: @talent_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_last_name, required: @talent_release.minor?, wrapper_class: "col-sm-3", data: { required_tag: "guardian" } %>
|
||||
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||
</div>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian" %>
|
||||
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
|
||||
<% end %>
|
||||
|
||||
<hr>
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
<% field_name_prefix = subject.present? ? "#{subject}_" : "" %>
|
||||
<% required = required || false %>
|
||||
<% data = data || nil %>
|
||||
|
||||
<div class="form-row">
|
||||
<%= form.text_field "#{field_name_prefix}address_street1", required: required, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field "#{field_name_prefix}address_street1", required: required, wrapper_class: "col-sm-6", data: data %>
|
||||
<%= form.text_field "#{field_name_prefix}address_street2", wrapper_class: "col-sm-6" %>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<%= form.text_field "#{field_name_prefix}address_city", required: required, wrapper_class: "col-sm-6" %>
|
||||
<%= form.text_field "#{field_name_prefix}address_state", required: required, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3" %>
|
||||
<%= form.text_field "#{field_name_prefix}address_city", required: required, wrapper_class: "col-sm-6", data: data %>
|
||||
<%= form.text_field "#{field_name_prefix}address_state", required: required, wrapper_class: "col-sm-3", data: data %>
|
||||
<%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3", data: data %>
|
||||
</div>
|
||||
<%= form.form_group "#{field_name_prefix}address_country" do %>
|
||||
<%= form.label "#{field_name_prefix}address_country" %>
|
||||
|
||||
59
app/views/videos/splash.html.erb
Normal file
59
app/views/videos/splash.html.erb
Normal file
@@ -0,0 +1,59 @@
|
||||
<div class="d-flex flex-row">
|
||||
<div class="d-flex flex-column">
|
||||
<%= product_wordmark :deliver_me, prefix: t('.headings.welcome'), class: "h2" %>
|
||||
<p class="text-muted"><%= t '.headings.subtitle' %>
|
||||
</div>
|
||||
|
||||
<%= link_to t(".actions.book_demo"), 'https://meetings.hubspot.com/bray2', class: "btn btn-primary border align-self-center h-50 ml-auto mr-2 pb-2", target: '_blank' %>
|
||||
<% if policy(Video).new? %>
|
||||
<%= link_to t(".actions.upload_video"), [:new, @project, :video], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="pt-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card-body p-0">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="embed-responsive-item">
|
||||
<table class="w-100 h-100 bg-secondary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center align-middle text-white">
|
||||
Video tutorial will be available soon
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.how_it_works' %></h3>
|
||||
<ol>
|
||||
<li><%= t '.list_items.import_video' %></li>
|
||||
<li><%= t '.list_items.import_EDLs' %></li>
|
||||
<li><%= t '.list_items.AI_generates_documents' %></li>
|
||||
<li><%= t '.list_items.download_documents' %></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.benefits' %></h3>
|
||||
<ul class="fa-ul ml-5">
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_labor_cost'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.more_accurate'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.simplifies_cue_sheets'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.production_elements_logs'))) %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -207,6 +207,24 @@ en:
|
||||
new:
|
||||
heading:
|
||||
Create Live Stream
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo
|
||||
create_stream: Create New Live Stream
|
||||
headings:
|
||||
benefits: Benefits
|
||||
how_it_works: How It Works
|
||||
subtitle: Remote directing and video village solution
|
||||
welcome: Welcome to
|
||||
list_items:
|
||||
create_stream: Create a live stream
|
||||
direct_shoots_anywhere: Direct shoots anywhere around the world
|
||||
launch_video_conference: Launch Video Conference using plugin
|
||||
share_files: Share files via the ME Suite mobile app
|
||||
share_live_stream: Share live stream with clients all over the the world
|
||||
share_stream: Share live stream link with clients
|
||||
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
||||
stream_multiple_cameras: Stream multiple cameras at one time
|
||||
bulk_taggings:
|
||||
new_bulk_tag_modal:
|
||||
submit: Add
|
||||
@@ -233,7 +251,7 @@ en:
|
||||
archived_notice: The release template has been archived
|
||||
form:
|
||||
custom_fields:
|
||||
heading: Medical Questionnaire
|
||||
heading: Questionnaire
|
||||
instructions: Please list the questions you wish the signer to answer. Any unused question fields will be hidden.
|
||||
exploitable_rights:
|
||||
heading: Exploitable Rights
|
||||
@@ -252,9 +270,24 @@ en:
|
||||
signed_release_count: No. Signed Releases
|
||||
new:
|
||||
heading: New Release Template
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo
|
||||
create_template: Create New Release Template
|
||||
headings:
|
||||
benefits: Benefits
|
||||
how_it_works: How It Works
|
||||
subtitle: The easiest way to create and manage releases.
|
||||
welcome: Welcome to
|
||||
list_items:
|
||||
add_tags_and_notes: Add tags and notes to releases for added organization and searchability
|
||||
all_releases_available: All release types available including Covid Medical, Appearance, Location and more
|
||||
create_releases: Create releases for your video shoot
|
||||
download_mobile_app: Download the ME Suite mobile app
|
||||
manage_large_audience: Easily manage large audiences with the crowd control feature
|
||||
print_QR_code: Print out release QR codes
|
||||
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
||||
contracts:
|
||||
medical_questionnaire:
|
||||
heading: Medical Questionnaire
|
||||
photos:
|
||||
guardian_2_photo_heading: Second guardian photo
|
||||
guardian_photo_heading: Guardian photo
|
||||
@@ -264,6 +297,10 @@ en:
|
||||
minor_photos_heading:
|
||||
one: Minor photo
|
||||
other: Minor photos
|
||||
questionnaire:
|
||||
heading:
|
||||
medical_release: Medical Questionnaire
|
||||
misc_release: Questionnaire
|
||||
signature_page:
|
||||
heading: Signature Page
|
||||
instructions: "By signing this signature page, as of the date listed below, I hereby agree, acknowledge and accept the terms and conditions listed in this %{releasable_name}."
|
||||
@@ -451,6 +488,30 @@ en:
|
||||
person_last_name: Last name
|
||||
person_name: Name
|
||||
person_phone: Phone number
|
||||
misc_release:
|
||||
guardian_address_city: Guardian city
|
||||
guardian_address_country: Guardian country
|
||||
guardian_address_state: Guardian state
|
||||
guardian_address_street1: Guardian address
|
||||
guardian_address_street2: Guardian address (Line 2)
|
||||
guardian_address_zip: Guardian zip code
|
||||
guardian_email: Guardian email
|
||||
guardian_first_name: Guardian first name
|
||||
guardian_last_name: Guardian last name
|
||||
guardian_phone: Guardian phone
|
||||
minor: Is the person a minor?
|
||||
person_address_city: City
|
||||
person_address_country: Country
|
||||
person_address_state: State
|
||||
person_address_street1: Address
|
||||
person_address_street2: Address (Line 2)
|
||||
person_address_zip: Zip code
|
||||
person_date_of_birth: Date of birth
|
||||
person_email: Email address
|
||||
person_first_name: First name
|
||||
person_last_name: Last name
|
||||
person_name: Name
|
||||
person_phone: Phone number
|
||||
music_release:
|
||||
person_address: Address
|
||||
person_address_city: City
|
||||
@@ -711,6 +772,8 @@ en:
|
||||
update:
|
||||
notice: The material release has been updated
|
||||
medical_releases:
|
||||
custom_validation_errors:
|
||||
question_answer_is_required: answer is required
|
||||
destroy:
|
||||
alert: The medical release has been deleted
|
||||
index:
|
||||
@@ -1024,6 +1087,8 @@ en:
|
||||
instructions: Now, enter your personal information.
|
||||
photo:
|
||||
heading: Photos
|
||||
questionnaire:
|
||||
heading: Questionnaire
|
||||
signature:
|
||||
heading: Signature
|
||||
talent_releases:
|
||||
@@ -1290,6 +1355,24 @@ en:
|
||||
new:
|
||||
heading: Upload Video
|
||||
subheading: 2 of 2 Files
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo
|
||||
upload_video: Upload New Video
|
||||
headings:
|
||||
benefits: Benefits
|
||||
how_it_works: How It Works
|
||||
subtitle: Automate your deliverable documents
|
||||
welcome: Welcome to
|
||||
list_items:
|
||||
AI_generates_documents: AI generates deliverable documents
|
||||
download_documents: Download deliverable documents
|
||||
import_EDLs: Import your EDLs
|
||||
import_video: Import your video
|
||||
more_accurate: More accurate than human-generated reports
|
||||
production_elements_logs: Production Elements Logs, and more
|
||||
reduces_labor_cost: Reduces labor costs
|
||||
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets
|
||||
update:
|
||||
notice: The video has been updated
|
||||
video:
|
||||
|
||||
@@ -57,6 +57,25 @@ es:
|
||||
pdf:
|
||||
do_not_copy_warning: "Do not copy (ES)"
|
||||
serial_number_label: "Serial Number (ES)"
|
||||
broadcasts:
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo
|
||||
create_stream: Create New Live Stream
|
||||
headings:
|
||||
benefits: Benefits
|
||||
how_it_works: How It Works
|
||||
subtitle: Remote directing and video village solution
|
||||
welcome: Welcome to
|
||||
list_items:
|
||||
create_stream: Create a live stream
|
||||
direct_shoots_anywhere: Direct shoots anywhere around the world
|
||||
launch_video_conference: Launch Video Conference using plugin
|
||||
share_files: Share files via the ME Suite mobile app
|
||||
share_live_stream: Share live stream with clients all over the the world
|
||||
share_stream: Share live stream link with clients
|
||||
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
||||
stream_multiple_cameras: Stream multiple cameras at one time
|
||||
contract_templates:
|
||||
blank_contracts:
|
||||
create:
|
||||
@@ -70,6 +89,23 @@ es:
|
||||
heading: Legal (ES)
|
||||
release_info:
|
||||
heading: Release Info (ES)
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo (ES)
|
||||
create_template: Create New Release Template (ES)
|
||||
headings:
|
||||
benefits: ""
|
||||
how_it_works: How It Works (ES)
|
||||
subtitle: The easiest way to create and manage releases. (ES)
|
||||
welcome: Welcome to (ES)
|
||||
list_items:
|
||||
add_tags_and_notes: Add tags and notes to releases for added organization and searchability (ES)
|
||||
all_releases_available: All release types available including Covid Medical, Appearance, Location and more (ES)
|
||||
create_releases: Create releases for your video shoot (ES)
|
||||
download_mobile_app: Download the ME Suite mobile app (ES)
|
||||
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
|
||||
print_QR_code: Print out release QR codes (ES)
|
||||
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
||||
contracts:
|
||||
photos:
|
||||
guardian_2_photo_heading: Second guardian photo (ES)
|
||||
@@ -246,6 +282,9 @@ es:
|
||||
form:
|
||||
photos:
|
||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
||||
medical_releases:
|
||||
custom_validation_errors:
|
||||
question_answer_is_required: answer is required (ES)
|
||||
public:
|
||||
appearance_releases:
|
||||
create:
|
||||
@@ -380,3 +419,22 @@ es:
|
||||
manage: Manage (ES)
|
||||
open_deliverable: Open Deliverable (ES)
|
||||
read_more: read more (ES)
|
||||
videos:
|
||||
splash:
|
||||
actions:
|
||||
book_demo: Schedule a Demo (ES)
|
||||
upload_video: Upload New Video (ES)
|
||||
headings:
|
||||
benefits: Benefits (ES)
|
||||
how_it_works: How It Works (ES)
|
||||
subtitle: Automate your deliverable documents (ES)
|
||||
welcome: Welcome to (ES)
|
||||
list_items:
|
||||
AI_generates_documents: AI generates deliverable documents (ES)
|
||||
download_documents: Download deliverable documents (ES)
|
||||
import_EDLs: Import your EDLs (ES)
|
||||
import_video: Import your video (ES)
|
||||
more_accurate: More accurate than human-generated reports (ES)
|
||||
production_elements_logs: Production Elements Logs, and more (ES)
|
||||
reduces_labor_cost: Reduces labor costs (ES)
|
||||
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
class AddQuestionAnswersToMiscReleases < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :misc_releases, :question_1_answer, :text
|
||||
add_column :misc_releases, :question_2_answer, :text
|
||||
add_column :misc_releases, :question_3_answer, :text
|
||||
add_column :misc_releases, :question_4_answer, :text
|
||||
add_column :misc_releases, :question_5_answer, :text
|
||||
add_column :misc_releases, :question_6_answer, :text
|
||||
add_column :misc_releases, :question_7_answer, :text
|
||||
add_column :misc_releases, :question_8_answer, :text
|
||||
add_column :misc_releases, :question_9_answer, :text
|
||||
add_column :misc_releases, :question_10_answer, :text
|
||||
add_column :misc_releases, :question_11_answer, :text
|
||||
add_column :misc_releases, :question_12_answer, :text
|
||||
add_column :misc_releases, :question_13_answer, :text
|
||||
add_column :misc_releases, :question_14_answer, :text
|
||||
add_column :misc_releases, :question_15_answer, :text
|
||||
|
||||
end
|
||||
end
|
||||
@@ -1101,7 +1101,22 @@ CREATE TABLE public.misc_releases (
|
||||
signed_at timestamp without time zone,
|
||||
minor boolean DEFAULT false,
|
||||
created_at timestamp(6) without time zone NOT NULL,
|
||||
updated_at timestamp(6) without time zone NOT NULL
|
||||
updated_at timestamp(6) without time zone NOT NULL,
|
||||
question_1_answer text,
|
||||
question_2_answer text,
|
||||
question_3_answer text,
|
||||
question_4_answer text,
|
||||
question_5_answer text,
|
||||
question_6_answer text,
|
||||
question_7_answer text,
|
||||
question_8_answer text,
|
||||
question_9_answer text,
|
||||
question_10_answer text,
|
||||
question_11_answer text,
|
||||
question_12_answer text,
|
||||
question_13_answer text,
|
||||
question_14_answer text,
|
||||
question_15_answer text
|
||||
);
|
||||
|
||||
|
||||
@@ -3886,6 +3901,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20200619085823'),
|
||||
('20200619134853'),
|
||||
('20200622180507'),
|
||||
('20200625144713');
|
||||
('20200625144713'),
|
||||
('20200702152130');
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
it "renders content" do
|
||||
it "renders content if theere are existing broadcasts" do
|
||||
create(:broadcast, project: project, name: "Another Broadcast")
|
||||
|
||||
get :index, params: { project_id: project }
|
||||
@@ -34,12 +34,13 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
end
|
||||
|
||||
context "when there are no active broadcasts" do
|
||||
it "renders an empty message" do
|
||||
it "renders splash screen" do
|
||||
Broadcast.destroy_all
|
||||
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).to have_content("Live streams will appear here")
|
||||
expect(response.body).to have_link create_stream
|
||||
expect(response.body).to have_link schedule_demo
|
||||
end
|
||||
end
|
||||
|
||||
@@ -55,10 +56,8 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
|
||||
context "for xhr request" do
|
||||
it "filters the broadcasts by a query param" do
|
||||
appearance_releases = [
|
||||
create(:broadcast, skip_create_callback: true, name: "Stream by Adam"),
|
||||
create(:broadcast, skip_create_callback: true, name: "Stream by Zoe"),
|
||||
]
|
||||
create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Adam")
|
||||
create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Zoe")
|
||||
|
||||
get :index, params: { project_id: project, query: "Zoe" }, xhr: true
|
||||
|
||||
@@ -245,4 +244,12 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
|
||||
{ files: [contract_file] }
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'broadcasts.splash.actions.book_demo'
|
||||
end
|
||||
|
||||
def create_stream
|
||||
t 'broadcasts.splash.actions.create_stream'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,7 +19,7 @@ describe ContractTemplatesController do
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
it 'renders content' do
|
||||
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)
|
||||
@@ -39,10 +39,11 @@ describe ContractTemplatesController do
|
||||
end
|
||||
|
||||
context 'when there are no contract templates' do
|
||||
it 'renders an empty message' do
|
||||
it 'renders splash screen' do
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).to have_content('Release Templates will appear here')
|
||||
expect(response.body).to have_link "Create New Release Template"
|
||||
expect(response.body).to have_link schedule_demo
|
||||
end
|
||||
end
|
||||
|
||||
@@ -50,6 +51,7 @@ describe ContractTemplatesController do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
it 'does not show the new contract template button' do
|
||||
create(:contract_template, project: project)
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).not_to have_link('Create New Release Template')
|
||||
@@ -166,4 +168,8 @@ describe ContractTemplatesController do
|
||||
restriction_text: 'restrictions'
|
||||
}
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'contract_templates.splash.actions.book_demo'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,14 +19,29 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
|
||||
end
|
||||
|
||||
it "displays validation errors" do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
contract_template = create(:contract_template,
|
||||
project: project,
|
||||
question_1_text: "Question 1",
|
||||
question_2_text: "Question 2"
|
||||
)
|
||||
sign_in(user)
|
||||
|
||||
post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, medical_release: { person_address_city: "Albuquerque" } }
|
||||
post :create, params: {
|
||||
account_id: user.primary_account.to_param,
|
||||
project_id: project,
|
||||
contract_template_id: contract_template,
|
||||
medical_release: {
|
||||
person_address_city: "Albuquerque",
|
||||
question_2_answer: "Answer 2"
|
||||
}
|
||||
}
|
||||
|
||||
body = CGI.unescape_html(response.body)
|
||||
expect(body).to match /Person first name can't be blank/
|
||||
expect(body).to match /Person last name can't be blank/
|
||||
expect(body).to match />can't be blank</
|
||||
expect(body).to match /Question 1 #{question_answer_validation_error}/
|
||||
expect(body).not_to match /Question 2 #{question_answer_validation_error}/
|
||||
end
|
||||
|
||||
it "responds with success " do
|
||||
@@ -68,4 +83,8 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
|
||||
|
||||
{ signature_base64: data_uri }
|
||||
end
|
||||
|
||||
def question_answer_validation_error
|
||||
t 'medical_releases.custom_validation_errors.question_answer_is_required'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -20,6 +20,7 @@ RSpec.describe VideosController, type: :controller do
|
||||
end
|
||||
|
||||
it "has a search form" do
|
||||
create(:video, project: project)
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).to have_button("search-button")
|
||||
@@ -43,7 +44,7 @@ RSpec.describe VideosController, type: :controller do
|
||||
end
|
||||
|
||||
|
||||
it "renders content" do
|
||||
it "renders content if there are existing videos" do
|
||||
video = create(:video, project: project, name: "My Video", number: "001", created_at: 1.day.ago)
|
||||
|
||||
get :index, params: { project_id: project }
|
||||
@@ -58,10 +59,11 @@ RSpec.describe VideosController, type: :controller do
|
||||
end
|
||||
|
||||
context "when there are no records" do
|
||||
it "renders an empty message" do
|
||||
it "renders splash screen" do
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).to have_content("Videos will appear here")
|
||||
expect(response.body).to have_link "Upload New Video"
|
||||
expect(response.body).to have_link schedule_demo
|
||||
end
|
||||
end
|
||||
|
||||
@@ -277,4 +279,8 @@ RSpec.describe VideosController, type: :controller do
|
||||
def video_update_params
|
||||
attributes_for(:video, :with_graphics_only_edl_file, :with_audio_only_edl_file, name: "Test Video").except(:file)
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'videos.splash.actions.book_demo'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,6 +16,7 @@ FactoryBot.define do
|
||||
appearance_release: true,
|
||||
location_release: true,
|
||||
material_release: true,
|
||||
misc_release: true,
|
||||
medical_release: true,
|
||||
music_release: true,
|
||||
talent_release: true,
|
||||
|
||||
@@ -13,6 +13,7 @@ feature "User imports release templates", type: :feature do
|
||||
end
|
||||
|
||||
scenario "importing two existing templates into a project" do
|
||||
create(:contract_template, project: project)
|
||||
visit project_contract_templates_path(project)
|
||||
click_on "Import Release Template"
|
||||
select_templates([project_one_template.id, project_two_template.id])
|
||||
@@ -31,6 +32,7 @@ feature "User imports release templates", type: :feature do
|
||||
end
|
||||
|
||||
scenario "searching for a template", js: true do
|
||||
create(:contract_template, project: project)
|
||||
visit project_contract_templates_path(project)
|
||||
click_on "Import Release Template"
|
||||
fill_in "query", with: "Second"
|
||||
|
||||
@@ -11,6 +11,13 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
sign_in(current_user)
|
||||
end
|
||||
|
||||
scenario 'splash page is shown if tehre are no contract templates' do
|
||||
visit project_contract_templates_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_release_template
|
||||
end
|
||||
|
||||
scenario 'creating a new release template' do
|
||||
visit new_project_contract_template_path(project)
|
||||
|
||||
@@ -25,7 +32,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
select 'None', from: 'Restriction'
|
||||
click_on 'Create Release Template'
|
||||
|
||||
expect(page).to have_content('The release template has been created')
|
||||
expect(page).to have_content(create_contract_template_success_message)
|
||||
end
|
||||
|
||||
scenario 'medical release template has a guardian clause field' do
|
||||
@@ -36,10 +43,28 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
fill_hidden guardian_clause_field, with: 'Guardian clause text'
|
||||
click_on 'Create Release Template'
|
||||
|
||||
expect(page).to have_content('The release template has been created')
|
||||
expect(page).to have_content(create_contract_template_success_message)
|
||||
expect(ContractTemplate.last.guardian_clause.body.to_s).to match /Guardian clause text/
|
||||
end
|
||||
|
||||
scenario 'misc release templates has guardian clause and questionnaire', js: true do
|
||||
visit new_project_contract_template_path(project)
|
||||
|
||||
fill_in 'Name', with: 'My Misc Release'
|
||||
select 'Misc Release', from: 'Release type'
|
||||
|
||||
expect(page).to have_selector('label', text: 'Guardian Clause')
|
||||
MiscRelease::NUMBER_OF_CUSTOM_FIELDS.times do |n|
|
||||
expect(page).to have_field(question_field(n+1))
|
||||
end
|
||||
|
||||
fill_in_trix 'contract_template_guardian_clause', with: 'Guardian clause text'
|
||||
fill_in question_field(1), with: 'How much experience do you have in the industry?'
|
||||
click_on 'Create Release Template'
|
||||
|
||||
expect(page).to have_content(create_contract_template_success_message)
|
||||
end
|
||||
|
||||
scenario 'preview new talent release template without guardian clause' do
|
||||
visit new_project_contract_template_path(project)
|
||||
select 'Talent Release', from: 'Release type'
|
||||
@@ -143,13 +168,13 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
scenario 'Should not allow negative fees' do
|
||||
fill_in 'Fee', with: '-200'
|
||||
click_on 'Create Release Template'
|
||||
expect(page).not_to have_content('The release template has been created')
|
||||
expect(page).not_to have_content(create_contract_template_success_message)
|
||||
end
|
||||
|
||||
scenario 'Should not allow fees with more than 9 digits' do
|
||||
fill_in 'Fee', with: '9999999999'
|
||||
click_on 'Create Release Template'
|
||||
expect(page).not_to have_content('The release template has been created')
|
||||
expect(page).not_to have_content(create_contract_template_success_message)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -223,12 +248,20 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
it 'does not show management buttons for release templates' do
|
||||
create(:contract_template, project: project)
|
||||
visit project_contract_templates_path(project)
|
||||
|
||||
expect(page).not_to have_content('Create New Release Template')
|
||||
expect(page).not_to have_content(import_template_button)
|
||||
expect(page).not_to have_content('Delete')
|
||||
end
|
||||
|
||||
it 'does not show create release button on splash page' do
|
||||
visit project_contract_templates_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).not_to have_content create_release_template
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is account manager' do
|
||||
@@ -242,6 +275,13 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
click_on 'Manage'
|
||||
expect(page).to have_content('Archive')
|
||||
end
|
||||
|
||||
it 'does not show create release button on splash page' do
|
||||
visit project_contract_templates_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_release_template
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
@@ -270,7 +310,23 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
||||
'contract_template_guardian_clause_trix_input_contract_template'
|
||||
end
|
||||
|
||||
def create_contract_template_success_message
|
||||
'The release template has been created'
|
||||
end
|
||||
|
||||
def question_field(n)
|
||||
"Question #{n} text"
|
||||
end
|
||||
|
||||
def fill_hidden(id, with:)
|
||||
find(:xpath, "//input[@id='#{id}']", visible: false).set with
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'contract_templates.splash.actions.book_demo'
|
||||
end
|
||||
|
||||
def create_release_template
|
||||
t 'contract_templates.splash.actions.create_template'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,6 +30,24 @@ feature 'User managing appearance releases' do
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'creating a release for a minor', js: true do
|
||||
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
|
||||
|
||||
@@ -50,6 +68,7 @@ feature 'User managing appearance releases' do
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
fill_in_person_address_fields
|
||||
@@ -60,11 +79,6 @@ feature 'User managing appearance releases' do
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
||||
|
||||
fill_in guardian_email_field, with: 'invalid@email'
|
||||
click_button submit_release_button
|
||||
expect(page).to have_content('Guardian email is not an email')
|
||||
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in_guardian_address_fields
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
||||
@@ -99,6 +113,7 @@ feature 'User managing appearance releases' do
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
fill_in_person_address_fields
|
||||
@@ -109,11 +124,6 @@ feature 'User managing appearance releases' do
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
||||
|
||||
fill_in guardian_email_field, with: 'invalid@email'
|
||||
click_button submit_release_button
|
||||
expect(page).to have_content('Guardian email is not an email')
|
||||
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in_guardian_address_fields
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
||||
|
||||
@@ -12,6 +12,13 @@ feature 'User managing broadcasts' do
|
||||
allow(MuxLiveStream).to receive(:new).and_return(double(id: 'id', key: 'key', playback_id: 'playback_id'))
|
||||
end
|
||||
|
||||
scenario "splash page is shown if there are no existing streams" do
|
||||
visit project_broadcasts_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_stream
|
||||
end
|
||||
|
||||
scenario 'creating and deleting a broadcast', js: true do
|
||||
visit new_project_broadcast_path(project)
|
||||
|
||||
@@ -131,6 +138,29 @@ feature 'User managing broadcasts' do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is associate' do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
it 'does not show button to create new live stream' do
|
||||
visit project_broadcasts_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).not_to have_content create_stream
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is account manager' do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
it 'does show button to create new live stream' do
|
||||
visit project_broadcasts_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content create_stream
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
@@ -151,4 +181,12 @@ feature 'User managing broadcasts' do
|
||||
def switch_view_dropdown
|
||||
'Switch View'
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'broadcasts.splash.actions.book_demo'
|
||||
end
|
||||
|
||||
def create_stream
|
||||
t 'broadcasts.splash.actions.create_stream'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,6 +28,24 @@ feature "User managing medical releases" do
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'creating a release for a minor', js: true do
|
||||
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
|
||||
|
||||
@@ -47,6 +65,7 @@ feature "User managing medical releases" do
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: "valid@email.com"
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
fill_in_person_address_fields
|
||||
@@ -56,11 +75,6 @@ feature "User managing medical releases" do
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
||||
|
||||
fill_in guardian_email_field, with: 'invalid@email'
|
||||
click_button submit_release_button
|
||||
expect(page).to have_content email_validation_error_for('Guardian')
|
||||
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in_guardian_address_fields
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
||||
@@ -94,6 +108,7 @@ feature "User managing medical releases" do
|
||||
fill_in guardian_first_name_field, with: 'Guardian'
|
||||
fill_in guardian_last_name_field, with: 'Name'
|
||||
fill_in guardian_phone_field, with: '001101'
|
||||
fill_in guardian_email_field, with: "valid@email.com"
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
fill_in_person_address_fields
|
||||
@@ -103,11 +118,6 @@ feature "User managing medical releases" do
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
||||
|
||||
fill_in guardian_email_field, with: 'invalid@email'
|
||||
click_button submit_release_button
|
||||
expect(page).to have_content email_validation_error_for('Guardian')
|
||||
|
||||
fill_in guardian_email_field, with: 'valid@email.com'
|
||||
fill_in_guardian_address_fields
|
||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
||||
@@ -121,6 +131,43 @@ feature "User managing medical releases" do
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
expect(MedicalRelease.last.guardian_2_first_name).to eq 'Second'
|
||||
end
|
||||
|
||||
scenario 'when signing release, question answers are required', js: true do
|
||||
project = create(:project, members: current_user, account: current_user.primary_account)
|
||||
contract_template = create(:contract_template,
|
||||
project: project,
|
||||
question_1_text: 'Question 1',
|
||||
question_2_text: 'Question 2'
|
||||
)
|
||||
|
||||
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
|
||||
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
|
||||
|
||||
expect do
|
||||
click_button submit_release_button
|
||||
end.to change(MedicalRelease, :count).by(0)
|
||||
expect(page).not_to have_content(successful_submission_message)
|
||||
|
||||
fill_in answer_field_for_question(1), with: 'Answer 1'
|
||||
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
|
||||
|
||||
expect do
|
||||
click_button submit_release_button
|
||||
end.to change(MedicalRelease, :count).by(0)
|
||||
expect(page).not_to have_content(successful_submission_message)
|
||||
|
||||
fill_in answer_field_for_question(2), with: 'Answer 2'
|
||||
draw_signature file_fixture("signature.png"), "medical_release_signature_base64"
|
||||
|
||||
expect do
|
||||
click_button submit_release_button
|
||||
end.to change(MedicalRelease, :count).by(1)
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
context "when signed in as account manager" do
|
||||
@@ -396,4 +443,8 @@ feature "User managing medical releases" do
|
||||
def guardian_2_information_heading
|
||||
t 'public.medical_releases.new.guardian_2_info.heading'
|
||||
end
|
||||
|
||||
def answer_field_for_question(number)
|
||||
"medical_release[question_#{number}_answer]"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,6 +4,52 @@ feature "User managing misc releases" do
|
||||
let(:current_user) { create(:user) }
|
||||
let(:project) { create(:project, members: current_user, account: current_user.primary_account) }
|
||||
|
||||
context 'when signed out' do
|
||||
scenario 'creating a release for an adult', js: true do
|
||||
project = create(:project, members: current_user, account: current_user.primary_account)
|
||||
contract_template = create(:misc_release_contract_template,
|
||||
question_1_text: "Question 1",
|
||||
project: project)
|
||||
|
||||
visit new_account_project_contract_template_misc_release_path(project.account, project, contract_template)
|
||||
|
||||
expect(page).to have_content("QUESTIONNAIRE")
|
||||
|
||||
fill_in person_first_name_field, with: 'Jane'
|
||||
fill_in person_last_name_field, with: 'Doe'
|
||||
fill_in_person_address_fields
|
||||
fill_in person_phone_field, with: '555-555-5555'
|
||||
fill_in person_email_field, with: 'jane.doe@test.com'
|
||||
fill_in question_1_field, with: "Answer 1"
|
||||
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
|
||||
draw_signature file_fixture("signature.png"), "misc_release_signature_base64"
|
||||
|
||||
expect do
|
||||
click_button submit_release_button
|
||||
end.to change(MiscRelease, :count).by(1)
|
||||
|
||||
expect(page).to have_content(successful_submission_message)
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_misc_release_path(project.account, project, contract_template)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when signed in as account manager" do
|
||||
before do
|
||||
sign_in current_user
|
||||
@@ -25,6 +71,52 @@ feature "User managing misc releases" do
|
||||
click_link *view_release_pdf_link_for(native_release)
|
||||
expect(content_type).to eq('application/pdf')
|
||||
end
|
||||
|
||||
scenario 'viewing the contract PDF' do
|
||||
misc_release = create(:misc_release,
|
||||
:native,
|
||||
contract_template: build(:misc_release_contract_template, question_1_text: 'Q1'),
|
||||
question_1_answer: 'A1',
|
||||
project: project,
|
||||
person_first_name: 'Jane',
|
||||
person_last_name: 'Doe',
|
||||
tag_list: 'Woman, Brunette',
|
||||
notes: [
|
||||
build(:note,
|
||||
content: 'Note 1',
|
||||
user: build(:user, email: 'jane.doe@test.com'),
|
||||
email: 'jane.doe@test.com',
|
||||
created_at: DateTime.new(2020, 2, 21, 12, 0, 0)),
|
||||
build(:note,
|
||||
content: 'Note 2',
|
||||
user: build(:user, email: 'john.doe@test.com'),
|
||||
email: 'john.doe@test.com',
|
||||
created_at: DateTime.new(2020, 2, 20, 11, 0, 0))
|
||||
])
|
||||
|
||||
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).to have_content('Jane Doe')
|
||||
expect(pdf_body).to have_content('NOTES')
|
||||
expect(pdf_body).to have_content('Note 1')
|
||||
expect(pdf_body).to have_content('jane.doe@test.com')
|
||||
expect(pdf_body).to have_content('2/21/20 12:00 PM')
|
||||
expect(pdf_body).to have_content('Note 2')
|
||||
expect(pdf_body).to have_content('john.doe@test.com')
|
||||
expect(pdf_body).to have_content('2/20/20 11:00 AM')
|
||||
expect(pdf_body).to have_content('TAGS')
|
||||
expect(pdf_body).to have_content('Woman')
|
||||
expect(pdf_body).to have_content('Brunette')
|
||||
expect(pdf_body).not_to have_content('Guardian Email')
|
||||
expect(pdf_body).to have_content('QUESTIONNAIRE')
|
||||
expect(pdf_body).to have_content('Q1')
|
||||
expect(pdf_body).to have_content('A1')
|
||||
end
|
||||
end
|
||||
|
||||
context "when the user is manager(project manager)" do
|
||||
@@ -52,4 +144,59 @@ feature "User managing misc releases" do
|
||||
def view_release_pdf_link_for(release)
|
||||
['Download', href: misc_release_contracts_path(release, format: 'pdf')]
|
||||
end
|
||||
|
||||
def fill_in_person_address_fields
|
||||
fill_in person_address_street1_field, with: "123 Test Lane"
|
||||
fill_in person_address_city_field, with: "New York"
|
||||
fill_in person_address_state_field, with: "NY"
|
||||
fill_in person_address_zip_field, with: '1000'
|
||||
end
|
||||
|
||||
def person_address_street1_field
|
||||
t('helpers.label.misc_release.person_address_street1')
|
||||
end
|
||||
|
||||
def person_address_city_field
|
||||
t('helpers.label.misc_release.person_address_city')
|
||||
end
|
||||
|
||||
def person_address_state_field
|
||||
t('helpers.label.misc_release.person_address_state')
|
||||
end
|
||||
|
||||
def person_address_zip_field
|
||||
t('helpers.label.misc_release.person_address_zip')
|
||||
end
|
||||
|
||||
def person_first_name_field
|
||||
t('helpers.label.misc_release.person_first_name')
|
||||
end
|
||||
|
||||
def person_last_name_field
|
||||
t('helpers.label.misc_release.person_last_name')
|
||||
end
|
||||
|
||||
def person_email_field
|
||||
t('helpers.label.misc_release.person_email')
|
||||
end
|
||||
|
||||
def person_phone_field
|
||||
t('helpers.label.misc_release.person_phone')
|
||||
end
|
||||
|
||||
def question_1_field
|
||||
'misc_release[question_1_answer]'
|
||||
end
|
||||
|
||||
def submit_release_button
|
||||
t 'shared.submit_release_long'
|
||||
end
|
||||
|
||||
def successful_submission_message
|
||||
"Your release was successfully submitted. Thank you."
|
||||
end
|
||||
|
||||
def person_is_minor_checkbox
|
||||
'misc_release_minor'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -32,6 +32,24 @@ feature "User managing talent releases" do
|
||||
expect(page).to have_content("Your release was successfully submitted. Thank you.")
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor - guardian fields are required when minor checkbox is checked", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_talent_release_path(project.account, project, contract_template)
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'false'
|
||||
expect(field).not_to be_visible
|
||||
end
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
all('input[data-required-tag="guardian"]').each do |field|
|
||||
expect(field['required']).to eq 'true'
|
||||
expect(field).to be_visible
|
||||
end
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
@@ -48,6 +66,8 @@ feature "User managing talent releases" do
|
||||
fill_in guardian_first_name_field, with: "Guardian"
|
||||
fill_in guardian_last_name_field, with: "Name"
|
||||
fill_in guardian_phone_field, with: "001101"
|
||||
fill_in guardian_email_field, with: "valid@email.com"
|
||||
fill_in_guardian_address_fields
|
||||
fill_in person_first_name_field, with: "Jane"
|
||||
fill_in person_last_name_field, with: "Doe"
|
||||
fill_in person_address_field, with: "123 Test Lane, New York, NY 10000"
|
||||
@@ -88,6 +108,9 @@ feature "User managing talent releases" do
|
||||
fill_in guardian_first_name_field, with: "Guardian"
|
||||
fill_in guardian_last_name_field, with: "Name"
|
||||
fill_in guardian_phone_field, with: "001101"
|
||||
fill_in guardian_email_field, with: "valid@email.com"
|
||||
|
||||
fill_in_guardian_address_fields
|
||||
|
||||
fill_in guardian_2_first_name_field, with: "Second"
|
||||
fill_in guardian_2_last_name_field, with: "Guardian"
|
||||
@@ -387,10 +410,30 @@ feature "User managing talent releases" do
|
||||
"talent_release[guardian_2_last_name]"
|
||||
end
|
||||
|
||||
def guardian_address_street1_field
|
||||
"talent_release[guardian_address_street1]"
|
||||
end
|
||||
|
||||
def guardian_address_city_field
|
||||
"talent_release[guardian_address_city]"
|
||||
end
|
||||
|
||||
def guardian_address_state_field
|
||||
"talent_release[guardian_address_state]"
|
||||
end
|
||||
|
||||
def guardian_address_zip_field
|
||||
"talent_release[guardian_address_zip]"
|
||||
end
|
||||
|
||||
def guardian_phone_field
|
||||
"Guardian phone"
|
||||
end
|
||||
|
||||
def guardian_email_field
|
||||
"talent_release[guardian_email]"
|
||||
end
|
||||
|
||||
def guardian_photo_field
|
||||
"talent_release[guardian_photo]"
|
||||
end
|
||||
@@ -505,4 +548,11 @@ feature "User managing talent releases" do
|
||||
def contract_field
|
||||
"talent_release[contract]"
|
||||
end
|
||||
|
||||
def fill_in_guardian_address_fields
|
||||
fill_in guardian_address_street1_field, with: "124 Test Lane"
|
||||
fill_in guardian_address_city_field, with: "New York"
|
||||
fill_in guardian_address_state_field, with: "NY"
|
||||
fill_in guardian_address_zip_field, with: '1000'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
require "rails_helper"
|
||||
|
||||
feature "User managing videos" do
|
||||
let(:current_user) { create(:user) }
|
||||
let(:project) { create(:project, account: current_user.primary_account) }
|
||||
let(:current_user) { create(:user, :manager) }
|
||||
let(:project) { create(:project, members: current_user, account: current_user.primary_account) }
|
||||
let!(:video) do
|
||||
create(:video,
|
||||
:with_graphics_only_edl_file,
|
||||
@@ -17,6 +17,14 @@ feature "User managing videos" do
|
||||
sign_in current_user
|
||||
end
|
||||
|
||||
scenario "splash page is shown if there are no existing videos" do
|
||||
Video.delete_all
|
||||
visit project_videos_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content upload_new_video
|
||||
end
|
||||
|
||||
scenario "creating a video", js: true do
|
||||
visit project_videos_path(project)
|
||||
click_link "Upload New Video"
|
||||
@@ -96,6 +104,30 @@ feature "User managing videos" do
|
||||
expect(page).to have_content("Second Video")
|
||||
end
|
||||
|
||||
context 'When the user is associate' do
|
||||
let(:current_user) { create(:user, :associate) }
|
||||
|
||||
it 'does show button to upload new video' do
|
||||
Video.delete_all
|
||||
visit project_videos_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content upload_new_video
|
||||
end
|
||||
end
|
||||
|
||||
context 'When the user is account manager' do
|
||||
let(:current_user) { create(:user, :account_manager) }
|
||||
|
||||
it 'does show button to upload new video' do
|
||||
Video.delete_all
|
||||
visit project_videos_path(project)
|
||||
|
||||
expect(page).to have_content schedule_demo
|
||||
expect(page).to have_content upload_new_video
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fill_in_video_fields(data)
|
||||
@@ -115,4 +147,12 @@ feature "User managing videos" do
|
||||
def update_video_notice
|
||||
t "videos.update.notice"
|
||||
end
|
||||
|
||||
def schedule_demo
|
||||
t 'videos.splash.actions.book_demo'
|
||||
end
|
||||
|
||||
def upload_new_video
|
||||
t 'videos.splash.actions.upload_video'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,4 +43,16 @@ describe ContractTemplate do
|
||||
expect(contract_template).to be_duplicated
|
||||
end
|
||||
end
|
||||
|
||||
describe '#has_questionnaire?' do
|
||||
it 'returns true if there are any questions present' do
|
||||
contract_template = build(:contract_template)
|
||||
|
||||
expect(contract_template).not_to have_questionnaire
|
||||
|
||||
contract_template.question_1_text = 'Q1'
|
||||
|
||||
expect(contract_template).to have_questionnaire
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,6 +22,23 @@ RSpec.describe MedicalRelease do
|
||||
context "for non-native releases" do
|
||||
it { is_expected.to validate_attachment_of(:contract).on(:non_native) }
|
||||
end
|
||||
|
||||
context "question answers" do
|
||||
let(:project) { create(:project) }
|
||||
let(:contract_template) { create(:contract_template, project: project, question_1_text: 'Question 1') }
|
||||
|
||||
it "returns validation errors if answers are missing" do
|
||||
expect do
|
||||
create(:medical_release, contract_template: contract_template)
|
||||
end.to raise_exception ActiveRecord::RecordInvalid
|
||||
end
|
||||
|
||||
it "creates release if answers are present" do
|
||||
expect do
|
||||
create(:medical_release, contract_template: contract_template, question_1_answer: 'Answer 1')
|
||||
end.to change(MedicalRelease, :count).by(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "attachments" do
|
||||
|
||||
Reference in New Issue
Block a user