Upstream sync
This commit is contained in:
@@ -1,97 +1,138 @@
|
||||
require "rails_helper"
|
||||
# frozen_string_literal: true
|
||||
|
||||
feature "User managing broadcasts" do
|
||||
require 'rails_helper'
|
||||
|
||||
feature 'User managing broadcasts' do
|
||||
let(:current_user) { create(:user, :manager) }
|
||||
let(:project) { create(:project, members: current_user, account: current_user.primary_account) }
|
||||
|
||||
context "managing broadcasts" do
|
||||
context 'managing broadcasts' do
|
||||
before do
|
||||
sign_in current_user
|
||||
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
|
||||
allow(MuxLiveStream).to receive(:new).and_return(double(id: 'id', key: 'key', playback_id: 'playback_id'))
|
||||
end
|
||||
|
||||
scenario "creating and deleting a broadcast", js: true do
|
||||
scenario 'creating and deleting a broadcast', js: true do
|
||||
visit new_project_broadcast_path(project)
|
||||
|
||||
by "filling out the form" do
|
||||
fill_in broadcast_name_field, with: "My Broadcast"
|
||||
by 'filling out the form' do
|
||||
fill_in broadcast_name_field, with: 'My Broadcast'
|
||||
end
|
||||
|
||||
click_button "Create Live Stream"
|
||||
expect(page).to have_content("A live stream has been created")
|
||||
click_on "Manage"
|
||||
expect(page).to have_link("Copy Stream URL", exact: true)
|
||||
expect(page).to have_link("Copy Stream Key", exact: true)
|
||||
expect(page).to have_link("View", exact: true)
|
||||
expect(page).to have_link("Delete", exact: true)
|
||||
click_button 'Create Live Stream'
|
||||
expect(page).to have_content('A live stream has been created')
|
||||
click_on 'Manage'
|
||||
expect(page).to have_link('Copy Stream URL', exact: true)
|
||||
expect(page).to have_link('Copy Stream Key', exact: true)
|
||||
expect(page).to have_link('View', exact: true)
|
||||
expect(page).to have_link('Delete', exact: true)
|
||||
|
||||
it_also "Deletes the broadcast" do
|
||||
it_also 'Deletes the broadcast' do
|
||||
allow_any_instance_of(Broadcast).to receive(:destroy_mux_live_stream).and_return(true)
|
||||
|
||||
accept_alert do
|
||||
click_link "Delete"
|
||||
click_link 'Delete'
|
||||
end
|
||||
|
||||
expect(page).to have_content("A live stream has been deleted")
|
||||
expect(page).not_to have_content("My Broadcast")
|
||||
|
||||
expect(page).to have_content('A live stream has been deleted')
|
||||
expect(page).not_to have_content('My Broadcast')
|
||||
end
|
||||
end
|
||||
|
||||
scenario "visit show page of broadcast", js: true do
|
||||
scenario 'visit show page of broadcast', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content("Live stream is waiting to begin.")
|
||||
expect(page).to have_content("Copy URL")
|
||||
expect(page).to have_content('Live stream is waiting to begin.')
|
||||
expect(page).to have_content('Copy URL')
|
||||
|
||||
within "#files" do
|
||||
expect(page).to have_content("contract.pdf")
|
||||
within '#files' do
|
||||
expect(page).to have_content('contract.pdf')
|
||||
end
|
||||
|
||||
click_on "Previous Sessions"
|
||||
click_on 'Previous Sessions'
|
||||
expect(page).to have_content(recording.download_file_name)
|
||||
end
|
||||
|
||||
scenario "form will not submit if user clicks Add files without selected files", js: true do
|
||||
scenario 'user can go back and forth between live session and previous sessions', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content broadcast.name.titleize, count: 1
|
||||
expect(page).to have_content recording.download_file_name, count: 0
|
||||
|
||||
click_on switch_view_dropdown
|
||||
expect(page).to have_content broadcast.name.titleize, count: 2
|
||||
expect(page).to have_content recording.download_file_name, count: 1
|
||||
|
||||
live_stream_nav_item = page.find('.dropdown-item', text: broadcast.name.titleize)
|
||||
recording_nav_item = page.find('.dropdown-item', text: recording.download_file_name)
|
||||
|
||||
expect(live_stream_nav_item[:class].include?('active')).to eq true
|
||||
expect(recording_nav_item[:class].include?('active')).to eq false
|
||||
|
||||
click_on recording.download_file_name
|
||||
|
||||
expect(page).to have_content broadcast.name.titleize, count: 1
|
||||
expect(page).to have_content recording.download_file_name, count: 0
|
||||
expect(live_stream_nav_item[:class].include?('active')).to eq false
|
||||
expect(recording_nav_item[:class].include?('active')).to eq true
|
||||
|
||||
click_on switch_view_dropdown
|
||||
click_on broadcast.name.titleize
|
||||
|
||||
expect(page).to have_content broadcast.name.titleize, count: 1
|
||||
expect(page).to have_content recording.download_file_name, count: 0
|
||||
|
||||
# Page is reloaded, we need to get dropdown items again
|
||||
live_stream_nav_item = page.find('.dropdown-item', text: broadcast.name.titleize, visible: :all)
|
||||
recording_nav_item = page.find('.dropdown-item', text: recording.download_file_name, visible: :all)
|
||||
|
||||
expect(live_stream_nav_item[:class].include?('active')).to eq true
|
||||
expect(recording_nav_item[:class].include?('active')).to eq false
|
||||
end
|
||||
|
||||
scenario 'form will not submit if user clicks Add files without selected files', js: true do
|
||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||
|
||||
visit project_broadcast_path(project, broadcast)
|
||||
|
||||
expect(page).to have_content("Live stream is waiting to begin.")
|
||||
expect(page).to have_content('Live stream is waiting to begin.')
|
||||
expect(page).to have_content add_file_button
|
||||
|
||||
click_on add_file_button
|
||||
end
|
||||
|
||||
scenario "visit multi-view broadcast page", js: true do
|
||||
broadcast_one = create(:broadcast, :with_stream, :with_files, name: "Broadcast 1", project: project)
|
||||
broadcast_two = create(:broadcast, :with_stream, :with_files, name: "Broadcast 2", project: project)
|
||||
|
||||
scenario 'visit multi-view broadcast page', js: true do
|
||||
broadcast_one = create(:broadcast, :with_stream, :with_files, name: 'Broadcast 1', project: project)
|
||||
broadcast_two = create(:broadcast, :with_stream, :with_files, name: 'Broadcast 2', project: project)
|
||||
|
||||
visit project_broadcasts_path(project)
|
||||
click_checkboxes
|
||||
|
||||
new_window = window_opened_by { click_link "Multi-View" }
|
||||
|
||||
new_window = window_opened_by { click_link 'Multi-View' }
|
||||
within_window new_window do
|
||||
expect(page).to have_content("Switch View")
|
||||
expect(page).to have_content switch_view_dropdown
|
||||
|
||||
click_on "Switch View"
|
||||
expect(page).to have_link("Broadcast 1")
|
||||
expect(page).to have_link("Broadcast 2")
|
||||
click_on switch_view_dropdown
|
||||
expect(page).to have_link('Broadcast 1')
|
||||
expect(page).to have_link('Broadcast 2')
|
||||
|
||||
within "#files" do
|
||||
click_on "Broadcast 1"
|
||||
expect(page).to have_content("contract.pdf")
|
||||
within '#files' do
|
||||
click_on 'Broadcast 1'
|
||||
expect(page).to have_content('contract.pdf')
|
||||
|
||||
click_on "Broadcast 2"
|
||||
expect(page).to have_content("contract.pdf")
|
||||
click_on 'Broadcast 2'
|
||||
expect(page).to have_content('contract.pdf')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
def add_file_button
|
||||
@@ -99,11 +140,15 @@ feature "User managing broadcasts" do
|
||||
end
|
||||
|
||||
def broadcast_name_field
|
||||
"broadcast[name]"
|
||||
'broadcast[name]'
|
||||
end
|
||||
|
||||
def click_checkboxes
|
||||
all('input[type="checkbox"]')[0].click
|
||||
all('input[type="checkbox"]')[1].click
|
||||
end
|
||||
|
||||
def switch_view_dropdown
|
||||
'Switch View'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -62,6 +62,47 @@ feature "User managing talent releases" do
|
||||
|
||||
expect(page).to have_content("Your release was successfully submitted. Thank you.")
|
||||
end
|
||||
|
||||
scenario "creating a release for a minor with two guardians", js: true do
|
||||
contract_template = create(:contract_template, project: project)
|
||||
|
||||
visit new_account_project_contract_template_talent_release_path(project.account, project, contract_template)
|
||||
|
||||
expect(page).not_to have_content guardian_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_2_information_heading.upcase
|
||||
expect(page).not_to have_content guardian_photo_heading.upcase
|
||||
expect(page).not_to have_content guardian_2_photo_heading.upcase
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
expect(page).to have_content guardian_information_heading.upcase
|
||||
expect(page).to have_content guardian_2_information_heading.upcase
|
||||
expect(page).to have_content guardian_photo_heading.upcase
|
||||
expect(page).to have_content guardian_2_photo_heading.upcase
|
||||
|
||||
fill_in person_first_name_field, with: "Jane"
|
||||
fill_in person_last_name_field, with: "Doe"
|
||||
fill_in person_address_field, with: "123 Test Lane, New York, NY 10000"
|
||||
fill_in person_phone_field, with: "555-555-5555"
|
||||
fill_in person_email_field, with: "jane.doe@test.com"
|
||||
|
||||
fill_in guardian_first_name_field, with: "Guardian"
|
||||
fill_in guardian_last_name_field, with: "Name"
|
||||
fill_in guardian_phone_field, with: "001101"
|
||||
|
||||
fill_in guardian_2_first_name_field, with: "Second"
|
||||
fill_in guardian_2_last_name_field, with: "Guardian"
|
||||
|
||||
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
|
||||
attach_file guardian_photo_field, file_fixture("hemsworth.jpeg"), visible: :all
|
||||
attach_file guardian_2_photo_field, file_fixture("person_photo.png"), visible: :all
|
||||
draw_signature file_fixture("signature.png"), "talent_release_signature_base64"
|
||||
|
||||
click_button submit_button
|
||||
|
||||
expect(page).to have_content success_submit_message
|
||||
expect(TalentRelease.last.guardian_2_photo.attached?).to eq true
|
||||
expect(TalentRelease.last.guardian_2_name).to eq "Second Guardian"
|
||||
end
|
||||
end
|
||||
|
||||
context "when signed in" do
|
||||
@@ -125,6 +166,43 @@ feature "User managing talent releases" do
|
||||
expect(page).to have_photo("person_photo.png")
|
||||
end
|
||||
|
||||
scenario "creating a release for minor with two guardians", js: true do
|
||||
visit new_project_talent_release_path(project)
|
||||
|
||||
expect(page).not_to have_content guardian_photo_heading
|
||||
expect(page).not_to have_content guardian_2_photo_heading
|
||||
|
||||
page.check person_is_minor_checkbox
|
||||
|
||||
expect(page).to have_content guardian_photo_heading
|
||||
expect(page).to have_content guardian_2_photo_heading
|
||||
|
||||
fill_in person_first_name_field, with: "John"
|
||||
fill_in person_last_name_field, with: "Doe"
|
||||
|
||||
fill_in guardian_first_name_field, with: "Guardian"
|
||||
fill_in guardian_last_name_field, with: "Name"
|
||||
fill_in guardian_phone_field, with: "01010"
|
||||
|
||||
fill_in guardian_2_first_name_field, with: "Second"
|
||||
fill_in guardian_2_last_name_field, with: "Guardian"
|
||||
|
||||
fill_in_exploitable_rights
|
||||
|
||||
attach_file contract_field, Rails.root.join(file_fixture("contract.pdf")), visible: false
|
||||
drop_file Rails.root.join(file_fixture("person_photo.png")), type: :dropzone
|
||||
attach_file guardian_photo_field, Rails.root.join(file_fixture("hemsworth.jpeg")), visible: false
|
||||
attach_file guardian_2_photo_field, Rails.root.join(file_fixture("pratt.jpg")), visible: false
|
||||
|
||||
click_button create_release_button
|
||||
|
||||
expect(page).to have_content create_release_notice
|
||||
expect(page).to have_photo("person_photo.png")
|
||||
|
||||
expect(TalentRelease.last.guardian_2_photo.attached?).to eq true
|
||||
expect(TalentRelease.last.guardian_2_name).to eq "Second Guardian"
|
||||
end
|
||||
|
||||
scenario "updating an existing release" do
|
||||
talent_release = create(:talent_release, project: project)
|
||||
|
||||
@@ -301,6 +379,14 @@ feature "User managing talent releases" do
|
||||
"Guardian last name"
|
||||
end
|
||||
|
||||
def guardian_2_first_name_field
|
||||
"talent_release[guardian_2_first_name]"
|
||||
end
|
||||
|
||||
def guardian_2_last_name_field
|
||||
"talent_release[guardian_2_last_name]"
|
||||
end
|
||||
|
||||
def guardian_phone_field
|
||||
"Guardian phone"
|
||||
end
|
||||
@@ -309,6 +395,10 @@ feature "User managing talent releases" do
|
||||
"talent_release[guardian_photo]"
|
||||
end
|
||||
|
||||
def guardian_2_photo_field
|
||||
"talent_release[guardian_2_photo]"
|
||||
end
|
||||
|
||||
def have_photo_button
|
||||
have_selector(".take-photo-button")
|
||||
end
|
||||
@@ -387,4 +477,32 @@ feature "User managing talent releases" do
|
||||
select "Other", from: "Restriction"
|
||||
fill_in "Describe other restrictions", with: "Test"
|
||||
end
|
||||
|
||||
def guardian_information_heading
|
||||
t 'public.talent_releases.new.guardian_info.heading'
|
||||
end
|
||||
|
||||
def guardian_2_information_heading
|
||||
t 'public.talent_releases.new.guardian_2_info.heading'
|
||||
end
|
||||
|
||||
def guardian_photo_heading
|
||||
t 'public.talent_releases.new.guardian_photo.heading'
|
||||
end
|
||||
|
||||
def guardian_2_photo_heading
|
||||
t 'public.talent_releases.new.guardian_2_photo.heading'
|
||||
end
|
||||
|
||||
def submit_button
|
||||
t 'shared.submit_release_long'
|
||||
end
|
||||
|
||||
def success_submit_message
|
||||
"Your release was successfully submitted. Thank you."
|
||||
end
|
||||
|
||||
def contract_field
|
||||
"talent_release[contract]"
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user