159 lines
4.2 KiB
Ruby
159 lines
4.2 KiB
Ruby
require "rails_helper"
|
|
|
|
feature "User managing videos" do
|
|
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,
|
|
:with_audio_only_edl_file,
|
|
project: project,
|
|
name: "Star Wars",
|
|
number: "1",
|
|
video_editing_system: "adobe_premiere",)
|
|
end
|
|
|
|
before :each 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"
|
|
|
|
expect(page).to have_content "Upload Video"
|
|
expect(page).to have_link("Avid")
|
|
expect(page).to have_link("Adobe Premiere")
|
|
|
|
click_link "Adobe Premiere"
|
|
|
|
expect(page).to have_content "Upload Video"
|
|
expect(page).to have_selector "#video_file", visible: :all
|
|
expect(page).to have_selector "#video_edl_file", visible: :all
|
|
expect(page).to have_selector "#video_graphics_only_edl_file", visible: :all
|
|
expect(page).to have_selector "#video_audio_only_edl_file", visible: :all
|
|
expect(page).to have_link "click here", href: /mailto:info@mesuite\.ai/
|
|
|
|
fill_in_video_fields name: "New name", number: "99"
|
|
|
|
# TODO: Figure out how to test video gets created and shows up in project page
|
|
end
|
|
|
|
scenario "editing a video", js: true do
|
|
create(:video,
|
|
:with_graphics_only_edl_file,
|
|
:with_audio_only_edl_file,
|
|
project: project,
|
|
name: "Star Wars",
|
|
number: "1",
|
|
video_editing_system: "adobe_premiere",)
|
|
video_data = {
|
|
name: "Star Wars",
|
|
number: "1",
|
|
}
|
|
|
|
visit project_videos_path(project)
|
|
all('a', :text => /Edit/)[1].click
|
|
|
|
within "#current-edl-file" do
|
|
expect(page).to have_content("sample-edl.edl")
|
|
end
|
|
|
|
within "#current-graphics-only-edl-file" do
|
|
expect(page).to have_content("sample-edl.edl")
|
|
end
|
|
|
|
within "#current-audio-only-edl-file" do
|
|
expect(page).to have_content("sample-edl.edl")
|
|
end
|
|
|
|
expect(page).to have_filled_in_data(video_data)
|
|
|
|
fill_in_video_fields name: "New name", number: "99"
|
|
|
|
accept_alert do
|
|
click_button "Save Changes"
|
|
end
|
|
|
|
expect(page).to have_content(update_video_notice)
|
|
end
|
|
|
|
scenario "searching for a video", js: true do
|
|
create(:video, project: project, name: "First Video")
|
|
create(:video, project: project, name: "Second Video")
|
|
|
|
visit project_videos_path(project)
|
|
|
|
fill_in "query", with: "First"
|
|
click_on "search-button"
|
|
|
|
expect(page).to have_content("First Video")
|
|
expect(page).not_to have_content("Second Video")
|
|
|
|
fill_in "query", with: "Second"
|
|
click_on "search-button"
|
|
expect(page).not_to have_content("First Video")
|
|
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)
|
|
fill_in "video[name]", with: data[:name]
|
|
fill_in "video[number]", with: data[:number]
|
|
end
|
|
|
|
def have_filled_in_data(data)
|
|
have_selector("#video_name[value='#{data[:name]}']")
|
|
have_selector("#video_number[value='#{data[:number]}']")
|
|
end
|
|
|
|
def create_video_notice
|
|
t "videos.update.notice"
|
|
end
|
|
|
|
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
|