<%= form.number_field :fee, min:"0", max:"99999999", step: "0.01", prepend: "$", wrapper_class: "col-sm-6" %>
diff --git a/app/views/contract_templates/splash.html.erb b/app/views/contract_templates/splash.html.erb
new file mode 100644
index 0000000..f2ef542
--- /dev/null
+++ b/app/views/contract_templates/splash.html.erb
@@ -0,0 +1,58 @@
+
\ No newline at end of file
diff --git a/app/views/contracts/_medical_questionnaire.html.erb b/app/views/contracts/_questionnaire.html.erb
similarity index 57%
rename from app/views/contracts/_medical_questionnaire.html.erb
rename to app/views/contracts/_questionnaire.html.erb
index e6e20c8..665cc18 100644
--- a/app/views/contracts/_medical_questionnaire.html.erb
+++ b/app/views/contracts/_questionnaire.html.erb
@@ -1,8 +1,8 @@
-
-<% (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? %>
<% end %>
-<% end %>
\ No newline at end of file
+<% end %>
diff --git a/app/views/contracts/pdf.html.erb b/app/views/contracts/pdf.html.erb
index 142d51e..b430b4e 100644
--- a/app/views/contracts/pdf.html.erb
+++ b/app/views/contracts/pdf.html.erb
@@ -16,9 +16,9 @@
<%= contract_template.guardian_clause %>
<% end %>
-<% if releasable.model_name == "MedicalRelease" %>
+<% if releasable.model_name.in? %w(MedicalRelease MiscRelease) %>
- <%= render "contracts/medical_questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
+ <%= render "contracts/questionnaire", releasable: releasable, contract_template: contract_template, preview: preview %>
<% end %>
diff --git a/app/views/public/misc_releases/new.html.erb b/app/views/public/misc_releases/new.html.erb
index 35672ce..804068d 100644
--- a/app/views/public/misc_releases/new.html.erb
+++ b/app/views/public/misc_releases/new.html.erb
@@ -20,6 +20,19 @@
<% 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? %>
+
+ <%= form.text_area "question_#{n}_answer", wrapper_class: "col-sm-12", label: @contract_template.public_send("question_#{n}_text") %>
+
+ <% end %>
+
<%= card_field_set_tag t(".personal_info.heading") do %>
diff --git a/app/views/task_requests/splash.html.erb b/app/views/task_requests/splash.html.erb
new file mode 100644
index 0000000..98d626f
--- /dev/null
+++ b/app/views/task_requests/splash.html.erb
@@ -0,0 +1,58 @@
+
+
+ <%= product_wordmark :task_me, prefix: t('.headings.welcome'), class: "h2" %>
+
<%= t '.headings.subtitle' %>
+
+
+ <%= 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(TaskRequest).new? %>
+ <%= link_to t(".actions.create_task_request"), [:new, @project, :task_request], class: "btn btn-success border align-self-center h-50 pb-2" %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Video tutorial will be available soon
+ |
+
+
+
+
+
+
+
+
+
+
+
<%= t '.headings.how_it_works' %>
+
+ - <%= t '.list_items.enter_task_request' %>
+ - <%= t '.list_items.state_deadline' %>
+ - <%= t '.list_items.enter_number_of_hours' %>
+ - <%= t '.list_items.virtual_assistant_delivers_task' %>
+
+
+
+
+
+
<%= t '.headings.benefits' %>
+
+ <%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_need_for_full_time_staff'))) %>
+ <%= content_tag(:li, fa_icon("check li", text: t('.list_items.reduces_workload'))) %>
+ <%= content_tag(:li, fa_icon("check li", text: t('.list_items.spend_per_task'))) %>
+
+
+
+
+
+
diff --git a/app/views/videos/splash.html.erb b/app/views/videos/splash.html.erb
new file mode 100644
index 0000000..e620631
--- /dev/null
+++ b/app/views/videos/splash.html.erb
@@ -0,0 +1,59 @@
+
+
+ <%= product_wordmark :deliver_me, prefix: t('.headings.welcome'), class: "h2" %>
+
<%= t '.headings.subtitle' %>
+
+
+ <%= 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 %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+ Video tutorial will be available soon
+ |
+
+
+
+
+
+
+
+
+
+
+
<%= t '.headings.how_it_works' %>
+
+ - <%= t '.list_items.import_video' %>
+ - <%= t '.list_items.import_EDLs' %>
+ - <%= t '.list_items.AI_generates_documents' %>
+ - <%= t '.list_items.download_documents' %>
+
+
+
+
+
+
<%= t '.headings.benefits' %>
+
+ <%= 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'))) %>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index cc28c89..7734d89 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -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}."
@@ -324,11 +361,11 @@ en:
notice: The release has been updated
helpers:
help:
- task_request:
- time_allowed: Minimum of 2 hours, no partial hours allowed
contract_template:
fee: Leave at $0.00 for no-fee
guardian_clause: Leave blank if not required for this contract
+ task_request:
+ time_allowed: Minimum of 2 hours, no partial hours allowed
video:
audio_only_edl_file: If you do not upload an Audio Only EDL, the software will not generate a BiG Music Cue Sheet.
edl_file: Please follow our directions on exporting the All Tracks EDL. Failure to do so could result in inaccurate and incomplete reporting.
@@ -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
@@ -1024,6 +1085,8 @@ en:
instructions: Now, enter your personal information.
photo:
heading: Photos
+ questionnaire:
+ heading: Questionnaire
signature:
heading: Signature
talent_releases:
@@ -1202,6 +1265,23 @@ en:
heading: New Task Request
show:
empty: Attached files will appear here.
+ splash:
+ actions:
+ book_demo: Schedule a Demo
+ create_task_request: Create Task Request
+ headings:
+ benefits: Benefits
+ how_it_works: How It Works
+ subtitle: Pay-by-the-hour, digitally-enabled remote assistants
+ welcome: Welcome to
+ list_items:
+ enter_number_of_hours: Enter the number of hours you want the task worked on
+ enter_task_request: Enter your task request
+ reduces_need_for_full_time_staff: Reduces need to hire full-time staff
+ reduces_workload: Reduces workload for current staff
+ spend_per_task: Spend as little as $60 per task
+ state_deadline: State your deadline
+ virtual_assistant_delivers_task: Virtual assistant delivers task via TaskME portal
task_request:
actions:
manage: Manage
@@ -1273,6 +1353,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:
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 3384431..91e271f 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -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)
@@ -358,8 +394,44 @@ es:
index:
table_headers:
task_request_description: Description (ES)
+ splash:
+ actions:
+ book_demo: Schedule a Demo (ES)
+ create_task_request: Create Task Request
+ headings:
+ benefits: Benefits (ES)
+ how_it_works: How It Works (ES)
+ subtitle: Pay-by-the-hour, digitally-enabled remote assistants (ES)
+ welcome: Welcome to (ES)
+ list_items:
+ enter_number_of_hours: Enter the number of hours you want the task worked on (ES)
+ enter_task_request: Enter your task request (ES)
+ reduces_need_for_full_time_staff: Reduces need to hire full-time staff (ES)
+ reduces_workload: Reduces workload for current staff (ES)
+ spend_per_task: Spend as little as $60 per task (ES)
+ state_deadline: State your deadline (ES)
+ virtual_assistant_delivers_task: Virtual assistant delivers task via TaskME portal (ES)
task_request:
actions:
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)
diff --git a/db/migrate/20200702152130_add_question_answers_to_misc_releases.rb b/db/migrate/20200702152130_add_question_answers_to_misc_releases.rb
new file mode 100644
index 0000000..95ab46c
--- /dev/null
+++ b/db/migrate/20200702152130_add_question_answers_to_misc_releases.rb
@@ -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
diff --git a/db/structure.sql b/db/structure.sql
index c4de3ba..51b4216 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -9,20 +9,6 @@ SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
---
--- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
---
-
-CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
-
-
---
--- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
---
-
-COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
-
-
--
-- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: -
--
@@ -331,8 +317,8 @@ CREATE TABLE public.appearance_releases (
person_last_name character varying,
guardian_first_name character varying,
guardian_last_name character varying,
- guardian_email character varying,
identifier character varying,
+ guardian_email character varying,
person_address_street2 character varying,
person_address_city character varying,
person_address_state character varying,
@@ -666,15 +652,6 @@ CREATE SEQUENCE public.contract_templates_id_seq
ALTER SEQUENCE public.contract_templates_id_seq OWNED BY public.contract_templates.id;
---
--- Name: data_migrations; Type: TABLE; Schema: public; Owner: -
---
-
-CREATE TABLE public.data_migrations (
- version character varying NOT NULL
-);
-
-
--
-- Name: directories; Type: TABLE; Schema: public; Owner: -
--
@@ -1124,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
);
@@ -1401,6 +1393,7 @@ CREATE TABLE public.settings (
--
CREATE SEQUENCE public.settings_id_seq
+ AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -1436,6 +1429,7 @@ CREATE TABLE public.taggings (
--
CREATE SEQUENCE public.taggings_id_seq
+ AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -1466,6 +1460,7 @@ CREATE TABLE public.tags (
--
CREATE SEQUENCE public.tags_id_seq
+ AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
@@ -1826,9 +1821,9 @@ CREATE TABLE public.zoom_meetings (
api_meeting_id character varying,
created_at timestamp(6) without time zone NOT NULL,
updated_at timestamp(6) without time zone NOT NULL,
- status integer DEFAULT 0,
zoom_user_id bigint,
- project_id bigint
+ project_id bigint,
+ status integer DEFAULT 0
);
@@ -2305,14 +2300,6 @@ ALTER TABLE ONLY public.contract_templates
ADD CONSTRAINT contract_templates_pkey PRIMARY KEY (id);
---
--- Name: data_migrations data_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
---
-
-ALTER TABLE ONLY public.data_migrations
- ADD CONSTRAINT data_migrations_pkey PRIMARY KEY (version);
-
-
--
-- Name: directories directories_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
@@ -3914,6 +3901,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20200619085823'),
('20200619134853'),
('20200622180507'),
-('20200625144713');
+('20200625144713'),
+('20200702152130');
diff --git a/spec/controllers/broadcasts_controller_spec.rb b/spec/controllers/broadcasts_controller_spec.rb
index 08b686a..782299d 100644
--- a/spec/controllers/broadcasts_controller_spec.rb
+++ b/spec/controllers/broadcasts_controller_spec.rb
@@ -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
diff --git a/spec/controllers/contract_templates_controller_spec.rb b/spec/controllers/contract_templates_controller_spec.rb
index 87ba377..72c77a4 100644
--- a/spec/controllers/contract_templates_controller_spec.rb
+++ b/spec/controllers/contract_templates_controller_spec.rb
@@ -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
diff --git a/spec/controllers/task_requests_controller_spec.rb b/spec/controllers/task_requests_controller_spec.rb
index 614d814..22df666 100644
--- a/spec/controllers/task_requests_controller_spec.rb
+++ b/spec/controllers/task_requests_controller_spec.rb
@@ -18,7 +18,14 @@ RSpec.describe TaskRequestsController, type: :controller do
expect(response).to be_successful
end
- it "renders content" do
+ it "renders splash page if there are no task requests" do
+ get :index, params: { project_id: project }
+
+ expect(response.body).to have_link "Create Task Request"
+ expect(response.body).to have_link schedule_demo
+ end
+
+ it "renders task requests table if there are task requests" do
create(:task_request, project: project, description: "Another Request")
get :index, params: { project_id: project }
@@ -126,4 +133,8 @@ RSpec.describe TaskRequestsController, type: :controller do
def update_params
{ description: "This is updated description" }
end
+
+ def schedule_demo
+ t 'task_requests.splash.actions.book_demo'
+ end
end
diff --git a/spec/controllers/videos_controller_spec.rb b/spec/controllers/videos_controller_spec.rb
index 63cf92b..a14a0b7 100644
--- a/spec/controllers/videos_controller_spec.rb
+++ b/spec/controllers/videos_controller_spec.rb
@@ -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
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb
index dcbe930..2f1b77a 100644
--- a/spec/factories/projects.rb
+++ b/spec/factories/projects.rb
@@ -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,
diff --git a/spec/features/user_imports_release_templates_spec.rb b/spec/features/user_imports_release_templates_spec.rb
index f9e0131..f2c5c60 100644
--- a/spec/features/user_imports_release_templates_spec.rb
+++ b/spec/features/user_imports_release_templates_spec.rb
@@ -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"
diff --git a/spec/features/user_manages_contract_templates_spec.rb b/spec/features/user_manages_contract_templates_spec.rb
index 094c8bd..cdba2eb 100644
--- a/spec/features/user_manages_contract_templates_spec.rb
+++ b/spec/features/user_manages_contract_templates_spec.rb
@@ -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
diff --git a/spec/features/user_managing_broadcasts_spec.rb b/spec/features/user_managing_broadcasts_spec.rb
index 318697b..9be98bc 100644
--- a/spec/features/user_managing_broadcasts_spec.rb
+++ b/spec/features/user_managing_broadcasts_spec.rb
@@ -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
diff --git a/spec/features/user_managing_misc_releases_spec.rb b/spec/features/user_managing_misc_releases_spec.rb
index d2ae17e..00e8528 100644
--- a/spec/features/user_managing_misc_releases_spec.rb
+++ b/spec/features/user_managing_misc_releases_spec.rb
@@ -4,6 +4,34 @@ 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
+ end
+
context "when signed in as account manager" do
before do
sign_in current_user
@@ -25,6 +53,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 +126,55 @@ 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
end
diff --git a/spec/features/user_managing_task_requests_spec.rb b/spec/features/user_managing_task_requests_spec.rb
index 80c4f1c..c40cd88 100644
--- a/spec/features/user_managing_task_requests_spec.rb
+++ b/spec/features/user_managing_task_requests_spec.rb
@@ -8,7 +8,14 @@ feature "User managing task requests" do
sign_in current_user
end
+ scenario "splash page is shown if there are no task requests" do
+ visit project_task_requests_path(project)
+
+ expect(page).to have_content schedule_demo
+ end
+
scenario "task requests table is visible" do
+ create(:task_request, project: project, description: 'Short Desc')
visit project_task_requests_path(project)
expect(page).to have_content "Created On"
@@ -19,10 +26,6 @@ feature "User managing task requests" do
end
scenario "sees list of task requests" do
- visit project_task_requests_path(project)
-
- expect(page).to have_content no_task_requests_label
-
task_request = create(:task_request, project: project)
visit project_task_requests_path(project)
@@ -113,4 +116,8 @@ feature "User managing task requests" do
def long_description_text
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
end
+
+ def schedule_demo
+ t 'task_requests.splash.actions.book_demo'
+ end
end
diff --git a/spec/features/user_managing_videos_spec.rb b/spec/features/user_managing_videos_spec.rb
index 9dcdfa4..ca5bec6 100644
--- a/spec/features/user_managing_videos_spec.rb
+++ b/spec/features/user_managing_videos_spec.rb
@@ -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
diff --git a/spec/models/contract_template_spec.rb b/spec/models/contract_template_spec.rb
index 834ac9a..a5553a8 100644
--- a/spec/models/contract_template_spec.rb
+++ b/spec/models/contract_template_spec.rb
@@ -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