Compare commits
2 Commits
add-requir
...
add-video-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4c24417c8 | ||
|
|
7cdb814d6d |
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");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -14,15 +14,37 @@ class MedicalRelease < ApplicationRecord
|
|||||||
|
|
||||||
NUMBER_OF_CUSTOM_FIELDS = 15
|
NUMBER_OF_CUSTOM_FIELDS = 15
|
||||||
|
|
||||||
composed_of :person_address,
|
composed_of :person_address,
|
||||||
class_name: "Address",
|
class_name: "Address",
|
||||||
mapping: [
|
mapping: [
|
||||||
%w(person_address_street1 street1),
|
%w[person_address_street1 street1],
|
||||||
%w(person_address_street2 street2),
|
%w[person_address_street2 street2],
|
||||||
%w(person_address_city city),
|
%w[person_address_city city],
|
||||||
%w(person_address_state state),
|
%w[person_address_state state],
|
||||||
%w(person_address_zip zip),
|
%w[person_address_zip zip],
|
||||||
%w(person_address_country country)
|
%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
|
def self.face_photo_acceptable_content_types
|
||||||
@@ -32,6 +54,7 @@ class MedicalRelease < ApplicationRecord
|
|||||||
# These validations apply to all releases
|
# These validations apply to all releases
|
||||||
validates :person_first_name, :person_last_name, presence: true
|
validates :person_first_name, :person_last_name, presence: true
|
||||||
validates :person_email, email: true, allow_blank: true
|
validates :person_email, email: true, allow_blank: true
|
||||||
|
validate :valid_answers
|
||||||
|
|
||||||
acts_as_taggable_on :internal_tags, :tags
|
acts_as_taggable_on :internal_tags, :tags
|
||||||
|
|
||||||
@@ -76,4 +99,15 @@ class MedicalRelease < ApplicationRecord
|
|||||||
def contract_file_name
|
def contract_file_name
|
||||||
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<iframe src="https://player.vimeo.com/video/435200320?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="DirectME_How to_V5"></iframe>
|
||||||
<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>
|
</div>
|
||||||
|
|||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<iframe src="https://player.vimeo.com/video/435200486?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="ReleaseME_How to_V5"></iframe>
|
||||||
<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>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<% unless @contract_template.guardian_clause.blank? %>
|
<% unless @contract_template.guardian_clause.blank? %>
|
||||||
<%= form.form_group :minor do %>
|
<%= 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 %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
<%= 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">
|
<div class="<%= class_string("collapse" => !@appearance_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<%= form.text_field :guardian_first_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3" %>
|
<%= 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" %>
|
<%= 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" %>
|
<%= 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" %>
|
<%= form.text_field :guardian_email, required: @appearance_release.minor?, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||||
</div>
|
</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 %>
|
<% end %>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<% unless @contract_template.guardian_clause.blank? %>
|
<% unless @contract_template.guardian_clause.blank? %>
|
||||||
<%= form.form_group :minor do %>
|
<%= 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 %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
<% (1..MedicalRelease::NUMBER_OF_CUSTOM_FIELDS).each do |n| %>
|
||||||
<% if @contract_template.public_send("question_#{n}_text").present? %>
|
<% if @contract_template.public_send("question_#{n}_text").present? %>
|
||||||
<div class="form-row">
|
<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>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -59,14 +59,12 @@
|
|||||||
<div class="<%= class_string("collapse" => !@medical_release.minor?) %>" data-ujs-target="guardian-fields">
|
<div class="<%= class_string("collapse" => !@medical_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<%= form.text_field :guardian_first_name, required: @medical_release.minor?, wrapper_class: "col-sm-3" %>
|
<%= 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" %>
|
<%= 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" %>
|
<%= 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>
|
||||||
<div class="form-row">
|
<%= render "shared/address_fields", form: form, subject: "guardian", required: @medical_release.minor?, data: { required_tag: "guardian" } %>
|
||||||
<%= 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? %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<% unless @contract_template.guardian_clause.blank? %>
|
<% unless @contract_template.guardian_clause.blank? %>
|
||||||
<%= form.form_group :minor do %>
|
<%= 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 %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
||||||
@@ -56,14 +56,12 @@
|
|||||||
<div class="<%= class_string("collapse" => !@misc_release.minor?) %>" data-ujs-target="guardian-fields">
|
<div class="<%= class_string("collapse" => !@misc_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<%= form.text_field :guardian_first_name, required: @misc_release.minor?, wrapper_class: "col-sm-3" %>
|
<%= 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" %>
|
<%= 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" %>
|
<%= 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>
|
||||||
<div class="form-row">
|
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
|
||||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
|
|
||||||
</div>
|
|
||||||
<%= render "shared/address_fields", form: form, subject: "guardian" %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<% unless @contract_template.guardian_clause.blank? %>
|
<% unless @contract_template.guardian_clause.blank? %>
|
||||||
<%= form.form_group :minor do %>
|
<%= 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 %>
|
<% end %>
|
||||||
|
|
||||||
<%= card_field_set_tag t(".guardian_clause.heading") do %>
|
<%= 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">
|
<div class="<%= class_string("collapse" => !@talent_release.minor?) %>" data-ujs-target="guardian-fields">
|
||||||
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
<%= card_field_set_tag t(".guardian_info.heading") do %>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<%= form.text_field :guardian_first_name, required: @talent_release.minor?, wrapper_class: "col-sm-3" %>
|
<%= 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" %>
|
<%= 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" %>
|
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||||
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
|
<%= form.text_field :guardian_email, wrapper_class: "col-sm-6", data: { required_tag: "guardian" } %>
|
||||||
</div>
|
</div>
|
||||||
<%= render "shared/address_fields", form: form, subject: "guardian" %>
|
<%= render "shared/address_fields", form: form, subject: "guardian", data: { required_tag: "guardian" } %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
<% field_name_prefix = subject.present? ? "#{subject}_" : "" %>
|
<% field_name_prefix = subject.present? ? "#{subject}_" : "" %>
|
||||||
<% required = required || false %>
|
<% required = required || false %>
|
||||||
|
<% data = data || nil %>
|
||||||
|
|
||||||
<div class="form-row">
|
<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" %>
|
<%= form.text_field "#{field_name_prefix}address_street2", wrapper_class: "col-sm-6" %>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-row">
|
<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_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" %>
|
<%= 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" %>
|
<%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3", data: data %>
|
||||||
</div>
|
</div>
|
||||||
<%= form.form_group "#{field_name_prefix}address_country" do %>
|
<%= form.form_group "#{field_name_prefix}address_country" do %>
|
||||||
<%= form.label "#{field_name_prefix}address_country" %>
|
<%= form.label "#{field_name_prefix}address_country" %>
|
||||||
|
|||||||
@@ -18,15 +18,7 @@
|
|||||||
<div class="card-body p-0">
|
<div class="card-body p-0">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<div class="embed-responsive-item">
|
<div class="embed-responsive-item">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<iframe src="https://player.vimeo.com/video/435200434?app_id=122963" width="426" height="240" frameborder="0" allow="autoplay; fullscreen" allowfullscreen title="DeliverME_How to_V5"></iframe>
|
||||||
<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>
|
</div>
|
||||||
|
|||||||
@@ -772,6 +772,8 @@ en:
|
|||||||
update:
|
update:
|
||||||
notice: The material release has been updated
|
notice: The material release has been updated
|
||||||
medical_releases:
|
medical_releases:
|
||||||
|
custom_validation_errors:
|
||||||
|
question_answer_is_required: answer is required
|
||||||
destroy:
|
destroy:
|
||||||
alert: The medical release has been deleted
|
alert: The medical release has been deleted
|
||||||
index:
|
index:
|
||||||
|
|||||||
@@ -282,6 +282,9 @@ es:
|
|||||||
form:
|
form:
|
||||||
photos:
|
photos:
|
||||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
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:
|
public:
|
||||||
appearance_releases:
|
appearance_releases:
|
||||||
create:
|
create:
|
||||||
|
|||||||
@@ -19,14 +19,29 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "displays validation errors" do
|
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)
|
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)
|
body = CGI.unescape_html(response.body)
|
||||||
expect(body).to match /Person first name can't be blank/
|
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 /Person last name can't be blank/
|
||||||
expect(body).to match />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
|
end
|
||||||
|
|
||||||
it "responds with success " do
|
it "responds with success " do
|
||||||
@@ -68,4 +83,8 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
|
|||||||
|
|
||||||
{ signature_base64: data_uri }
|
{ signature_base64: data_uri }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def question_answer_validation_error
|
||||||
|
t 'medical_releases.custom_validation_errors.question_answer_is_required'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -30,6 +30,24 @@ feature 'User managing appearance releases' do
|
|||||||
expect(page).to have_content(successful_submission_message)
|
expect(page).to have_content(successful_submission_message)
|
||||||
end
|
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
|
scenario 'creating a release for a minor', js: true do
|
||||||
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
|
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_first_name_field, with: 'Guardian'
|
||||||
fill_in guardian_last_name_field, with: 'Name'
|
fill_in guardian_last_name_field, with: 'Name'
|
||||||
fill_in guardian_phone_field, with: '001101'
|
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_first_name_field, with: 'Jane'
|
||||||
fill_in person_last_name_field, with: 'Doe'
|
fill_in person_last_name_field, with: 'Doe'
|
||||||
fill_in_person_address_fields
|
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
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
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
|
fill_in_guardian_address_fields
|
||||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
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_first_name_field, with: 'Guardian'
|
||||||
fill_in guardian_last_name_field, with: 'Name'
|
fill_in guardian_last_name_field, with: 'Name'
|
||||||
fill_in guardian_phone_field, with: '001101'
|
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_first_name_field, with: 'Jane'
|
||||||
fill_in person_last_name_field, with: 'Doe'
|
fill_in person_last_name_field, with: 'Doe'
|
||||||
fill_in_person_address_fields
|
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
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
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
|
fill_in_guardian_address_fields
|
||||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
|
||||||
|
|||||||
@@ -28,6 +28,24 @@ feature "User managing medical releases" do
|
|||||||
expect(page).to have_content(successful_submission_message)
|
expect(page).to have_content(successful_submission_message)
|
||||||
end
|
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
|
scenario 'creating a release for a minor', js: true do
|
||||||
allow(BrayniacAI::Validation).to receive(:create).and_return(double(:validation, valid: true))
|
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_first_name_field, with: 'Guardian'
|
||||||
fill_in guardian_last_name_field, with: 'Name'
|
fill_in guardian_last_name_field, with: 'Name'
|
||||||
fill_in guardian_phone_field, with: '001101'
|
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_first_name_field, with: 'Jane'
|
||||||
fill_in person_last_name_field, with: 'Doe'
|
fill_in person_last_name_field, with: 'Doe'
|
||||||
fill_in_person_address_fields
|
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
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
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
|
fill_in_guardian_address_fields
|
||||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
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_first_name_field, with: 'Guardian'
|
||||||
fill_in guardian_last_name_field, with: 'Name'
|
fill_in guardian_last_name_field, with: 'Name'
|
||||||
fill_in guardian_phone_field, with: '001101'
|
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_first_name_field, with: 'Jane'
|
||||||
fill_in person_last_name_field, with: 'Doe'
|
fill_in person_last_name_field, with: 'Doe'
|
||||||
fill_in_person_address_fields
|
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
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
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
|
fill_in_guardian_address_fields
|
||||||
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
|
||||||
draw_signature file_fixture('signature.png'), 'medical_release_signature_base64'
|
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(page).to have_content(successful_submission_message)
|
||||||
expect(MedicalRelease.last.guardian_2_first_name).to eq 'Second'
|
expect(MedicalRelease.last.guardian_2_first_name).to eq 'Second'
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context "when signed in as account manager" do
|
context "when signed in as account manager" do
|
||||||
@@ -396,4 +443,8 @@ feature "User managing medical releases" do
|
|||||||
def guardian_2_information_heading
|
def guardian_2_information_heading
|
||||||
t 'public.medical_releases.new.guardian_2_info.heading'
|
t 'public.medical_releases.new.guardian_2_info.heading'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def answer_field_for_question(number)
|
||||||
|
"medical_release[question_#{number}_answer]"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ feature "User managing misc releases" do
|
|||||||
context 'when signed out' do
|
context 'when signed out' do
|
||||||
scenario 'creating a release for an adult', js: true do
|
scenario 'creating a release for an adult', js: true do
|
||||||
project = create(:project, members: current_user, account: current_user.primary_account)
|
project = create(:project, members: current_user, account: current_user.primary_account)
|
||||||
contract_template = create(:misc_release_contract_template,
|
contract_template = create(:misc_release_contract_template,
|
||||||
question_1_text: "Question 1",
|
question_1_text: "Question 1",
|
||||||
project: project)
|
project: project)
|
||||||
|
|
||||||
@@ -30,6 +30,24 @@ feature "User managing misc releases" do
|
|||||||
|
|
||||||
expect(page).to have_content(successful_submission_message)
|
expect(page).to have_content(successful_submission_message)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context "when signed in as account manager" do
|
context "when signed in as account manager" do
|
||||||
@@ -177,4 +195,8 @@ feature "User managing misc releases" do
|
|||||||
def successful_submission_message
|
def successful_submission_message
|
||||||
"Your release was successfully submitted. Thank you."
|
"Your release was successfully submitted. Thank you."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def person_is_minor_checkbox
|
||||||
|
'misc_release_minor'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -32,6 +32,24 @@ feature "User managing talent releases" do
|
|||||||
expect(page).to have_content("Your release was successfully submitted. Thank you.")
|
expect(page).to have_content("Your release was successfully submitted. Thank you.")
|
||||||
end
|
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
|
scenario "creating a release for a minor", js: true do
|
||||||
contract_template = create(:contract_template, project: project)
|
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_first_name_field, with: "Guardian"
|
||||||
fill_in guardian_last_name_field, with: "Name"
|
fill_in guardian_last_name_field, with: "Name"
|
||||||
fill_in guardian_phone_field, with: "001101"
|
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_first_name_field, with: "Jane"
|
||||||
fill_in person_last_name_field, with: "Doe"
|
fill_in person_last_name_field, with: "Doe"
|
||||||
fill_in person_address_field, with: "123 Test Lane, New York, NY 10000"
|
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_first_name_field, with: "Guardian"
|
||||||
fill_in guardian_last_name_field, with: "Name"
|
fill_in guardian_last_name_field, with: "Name"
|
||||||
fill_in guardian_phone_field, with: "001101"
|
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_first_name_field, with: "Second"
|
||||||
fill_in guardian_2_last_name_field, with: "Guardian"
|
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]"
|
"talent_release[guardian_2_last_name]"
|
||||||
end
|
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
|
def guardian_phone_field
|
||||||
"Guardian phone"
|
"Guardian phone"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def guardian_email_field
|
||||||
|
"talent_release[guardian_email]"
|
||||||
|
end
|
||||||
|
|
||||||
def guardian_photo_field
|
def guardian_photo_field
|
||||||
"talent_release[guardian_photo]"
|
"talent_release[guardian_photo]"
|
||||||
end
|
end
|
||||||
@@ -505,4 +548,11 @@ feature "User managing talent releases" do
|
|||||||
def contract_field
|
def contract_field
|
||||||
"talent_release[contract]"
|
"talent_release[contract]"
|
||||||
end
|
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
|
end
|
||||||
|
|||||||
@@ -22,6 +22,23 @@ RSpec.describe MedicalRelease do
|
|||||||
context "for non-native releases" do
|
context "for non-native releases" do
|
||||||
it { is_expected.to validate_attachment_of(:contract).on(:non_native) }
|
it { is_expected.to validate_attachment_of(:contract).on(:non_native) }
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
describe "attachments" do
|
describe "attachments" do
|
||||||
|
|||||||
Reference in New Issue
Block a user