diff --git a/app/controllers/admin/casting_call_interviews_controller.rb b/app/controllers/admin/casting_call_interviews_controller.rb deleted file mode 100644 index 9ad520a..0000000 --- a/app/controllers/admin/casting_call_interviews_controller.rb +++ /dev/null @@ -1,65 +0,0 @@ -class Admin::CastingCallInterviewsController < Admin::ApplicationController - before_action :set_casting_call_interview, only: [:edit, :update, :show, :complete] - before_action :build_casting_call_interview, only: [:new, :create] - before_action :set_accounts, only: %i[new create edit] - - def index - @casting_call_interviews = casting_call_interviews.order_by_recent.paginate(page: params[:page]) - end - - def create - @casting_call_interview.attributes = casting_call_interview_params - - if @casting_call_interview.save - redirect_to [:admin, :casting_call_interviews], notice: t(".notice") - else - render :new - end - end - - def update - if @casting_call_interview.update(casting_call_interview_params) - redirect_to [:admin, :casting_call_interviews], notice: t(".notice") - else - render :edit - end - end - - def complete - if @casting_call_interview.update(interviewed_at: Time.zone.now) - redirect_to [:admin, :casting_call_interviews], notice: t(".notice") - else - redirect_to [:admin, :casting_call_interviews], notice: t(".alert") - end - end - - private - - def set_accounts - @accounts = accounts - end - - def casting_call_interview_params - params.require(:casting_call_interview).permit(:casting_call_id, - :performer_name, - :interview_date, - :zoom_meeting_url, - :interview_recording) - end - - def casting_call_interviews - policy_scope CastingCallInterview - end - - def set_casting_call_interview - @casting_call_interview = authorize policy_scope(CastingCallInterview).find(params[:id]) - end - - def accounts - policy_scope Account - end - - def build_casting_call_interview - @casting_call_interview = authorize policy_scope(CastingCallInterview).build - end -end \ No newline at end of file diff --git a/app/controllers/admin/casting_submissions_controller.rb b/app/controllers/admin/casting_submissions_controller.rb index f8cf5d1..e2f1e62 100644 --- a/app/controllers/admin/casting_submissions_controller.rb +++ b/app/controllers/admin/casting_submissions_controller.rb @@ -40,7 +40,7 @@ class Admin::CastingSubmissionsController < Admin::ApplicationController end def casting_submission_params - params.require(:casting_submission).permit(:casting_call_id, :performer_name, :interview_date, :zoom_meeting_url) + params.require(:casting_submission).permit(:casting_call_id, :performer_name, :interview_date, :zoom_meeting_url, :interview_recording) end def casting_submissions diff --git a/app/views/admin/casting_submissions/_form.html.erb b/app/views/admin/casting_submissions/_form.html.erb index a4fd63b..1d04c20 100644 --- a/app/views/admin/casting_submissions/_form.html.erb +++ b/app/views/admin/casting_submissions/_form.html.erb @@ -6,13 +6,13 @@ <%= form.text_field :interview_date, class: "datepicker-control" %> <%= form.text_field :zoom_meeting_url %> - <% unless casting_call_interview.new_record? %> + <% unless casting_submission.new_record? %> <%= form.file_field :interview_recording, accept: "video/*", data: { direct_upload_url: rails_direct_uploads_url, aws_bucket: ENV['AWS_BUCKET'], aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], signer_url: multipart_signatures_url } %> - <% if casting_call_interview.interview_recording.attached? %> + <% if casting_submission.interview_recording.attached? %>
- <%= link_to casting_call_interview.interview_recording do %> - <%= fa_icon "file-text-o" %> <%= casting_call_interview.interview_recording.filename %> + <%= link_to casting_submission.interview_recording do %> + <%= fa_icon "file-text-o" %> <%= casting_submission.interview_recording.filename %> <% end %> <%= fa_icon "long-arrow-left" %> Current interview recording
diff --git a/db/structure.sql b/db/structure.sql index c0259b4..d324cbe 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -317,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, @@ -728,15 +728,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: - -- @@ -1478,6 +1469,7 @@ CREATE TABLE public.settings ( -- CREATE SEQUENCE public.settings_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1513,6 +1505,7 @@ CREATE TABLE public.taggings ( -- CREATE SEQUENCE public.taggings_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1543,6 +1536,7 @@ CREATE TABLE public.tags ( -- CREATE SEQUENCE public.tags_id_seq + AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE @@ -1903,9 +1897,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 ); @@ -2412,14 +2406,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: - -- diff --git a/spec/features/admin_managing_casting_call_interviews_spec.rb b/spec/features/admin_managing_casting_call_interviews_spec.rb deleted file mode 100644 index 1fcc9cb..0000000 --- a/spec/features/admin_managing_casting_call_interviews_spec.rb +++ /dev/null @@ -1,130 +0,0 @@ -require "rails_helper" - -feature "Admin managing casting call interviews" do - let(:current_user) { create(:user, admin: true, email: "user@test.com") } - let(:project) { create(:project, account: current_user.primary_account, name: "Test Project") } - - before do - sign_in current_user - end - - scenario "admin cannot create casting call interview with invalid zoom url", js: true do - visit admin_casting_call_interviews_path - cc = create(:casting_call, title: "SpecialCastingCall") - - click_link create_casting_call_interview_button - expect(page).to have_content new_casting_call_interview_heading - - fill_in performer_name_field, with: "TestName" - select cc.title, from: casting_call_field - fill_in zoom_meeting_url_field, with: "malformed url" - - expect do - click_on submit_casting_call_interview_form - end.to change(CastingCallInterview, :count).by(0) - expect(page).to have_content zoom_meeting_url_invalid_error - - fill_in zoom_meeting_url_field, with: "https://similar.google.com/j/24324324?pwd=334kni3j4" - - expect do - click_on submit_casting_call_interview_form - end.to change(CastingCallInterview, :count).by(0) - expect(page).to have_content zoom_meeting_url_invalid_error - - fill_in zoom_meeting_url_field, with: "https://s01.zoom.us/j/343434?pwd=dawidj34ijij" - - expect do - click_on submit_casting_call_interview_form - end.to change(CastingCallInterview, :count).by(1) - expect(page).to have_content create_casting_call_interview_button - end - - scenario "when creating new casting call interview - interview recording field is not visible" do - visit admin_casting_call_interviews_path - - click_on create_casting_call_interview_button - - expect(page).to have_content new_casting_call_interview_heading - expect(page).not_to have_field interview_recording_field - end - - scenario "admin can upload interview recording video when editing casting call interview" do - cc = create(:casting_call) - cci = create(:casting_call_interview, casting_call: cc) - - expect(CastingCallInterview.last.interview_recording).not_to be_attached - - visit edit_admin_casting_call_interview_path(cci) - - expect(page).to have_content edit_casting_call_interview_heading - expect(page).to have_field interview_recording_field - expect(page).not_to have_content current_interview_recording_label - attach_file interview_recording_field, Rails.root.join(file_fixture('video_file.mp4')) - click_on update_casting_call_interview_button - expect(page).to have_content casting_call_updated_message - expect(CastingCallInterview.last.interview_recording).to be_attached - end - - scenario "when editing casting call interview with already uploaded interview video, interview recording file name link is shown below file field" do - cc = create(:casting_call) - cci = create(:casting_call_interview, :with_interview_recording, casting_call: cc) - - expect(CastingCallInterview.last.interview_recording).to be_attached - - visit edit_admin_casting_call_interview_path(cci) - - expect(page).to have_content edit_casting_call_interview_heading - expect(page).to have_content current_interview_recording_label - expect(page).to have_link CastingCallInterview.last.interview_recording.attachment.blob.filename.to_s - end - - private - - def create_casting_call_interview_button - t 'admin.casting_call_interviews.index.actions.new' - end - - def new_casting_call_interview_heading - t 'admin.casting_call_interviews.new.heading' - end - - def submit_casting_call_interview_form - t 'helpers.submit.casting_call_interview.create' - end - - def zoom_meeting_url_invalid_error - t 'casting_call_interviews.validation_errors.invalid_meeting_url' - end - - def performer_name_field - 'casting_call_interview[performer_name]' - end - - def zoom_meeting_url_field - 'casting_call_interview[zoom_meeting_url]' - end - - def casting_call_field - 'casting_call_interview[casting_call_id]' - end - - def update_casting_call_interview_button - 'Update Casting call interview' - end - - def edit_casting_call_interview_heading - 'Edit Casting Call Interview' - end - - def interview_recording_field - 'casting_call_interview[interview_recording]' - end - - def current_interview_recording_label - 'Current interview recording' - end - - def casting_call_updated_message - t 'admin.casting_call_interviews.update.notice' - end -end diff --git a/spec/features/admin_managing_casting_submissions_spec.rb b/spec/features/admin_managing_casting_submissions_spec.rb index 5e963b0..a108328 100644 --- a/spec/features/admin_managing_casting_submissions_spec.rb +++ b/spec/features/admin_managing_casting_submissions_spec.rb @@ -39,6 +39,45 @@ feature "Admin managing casting submissions" do expect(page).to have_content create_casting_submission_button end + scenario "when creating new casting call interview - interview recording field is not visible" do + visit admin_casting_submissions_path + + click_on create_casting_submission_button + + expect(page).to have_content new_casting_submission_heading + expect(page).not_to have_field interview_recording_field + end + + scenario "admin can upload interview recording video when editing casting call interview" do + cc = create(:casting_call) + cci = create(:casting_submission, casting_call: cc) + + expect(CastingSubmission.last.interview_recording).not_to be_attached + + visit edit_admin_casting_submission_path(cci) + + expect(page).to have_content edit_casting_submission_heading + expect(page).to have_field interview_recording_field + expect(page).not_to have_content current_interview_recording_label + attach_file interview_recording_field, Rails.root.join(file_fixture('video_file.mp4')) + click_on update_casting_submission_button + expect(page).to have_content casting_submission_updated_message + expect(CastingSubmission.last.interview_recording).to be_attached + end + + scenario "when editing casting call interview with already uploaded interview video, interview recording file name link is shown below file field" do + cc = create(:casting_call) + cci = create(:casting_submission, :with_interview_recording, casting_call: cc) + + expect(CastingSubmission.last.interview_recording).to be_attached + + visit edit_admin_casting_submission_path(cci) + + expect(page).to have_content edit_casting_submission_heading + expect(page).to have_content current_interview_recording_label + expect(page).to have_link CastingSubmission.last.interview_recording.attachment.blob.filename.to_s + end + private def create_casting_submission_button @@ -49,6 +88,14 @@ feature "Admin managing casting submissions" do t 'admin.casting_submissions.new.heading' end + def edit_casting_submission_heading + 'Edit Casting Submission' + end + + def update_casting_submission_button + 'Update Casting submission' + end + def submit_casting_submission_form t 'helpers.submit.casting_submission.create' end @@ -68,4 +115,16 @@ feature "Admin managing casting submissions" do def casting_call_field 'casting_submission[casting_call_id]' end + + def casting_submission_updated_message + t 'admin.casting_submissions.update.notice' + end + + def interview_recording_field + 'casting_submission[interview_recording]' + end + + def current_interview_recording_label + 'Current interview recording' + end end