Compare commits

...

10 Commits

Author SHA1 Message Date
Bilal
11c6575b47 fix MR comments 2020-07-08 12:32:05 +02:00
Bilal
49ab21a3cf fix specs 2020-07-08 12:19:14 +02:00
Bilal
196fa7b93b move approvals to the new controller 2020-07-08 11:58:03 +02:00
Bilal
9e0702c389 add specs 2020-07-08 09:29:17 +02:00
Bilal
e8975ed568 add for office page in medical release pdf 2020-07-08 09:27:32 +02:00
Bilal
df37699023 remove obsolete field 2020-07-08 09:27:32 +02:00
Bilal
d70a19b7d5 allow review and approve 2020-07-08 09:27:32 +02:00
Senad Uka
19b1e75384 Upstream sync 2020-07-07 23:14:42 +02:00
Senad Uka
93a4ce462d Upstream sync 2020-07-07 21:45:30 +02:00
Senad Uka
0e16791d8b Upstream sync 2020-07-07 05:08:32 +02:00
44 changed files with 475 additions and 52 deletions

View File

@@ -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======="

View File

@@ -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")

View File

@@ -0,0 +1,21 @@
class ApprovalsController < ApplicationController
include MedicalReleaseContext
before_action :set_medical_release
before_action :set_project
layout "project"
def create
@medical_release.approve_by(current_user)
if @medical_release.save
redirect_to [@project, :medical_releases], notice: t('.release_approved')
end
end
private
def set_project
@project = @medical_release.project
end
end

View File

@@ -62,18 +62,19 @@ class ContractTemplatesController < ApplicationController
def contract_template_params
params
.require(:contract_template)
.permit(:name, :release_type, :body, :guardian_clause, :fee,
.permit(:name, :release_type, :body, :guardian_clause,
:signature_legal_text, :fee,
:applicable_medium_id, :applicable_medium_text,
:territory_id, :territory_text,
:term_id, :term_text,
:restriction_id, :restriction_text,
:question_1_text, :question_2_text,
:question_3_text, :question_4_text,
:question_5_text, :question_6_text,
:question_7_text, :question_8_text,
:question_1_text, :question_2_text,
:question_3_text, :question_4_text,
:question_5_text, :question_6_text,
:question_7_text, :question_8_text,
:question_9_text, :question_10_text,
:question_11_text, :question_12_text,
:question_13_text, :question_14_text,
:question_11_text, :question_12_text,
:question_13_text, :question_14_text,
:question_15_text)
end

View File

@@ -5,4 +5,12 @@ module TooltipHelper
concat tag.div(class: "tooltip-inner")
end
end
def get_approval_data_for_medical_release(medical_release)
if medical_release.approved_by_user_name.present?
"#{medical_release.approved_by_user_name} [#{medical_release.approved_by_user_email}]"
else
medical_release.approved_by_user_email
end
end
end

View File

@@ -22,7 +22,7 @@ class GenerateContractsZipJob < ApplicationJob
end
end
@download.file.attach(io: File.open(zipfile_name), filename: @folder_name)
@download.file.attach(io: File.open(zipfile_name), filename: "#{@folder_name}.zip")
end
rescue StandardError => e
Rails.logger.error("Failed to generate download for project (##{project.id}) with release type #{release_type}\n" + e.message)

View File

@@ -21,6 +21,7 @@ class ContractTemplate < ApplicationRecord
monetize :fee_cents
has_rich_text :body
has_rich_text :guardian_clause
has_rich_text :signature_legal_text
validates :name, presence: true
validates :release_type, presence: true

View File

@@ -100,6 +100,18 @@ class MedicalRelease < ApplicationRecord
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
end
def approve_by(user)
return unless approved_at.nil?
self.approved_by_user_name = user.full_name
self.approved_by_user_email = user.email
self.approved_at = Time.zone.now
end
def approved?
approved_at.present?
end
private
def valid_answers

View File

@@ -10,7 +10,7 @@ class QrCode
url = Rails.application.routes.url_helpers.url_for(route)
filename = [contract_template.project.name, contract_template.name].map(&:parameterize).join("_")
new(url, filename)
new(url, "#{filename}.png")
end
def initialize(url, filename = "qrcode.png")

View File

@@ -15,6 +15,14 @@ class MedicalReleasePolicy < ReleasePolicy
user.manager? || user.account_manager?
end
def review?
user.account_manager?
end
def approve?
review?
end
def edit_photos?
true
end

View File

@@ -0,0 +1,15 @@
<div class="card shadow-sm">
<%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
<div class="card-body">
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
<%= bootstrap_form_with model: @medical_release, method: :post, url: medical_release_approvals_path(@medical_release), local: true do |form| %>
<div class="row align-items-center text-center mt-4">
<%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
<div class="col-9">
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
</div>
</div>
<% end %>
</div>
</div>

View File

@@ -18,15 +18,7 @@
<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 style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435943632" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
</div>
</div>
</div>

View File

@@ -27,7 +27,7 @@
<%= link_to fa_icon("print", text: "Print"), [:new, contract_template, :blank_contracts], class: "dropdown-item", target: :_blank %>
<% end %>
<% if policy(contract_template).destroy? %>
<%= link_to fa_icon("archive", text: "Archive"), contract_template, class: "dropdown-item", method: :delete, data: { confirm: "Are you sure?" } %>
<%= link_to fa_icon("trash", text: "Delete"), contract_template, class: "dropdown-item", method: :delete, data: { confirm: "Are you sure?" } %>
<% end %>
</div>
</div>

View File

@@ -25,6 +25,11 @@
<%= form.rich_text_area :guardian_clause %>
<% end %>
</div>
<div id="signature_legal_text">
<%= form.form_group do %>
<%= form.rich_text_area :signature_legal_text %>
<% end %>
</div>
<% end %>
<%= field_set_tag content_tag(:span, t(".custom_fields.heading"), class: "h6 text-muted text-uppercase"), id: "custom_fields", style: "display: none;" do %>

View File

@@ -18,15 +18,7 @@
<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 style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435942851" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
</div>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<% if preview %>
<h1>PREVIEW ONLY</h1>
<% end %>
<p class="heading"><strong><u><%= t '.heading' %></u></strong></p>
<dl>
<%= description_list_pair t('.description_labels.producer'), releasable.project.account.name %>
<%= description_list_pair t('.description_labels.production'), releasable.project.name %>
<%= description_list_pair t('.description_labels.employee_issued_to'), releasable.name %>
<%= description_list_pair t('.description_labels.issued_by'), releasable.approved_by_user_name %>
<%= description_list_pair t('.description_labels.date_issued'), releasable.approved_at %>
</dl>

View File

@@ -25,6 +25,13 @@
<div class="page">
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
</div>
<% if releasable.class == MedicalRelease && releasable.approved? %>
<div class="page">
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
</div>
<% end %>
<% if releasable.class == AcquiredMediaRelease %>
<div class="page">
<%= render "contracts/files", release: releasable, preview: preview %>

View File

@@ -1,5 +1,13 @@
<tr id="<%= dom_id(medical_release) %>">
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
<td class="text-center">
<% if medical_release.approved? %>
<% tooltip_user_data = get_approval_data_for_medical_release(medical_release) %>
<i class="fa fa-check-circle fa-2x text-success"
data-toggle="tooltip"
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
<% end %>
</td>
<td>
<% if medical_release.photo.attached? %>
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
@@ -37,6 +45,9 @@
<% if policy(medical_release.tags).new? %>
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, medical_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
<% end %>
<% if policy(MedicalRelease).review? %>
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_medical_release_approvals_path(medical_release), class: "dropdown-item" %>
<% end %>
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (medical_release.contract.attached? || medical_release.contract_template.present?) %>
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
<% end %>

View File

@@ -22,6 +22,7 @@
<thead class="thead-light">
<tr>
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
<th><%= t '.table_headers.approved'%></th>
<th></th>
<th><%= MedicalRelease.human_attribute_name(:person_name) %></th>
<th><%= MedicalRelease.human_attribute_name(:contact_info) %></th>

View File

@@ -50,7 +50,7 @@
<hr>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -156,7 +156,7 @@
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -50,7 +50,7 @@
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form, instruction: 'An Authorized Signatory' %>
<%= render "shared/signature_fields", form: form, instruction: 'An Authorized Signatory', signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -41,7 +41,7 @@
<hr>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form, instruction: 'For Owner or Authorized Signatory' %>
<%= render "shared/signature_fields", form: form, instruction: 'For Owner or Authorized Signatory', signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -145,7 +145,7 @@
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -97,7 +97,7 @@
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -131,7 +131,7 @@
<% end %>
<%= card_field_set_tag t(".signature.heading") do %>
<%= render "shared/signature_fields", form: form %>
<%= render "shared/signature_fields", form: form, signature_legal_text: @contract_template.signature_legal_text %>
<% end %>
<div class="mt-5">

View File

@@ -12,4 +12,8 @@
<%= fa_icon "refresh" %> <%= t "shared.clear" %>
<% end %>
</div>
<br>
<% if local_assigns[:signature_legal_text] && signature_legal_text.present? %>
<div class="alert alert-warning font-weight-bold"><%= signature_legal_text %></div>
<% end %>

View File

@@ -13,3 +13,4 @@
<% end %>
<% end %>
<p class="alert alert-success p-3 lead text-center"><%= t '.success_message' %></p>
<%= link_to fa_icon("check", text: "Done"), [@project, :task_requests], class: "btn btn-primary" %>

View File

@@ -6,7 +6,7 @@
<%= 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" %>
<%= link_to t(".actions.upload_video"), [:landing, @project, :videos], class: "btn btn-success border align-self-center h-50 pb-2" %>
<% end %>
</div>
@@ -18,15 +18,7 @@
<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 style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://player.vimeo.com/video/435943995" style="position:absolute;top:0;left:0;width:100%;height:100%;" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe></div><script src="https://player.vimeo.com/api/player.js"></script>
</div>
</div>
</div>

View File

@@ -171,6 +171,13 @@ en:
sidebar:
files: Files
team_member: Team Member
approvals:
create:
release_approved: Medical release has been approved
new:
actions:
approve: Approve
heading: Review Medical Release
blank_contracts:
new:
number_of_copies_label: Number of copies
@@ -288,6 +295,14 @@ en:
print_QR_code: Print out release QR codes
releases_automatically_organized: Releases are automatically organized as theyre submitted
contracts:
for_office_use_only:
description_labels:
date_issued: Date Issued
employee_issued_to: Employee Issued To
issued_by: Issued By
producer: Producer
production: Production
heading: For Office Use Only
photos:
guardian_2_photo_heading: Second guardian photo
guardian_photo_heading: Guardian photo
@@ -364,6 +379,7 @@ en:
contract_template:
fee: Leave at $0.00 for no-fee
guardian_clause: Leave blank if not required for this contract
signature_legal_text: Leave blank if not required for this contract
task_request:
time_allowed: Minimum of 2 hours, no partial hours allowed
video:
@@ -781,12 +797,16 @@ en:
search: Search
empty: Medical releases will appear here
table_headers:
approved: Approved
notes: Notes
signed_at: Date Signed
tags: Tags
medical_release:
actions:
manage: Manage
review: Review
messages:
approved_tooltip: Approved by %{user} on %{timestamp}
misc_releases:
destroy:
alert: The misc release has been deleted

View File

@@ -50,6 +50,13 @@ es:
all_releases: All Releases (ES)
complete_releases: Complete Releases (ES)
incomplete_releases: Incomplete Releases (ES)
approvals:
create:
release_approved: Medical release has been approved (ES)
new:
actions:
approve: Approve (ES)
heading: Review Medical Release (ES)
blank_contracts:
new:
number_of_copies_label: Number of copies (ES)
@@ -107,6 +114,14 @@ es:
print_QR_code: Print out release QR codes (ES)
releases_automatically_organized: Releases are automatically organized as theyre submitted (ES)
contracts:
for_office_use_only:
description_labels:
date_issued: Date Issued (ES)
employee_issued_to: Employee Issued To (ES)
issued_by: Issued By (ES)
producer: Producer (ES)
production: Production (ES)
heading: For Office Use Only (ES)
photos:
guardian_2_photo_heading: Second guardian photo (ES)
guardian_photo_heading: Guardian photo (ES)
@@ -160,6 +175,7 @@ es:
contract_template:
fee: Leave at $0.00 for no-fee (ES)
guardian_clause: Leave blank if not required for this contract (ES)
signature_legal_text: Leave blank if not required for this contract (ES)
label:
appearance_release:
guardian_2_address_city: Guardian 2 city (ES)
@@ -273,6 +289,8 @@ es:
create: Create Live Stream (ES)
update: Save Changes (ES)
create: 'Crear %{model}'
medical_release:
update: Approve (ES)
update: 'Actualizar %{model}'
location_releases:
form:
@@ -285,6 +303,14 @@ es:
medical_releases:
custom_validation_errors:
question_answer_is_required: answer is required (ES)
index:
table_headers:
approved: Approved (ES)
medical_release:
actions:
review: Review (ES)
messages:
approved_tooltip: ""
public:
appearance_releases:
create:

View File

@@ -137,12 +137,17 @@ Rails.application.routes.draw do
end
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]
ALL_RELEASES = RELEASES + [:music_releases, :medical_releases, :misc_releases]
ALL_RELEASES = RELEASES + [:music_releases, :misc_releases]
ALL_RELEASES.each do |release|
resources release, only: [], concerns: :taggable
end
# Customization for medical releases
resources :medical_releases, only: [], concerns: :taggable do
resource :approvals, only: [:new, :create]
end
resources :bulk_taggings, only: [:new, :create]
namespace :api do

View File

@@ -0,0 +1,7 @@
class AddApprovalInfoColumnsToMedicalReleases < ActiveRecord::Migration[6.0]
def change
add_column :medical_releases, :approved_by_user_name, :text
add_column :medical_releases, :approved_by_user_email, :text
add_column :medical_releases, :approved_at, :timestamp
end
end

View File

@@ -1045,7 +1045,10 @@ CREATE TABLE public.medical_releases (
guardian_2_address_city character varying,
guardian_2_address_state character varying,
guardian_2_address_zip character varying,
guardian_2_address_country character varying
guardian_2_address_country character varying,
approved_by_user_name text,
approved_by_user_email text,
approved_at timestamp without time zone
);
@@ -3902,6 +3905,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200619134853'),
('20200622180507'),
('20200625144713'),
('20200702152130');
('20200702152130'),
('20200707155717');

View File

@@ -0,0 +1,36 @@
require "rails_helper"
RSpec.describe ApprovalsController, type: :controller do
render_views
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: user.primary_account) }
before do
sign_in user
end
describe "#new" do
let!(:medical_release) { create(:medical_release, project: project) }
it "responds successfully" do
get :new, params: { medical_release_id: medical_release }
expect(response).to be_successful
end
end
describe "#create" do
it "changes approval status successfully" do
medical_release = create(:medical_release, project: project)
expect(MedicalRelease.last.approved?).to eq false
post :create, params: { medical_release_id: medical_release }
expect(response).to redirect_to [project, :medical_releases]
expect(MedicalRelease.last.approved?).to eq true
end
end
end

View File

@@ -21,6 +21,7 @@ RSpec.feature 'User creates task request', type: :feature do
click_on 'Create Task request'
expect(page).to have_content task_created_message
expect(page).to have_link("Done")
end
scenario 'user can view task request details' do
@@ -89,4 +90,4 @@ RSpec.feature 'User creates task request', type: :feature do
def task_created_message
t 'task_requests.create.success_message'
end
end
end

View File

@@ -35,6 +35,24 @@ RSpec.feature 'User manages contract templates', type: :feature do
expect(page).to have_content(create_contract_template_success_message)
end
scenario 'creating new release template, all release types accept signature legal text' do
all_release_types = ['Acquired Media', 'Appearance', 'Location', 'Material', 'Medical', 'Misc', 'Talent']
all_release_types.each do |release_type|
visit new_project_contract_template_path(project)
dropdown_selection = "#{release_type} Release"
select dropdown_selection, from: 'Release type'
fill_in 'Name', with: "My #{release_type} template"
fill_in_trix signature_legal_text_field, with: 'LL'
expect do
click_on 'Create Release Template'
end.to change(ContractTemplate, :count).by(1)
end
end
scenario 'medical release template has a guardian clause field' do
visit new_project_contract_template_path(project)
@@ -222,7 +240,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
click_on 'Manage'
accept_alert do
click_on 'Archive'
click_on 'Delete'
end
expect(page).to have_content('The release template has been archived')
@@ -273,7 +291,7 @@ RSpec.feature 'User manages contract templates', type: :feature do
visit project_contract_templates_path(project)
click_on 'Manage'
expect(page).to have_content('Archive')
expect(page).to have_content('Delete')
end
it 'does not show create release button on splash page' do
@@ -310,6 +328,10 @@ RSpec.feature 'User manages contract templates', type: :feature do
'contract_template_guardian_clause_trix_input_contract_template'
end
def signature_legal_text_field
'contract_template_signature_legal_text'
end
def create_contract_template_success_message
'The release template has been created'
end
@@ -329,4 +351,8 @@ RSpec.feature 'User manages contract templates', type: :feature do
def create_release_template
t 'contract_templates.splash.actions.create_template'
end
def signature_legal_text_trix_field
'Signature legal text'
end
end

View File

@@ -41,6 +41,13 @@ feature "User managing acquired_media releases" do
expect(AcquiredMediaRelease.last.categories).to include("Still Photograph")
expect(page).to have_content("Your release was successfully submitted. Thank you.")
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_acquired_media_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in" do
@@ -357,4 +364,8 @@ feature "User managing acquired_media releases" do
def destroy_release_alert
t "acquired_media_releases.destroy.alert"
end
def dummy_signature_legal_text
'Some signature legal language'
end
end

View File

@@ -137,6 +137,13 @@ feature 'User managing appearance releases' do
expect(page).to have_content(successful_submission_message)
expect(AppearanceRelease.last.guardian_2_first_name).to eq 'Second'
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context 'when signed in' do
@@ -706,4 +713,8 @@ feature 'User managing appearance releases' do
def guardian_2_photo_heading
t 'appearance_releases.form.photos.guardian_2_photo.heading'
end
def dummy_signature_legal_text
'Some signature legal language'
end
end

View File

@@ -71,6 +71,13 @@ feature "User managing location releases" do
expect(page).to have_content("Your release was successfully submitted. Thank you.")
expect(LocationRelease.last.photos.attached?).to eq true
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_location_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in" do
@@ -375,4 +382,8 @@ feature "User managing location releases" do
select "Other", from: "Restriction"
fill_in "Describe other restrictions", with: "Test"
end
def dummy_signature_legal_text
'Some signature legal language'
end
end

View File

@@ -84,6 +84,13 @@ feature "User managing material releases" do
click_button submit_release_button
expect(page).to have_content success_submit_message
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_material_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in" do
@@ -382,4 +389,8 @@ feature "User managing material releases" do
click_button submit_release_button
expect(page).not_to have_content success_submit_message
end
def dummy_signature_legal_text
'Some signature legal language'
end
end

View File

@@ -168,6 +168,13 @@ feature "User managing medical releases" do
expect(page).to have_content(successful_submission_message)
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_medical_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in as account manager" do
@@ -175,6 +182,18 @@ feature "User managing medical releases" do
sign_in current_user
end
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
create(:medical_release_with_contract_template, :native, project: project)
visit project_medical_releases_path(project)
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
create(:medical_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
visit project_medical_releases_path(project)
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
end
scenario "Download All is visible" do
create(:medical_release_with_contract_template, :native, project: project)
create(:medical_release_with_contract_template, :non_native, project: project)
@@ -193,6 +212,15 @@ feature "User managing medical releases" do
expect(page).to have_link("Download", exact: true, count: 2)
end
scenario "Review action in Manage menu is visible" do
create(:medical_release_with_contract_template, :native, project: project)
create(:medical_release_with_contract_template, :non_native, project: project)
visit project_medical_releases_path(project)
expect(page).to have_link(review_action, exact: true)
end
scenario "Downloading PDF of native medical release is possible" do
native_release = create(:medical_release_with_contract_template, :native, project: project)
@@ -201,6 +229,64 @@ feature "User managing medical releases" do
click_link *view_release_pdf_link_for(native_release)
expect(content_type).to eq('application/pdf')
end
scenario "Reviewing release" do
create(:medical_release_with_contract_template, :native, project: project)
visit project_medical_releases_path(project)
click_link review_action
expect(page).to have_content review_page_heading
expect(page).to have_content approve_button
end
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
medical_release = create(:medical_release_with_contract_template,
:native,
project: project,
person_first_name: 'Jane',
person_last_name: 'Doe',
approved_by_user_name: "Big Joe",
approved_by_user_email: "some@email.com",
approved_at: DateTime.now)
sign_in(current_user)
visit project_medical_releases_path(project)
click_link *view_release_pdf_link_for(medical_release)
expect(content_type).to eq('application/pdf')
expect(content_disposition).to include('inline')
expect(pdf_body).to have_content for_office_use_only.upcase
expect(pdf_body).to have_content producer_label
expect(pdf_body).to have_content production_label
expect(pdf_body).to have_content employee_issued_to_label
expect(pdf_body).to have_content issued_by_label
expect(pdf_body).to have_content date_issued
expect(pdf_body).to have_content 'Big Joe'
end
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
medical_release = create(:medical_release_with_contract_template,
:native,
project: project,
person_first_name: 'Jane',
person_last_name: 'Doe')
sign_in(current_user)
visit project_medical_releases_path(project)
click_link *view_release_pdf_link_for(medical_release)
expect(content_type).to eq('application/pdf')
expect(content_disposition).to include('inline')
expect(pdf_body).not_to have_content for_office_use_only.upcase
expect(pdf_body).not_to have_content producer_label
expect(pdf_body).not_to have_content production_label
expect(pdf_body).not_to have_content employee_issued_to_label
expect(pdf_body).not_to have_content issued_by_label
expect(pdf_body).not_to have_content date_issued
expect(pdf_body).not_to have_content 'Big Joe'
end
end
context "when the user is manager(project manager)" do
@@ -228,6 +314,15 @@ feature "User managing medical releases" do
expect(page).to have_link("Download", exact: true, count: 0)
end
scenario "Review action in Manage menu is not visible" do
create(:medical_release_with_contract_template, :native, project: project)
create(:medical_release_with_contract_template, :non_native, project: project)
visit project_medical_releases_path(project)
expect(page).not_to have_link(review_action, exact: true)
end
scenario "Downloading PDF of native medical release is not possible" do
native_release = create(:medical_release_with_contract_template, :native, project: project)
@@ -272,6 +367,15 @@ feature "User managing medical releases" do
expect(page).to have_link("Download", exact: true, count: 0)
end
scenario "Review action in Manage menu is not visible" do
create(:medical_release_with_contract_template, :native, project: project)
create(:medical_release_with_contract_template, :non_native, project: project)
visit project_medical_releases_path(project)
expect(page).not_to have_link(review_action, exact: true)
end
scenario "Downloading PDF of native medical release is not possible" do
native_release = create(:medical_release_with_contract_template, :native, project: project)
@@ -447,4 +551,44 @@ feature "User managing medical releases" do
def answer_field_for_question(number)
"medical_release[question_#{number}_answer]"
end
def dummy_signature_legal_text
'Some signature legal language'
end
def review_action
t 'medical_releases.medical_release.actions.review'
end
def review_page_heading
t 'approvals.new.heading'
end
def approve_button
t 'approvals.new.actions.approve'
end
def for_office_use_only
t 'contracts.for_office_use_only.heading'
end
def producer_label
t 'contracts.for_office_use_only.description_labels.producer'
end
def production_label
t 'contracts.for_office_use_only.description_labels.production'
end
def employee_issued_to_label
t 'contracts.for_office_use_only.description_labels.employee_issued_to'
end
def issued_by_label
t 'contracts.for_office_use_only.description_labels.issued_by'
end
def date_issued
t 'contracts.for_office_use_only.description_labels.date_issued'
end
end

View File

@@ -48,6 +48,13 @@ feature "User managing misc releases" do
expect(field).to be_visible
end
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_misc_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in as account manager" do
@@ -199,4 +206,8 @@ feature "User managing misc releases" do
def person_is_minor_checkbox
'misc_release_minor'
end
def dummy_signature_legal_text
'Some signature legal language'
end
end

View File

@@ -126,6 +126,13 @@ feature "User managing talent releases" do
expect(TalentRelease.last.guardian_2_photo.attached?).to eq true
expect(TalentRelease.last.guardian_2_name).to eq "Second Guardian"
end
scenario "creating a release, if contract template contains signature legal language, it is shown" do
contract_template = create(:contract_template, project: project, signature_legal_text: dummy_signature_legal_text)
visit new_account_project_contract_template_talent_release_path(project.account, project, contract_template)
expect(page).to have_content dummy_signature_legal_text
end
end
context "when signed in" do
@@ -555,4 +562,8 @@ feature "User managing talent releases" do
fill_in guardian_address_state_field, with: "NY"
fill_in guardian_address_zip_field, with: '1000'
end
def dummy_signature_legal_text
'Some signature legal language'
end
end