Upstream sync

This commit is contained in:
Senad Uka
2020-08-20 06:50:51 +02:00
parent 190ff2854b
commit 41bf88e358
127 changed files with 1399 additions and 565 deletions

View File

@@ -87,26 +87,10 @@ RSpec.describe AcquiredMediaReleasesController, type: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(AcquiredMediaRelease.last)
end
it "creates nested file info records" do
expect {
post :create, params: {
project_id: project,
acquired_media_release: acquired_media_release_params.merge(
file_infos_attributes: {
0 => attributes_for(:file_info)
}
)
}
}.to change(FileInfo, :count).by(1)
expect(AcquiredMediaRelease.last.file_infos.size).to eq(1)
end
it "adds files to release" do
post :create, params: { project_id: project, acquired_media_release: acquired_media_release_params.merge(file_params) }
it "logs analytics" do
expect {
post :create, params: { project_id: project, acquired_media_release: acquired_media_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "AcquiredMediaRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
expect(AcquiredMediaRelease.last.files.size).to eq(1)
end
context "when the record would be invalid" do
@@ -206,4 +190,11 @@ RSpec.describe AcquiredMediaReleasesController, type: :controller do
restriction_text: "restrictions",
}
end
def file_params
path = Rails.root.join("spec", "fixtures", "files", "contract.pdf")
contract_file = Rack::Test::UploadedFile.new(path, "application/pdf")
{ files: [contract_file] }
end
end

View File

@@ -117,7 +117,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
end
it "paginates the broadcast list" do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
project = create(:project, account: current_user.primary_account)
create_list(:broadcast, 20, project: project )

View File

@@ -7,7 +7,7 @@ RSpec.describe Admin::BroadcastsController, type: :controller do
before do
sign_in(current_user)
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
describe "#edit" do

View File

@@ -7,7 +7,7 @@ RSpec.describe Api::BroadcastsController, type: :controller do
describe '#index' do
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: 'id', key: 'key', playback_id: 'playback_id'))
stub_mux_live_stream
end
it 'returns a list of all broadcasts ready for streaming in the project' do

View File

@@ -152,14 +152,6 @@ RSpec.describe AppearanceReleasesController, tye: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(AppearanceRelease.last)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, appearance_release: appearance_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "AppearanceRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context "when the record would be invalid" do
before do
allow_any_instance_of(AppearanceRelease).to receive(:save).and_return(false)

View File

@@ -16,7 +16,7 @@ RSpec.describe BroadcastRecordingsController, type: :controller do
let(:recording) { create(:broadcast_recording, broadcast: broadcast) }
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
it "hides the broadcast recording" do

View File

@@ -13,7 +13,7 @@ RSpec.describe BroadcastsController, type: :controller do
describe "#index" do
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
it "responds successfully" do
@@ -79,7 +79,7 @@ RSpec.describe BroadcastsController, type: :controller do
describe "#create" do
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
it "responds with a redirect" do
@@ -108,13 +108,39 @@ RSpec.describe BroadcastsController, type: :controller do
}.not_to change(Broadcast, :count)
end
end
context "when Mux API error occurs" do
it "displays an alert message" do
allow_any_instance_of(Broadcast).to receive(:create_mux_live_stream).and_raise(MuxRuby::ApiError)
expect {
post :create, params: { project_id: project.id, broadcast: broadcast_params }
}.not_to change(Broadcast, :count)
expect(response).to be_redirect
expect(flash.alert).not_to be_nil
end
end
context "when ActiveResource API error occurs" do
it "displays an alert message" do
allow_any_instance_of(Broadcast).to receive(:create_mux_live_stream).and_raise(ActiveResource::ConnectionError.new(""))
expect {
post :create, params: { project_id: project.id, broadcast: broadcast_params }
}.not_to change(Broadcast, :count)
expect(response).to be_redirect
expect(flash.alert).not_to be_nil
end
end
end
describe "#show" do
let(:broadcast) { create(:broadcast, project: project, name: "Another Broadcast") }
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
it "responds successfully" do
@@ -213,6 +239,16 @@ RSpec.describe BroadcastsController, type: :controller do
end
end
end
context 'when video conference url has been overriden' do
let(:broadcast) { create(:broadcast, project: project, video_conference_url_override: 'https://test.com') }
it 'uses the override url for the video conference button' do
get :show, params: { project_id: project, id: broadcast }
expect(response.body).to have_link("Video Conference", href: 'https://test.com')
end
end
end
describe "#update" do

View File

@@ -95,7 +95,7 @@ describe ContractTemplatesController do
describe '#create' do
it 'redirects' do
post :create, params: { project_id: project, contract_template: contract_template_params(valid: true) }
expect(response).to redirect_to(project_contract_templates_path(project))
end
@@ -112,6 +112,14 @@ describe ContractTemplatesController do
end.to change(ContractTemplate, :count).by(1)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, contract_template: contract_template_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(current_user, current_user.primary_account, :track_create_contract_template, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context 'when save fails' do
it 'responds ok' do
post :create, params: { project_id: project, contract_template: contract_template_params(valid: false) }
@@ -120,6 +128,15 @@ describe ContractTemplatesController do
end
end
context 'when exhibit fields are present' do
it 'saves them' do
post :create, params: { project_id: project, contract_template: contract_template_params_with_exhibit_fields }
expect(ContractTemplate.last.has_exhibit_a?).to be_truthy
expect(ContractTemplate.last.has_exhibit_b?).to be_truthy
end
end
context 'when current user is an associate' do
let(:current_user) { create(:user, :associate) }
@@ -214,12 +231,21 @@ describe ContractTemplatesController do
def contract_template_params(valid: true)
if valid
attributes_for(:contract_template).merge(exploitable_rights_params)
attributes_for(:contract_template).merge(exploitable_rights_params).merge({exhibit_a_legal_text: "Legal Text Exhibit A"})
else
attributes_for(:contract_template).except(:name)
end
end
def contract_template_params_with_exhibit_fields
contract_template_params(valid: true).merge({
exhibit_a_legal_text: "Exhibit A legal text",
exhibit_b_legal_text: "Exhibit B legal text",
exhibit_a_question_text: "Exhibit A Question",
exhibit_b_question_text: "Exhibit B Question",
})
end
def exploitable_rights_params
{
applicable_medium_id: ApplicableMedium.last.id,

View File

@@ -1,73 +0,0 @@
require "rails_helper"
RSpec.describe FileInfosController, type: :controller do
render_views
let(:current_user) { create(:user) }
let(:project) { create(:project, account: current_user.accounts.first) }
let(:acquired_media_release) { create(:acquired_media_release, project: project) }
before do
sign_in(current_user)
end
shared_examples "a file infoable releases controller" do
describe "#edit" do
it "responds successfully" do
get :edit, params: { "#{subject.model_name.param_key}_id" => subject }
expect(response).to be_successful
end
end
describe "#update" do
context "when releasable updated successfully" do
it "responds with a redirect" do
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
expect(response).to be_redirect
expect(response).to redirect_to [project, subject.model_name.plural]
expect(flash.notice).to eq(t("file_infos.update.notice"))
end
it "enqueues tagging job" do
expect {
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => {} }
}.to have_enqueued_job(SetTagsForReleasableJob).with(subject.class.last)
end
end
end
context "when releasable NOT updated successfully" do
before do
allow_any_instance_of(subject.class).to receive(:update).and_return(false)
end
it "renders edit with flash message" do
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
expect(controller).to have_rendered(:edit)
end
it "does not enqueue tagging job" do
expect {
patch :update, params: { "#{subject.model_name.param_key}_id": subject, subject.model_name.param_key => release_params }
}.not_to have_enqueued_job(SetTagsForReleasableJob)
end
end
end
context "for acquired media releases" do
subject { create(:acquired_media_release, project: project) }
it_behaves_like "a file infoable releases controller"
end
private
def release_params
files = 2.times.map { Rack::Test::UploadedFile.new(file_fixture("audio.mp3"), "audio/mp3") }
{ file_infos_attributes: files }
end
end

View File

@@ -90,14 +90,6 @@ RSpec.describe LocationReleasesController, type: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(LocationRelease.last)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, location_release: location_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "LocationRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context "when the record would be invalid" do
before do
allow_any_instance_of(LocationRelease).to receive(:save).and_return(false)

View File

@@ -87,14 +87,6 @@ RSpec.describe MaterialReleasesController, type: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(MaterialRelease.last)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, material_release: material_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "MaterialRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context "when the record would be invalid" do
before do
allow_any_instance_of(MaterialRelease).to receive(:save).and_return(false)

View File

@@ -145,14 +145,6 @@ RSpec.describe MusicReleasesController, type: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(MusicRelease.last)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, music_release: music_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "MusicRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context "when the record would be invalid" do
before :each do
allow_any_instance_of(MusicRelease).to receive(:save).and_return(false)

View File

@@ -7,17 +7,6 @@ RSpec.describe Public::AcquiredMediaReleasesController, type: :controller do
render_views
describe "#create" do
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, acquired_media_release: acquired_media_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "AcquiredMediaRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)

View File

@@ -4,96 +4,108 @@ RSpec.describe Public::AmendmentsController, type: :controller do
let(:user) { create(:user) }
let(:account) { user.primary_account }
let(:project) { create(:project, account: account) }
let(:contract_template) { create(:location_release_contract_template, :with_amendment_clause, project: project) }
let(:location_release) { create(:location_release, contract_template: contract_template, project: project) }
render_views
describe "#new" do
it "shows amendment signing form for non-signed amendment of a release" do
expect(location_release.amendment_signed?).to be_falsey
shared_examples "amendments signing controller" do
describe "#new" do
it "shows amendment signing form for non-signed amendment of a release" do
expect(subject.amendment_signed?).to be_falsey
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: location_release
}
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: subject.contract_template,
"#{subject.model_name.param_key}_id": subject
}
expect(response).to be_successful
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
end
it "shows already signed message for signed amendment of a release" do
expect(signed_release.amendment_signed?).to be_truthy
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: signed_release.contract_template,
"#{signed_release.model_name.param_key}_id": signed_release
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
end
end
it "shows already signed message for signed amendment of a release" do
signed_release = create(:location_release, :amendment_signed, contract_template: contract_template, project: project)
describe "#create" do
it "signs amendment" do
expect(subject.amendment_signed?).to be_falsey
expect(signed_release.amendment_signed?).to be_truthy
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: subject.contract_template,
"#{subject.model_name.param_key}_id": subject,
"#{subject.model_name.param_key}": {
amendment_signer_name: "Signer Name",
amendment_signature_base64: signature_base64
}
}
get :new, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: signed_release
}
expect(response).to be_successful
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
expect(body).to match signed_successfully_message
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
expect(subject.class.last.amendment_signed?).to be_truthy
expect(subject.class.last.amendment_signer_name).to eq "Signer Name"
end
it "shows already signed message for signed amendment of a release" do
expect(signed_release.amendment_signed?).to be_truthy
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: signed_release.contract_template,
"#{signed_release.model_name.param_key}_id": signed_release,
"#{signed_release.model_name.param_key}": {
amendment_signer_name: "Signer Who",
amendment_signature_base64: signature_base64
}
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
expect(signed_release.amendment_signed?).to be_truthy
expect(signed_release.amendment_signer_name).to eq "Amendment Signer"
end
end
end
describe "#create" do
it "signs amendment" do
expect(location_release.amendment_signed?).to be_falsey
context "for location release" do
let(:contract_template) { create(:location_release_contract_template, :with_amendment_clause, project: project) }
let(:signed_release) { create(:location_release, :amendment_signed, contract_template: contract_template, project: project) }
subject { create(:location_release, contract_template: contract_template, project: project) }
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: location_release,
location_release: {
amendment_signer_name: "Signer Name",
amendment_signature_base64: signature_base64
}
}
it_behaves_like "amendments signing controller"
end
expect(response).to be_successful
context "for appearance release" do
let(:contract_template) { create(:appearance_release_contract_template, :with_amendment_clause, project: project) }
let(:signed_release) { create(:appearance_release, :amendment_signed, contract_template: contract_template, project: project) }
subject { create(:appearance_release, contract_template: contract_template, project: project) }
body = CGI.unescape_html(response.body)
expect(body).not_to match already_signed_message
expect(body).to match signed_successfully_message
expect(LocationRelease.last.amendment_signed?).to be_truthy
expect(LocationRelease.last.amendment_signer_name).to eq "Signer Name"
end
it "shows already signed message for signed amendment of a release" do
signed_release = create(:location_release, :amendment_signed, name: "Test Loc", amendment_signer_name: "Big Signer", contract_template: contract_template, project: project)
expect(signed_release.amendment_signed?).to be_truthy
post :create, params: {
account_id: account,
project_id: project,
contract_template_id: location_release.contract_template,
location_release_id: signed_release,
location_release: {
amendment_signer_name: "Signer Who",
amendment_signature_base64: signature_base64
}
}
expect(response).to be_successful
body = CGI.unescape_html(response.body)
expect(body).to match already_signed_message
expect(signed_release.amendment_signed?).to be_truthy
expect(signed_release.amendment_signer_name).to eq "Big Signer"
end
it_behaves_like "amendments signing controller"
end
private

View File

@@ -11,22 +11,6 @@ describe Public::AppearanceReleasesController do
end
describe "#create" do
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: {
account_id: project.account.to_param,
project_id: project,
contract_template_id: contract_template,
appearance_release: appearance_release_params
}
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "AppearanceRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)

View File

@@ -8,7 +8,7 @@ RSpec.describe Public::BroadcastsController, type: :controller do
let(:project) { create(:project, account: user.primary_account) }
before do
allow(MuxLiveStream).to receive(:new).and_return(double(id: "id", key: "key", playback_id: "playback_id"))
stub_mux_live_stream
end
describe "#show" do
@@ -81,6 +81,16 @@ RSpec.describe Public::BroadcastsController, type: :controller do
expect(response.body).to have_selector(".dropdown-menu a.dropdown-item", text: recording.download_file_name)
end
end
context 'when video conference url has been overriden' do
let(:broadcast) { create(:broadcast, project: project, video_conference_url_override: 'https://test.com') }
it 'uses the override url for the video conference button' do
get :show, params: { token: broadcast.token }
expect(response.body).to have_link("Video Conference", href: 'https://test.com')
end
end
end
describe "#update" do

View File

@@ -16,17 +16,6 @@ describe Public::LocationReleasesController do
expect(LocationRelease.last.photos.attached?).to eq true
end
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, location_release: location_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "LocationRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)

View File

@@ -16,17 +16,6 @@ describe Public::MaterialReleasesController do
expect(MaterialRelease.last.photos.attached?).to eq true
end
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, material_release: material_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "MaterialRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)

View File

@@ -7,17 +7,6 @@ RSpec.describe Public::MedicalReleasesController, type: :controller do
render_views
describe "#create" do
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, medical_release: medical_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "MedicalRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template,
project: project,

View File

@@ -7,17 +7,6 @@ RSpec.describe Public::TalentReleasesController, type: :controller do
render_views
describe "#create" do
it "logs analytics" do
contract_template = create(:contract_template, project: project)
expect {
post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, talent_release: talent_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob)
.with(nil, nil, :track_create_native_release, release_type: "TalentRelease", account: project.account, user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
it "displays validation errors" do
contract_template = create(:contract_template, project: project)
sign_in(user)

View File

@@ -13,7 +13,7 @@ RSpec.describe Public::ZoomMeetingsController, type: :controller do
allow_any_instance_of(ZoomGateway).to receive(:find_meeting).and_return(meeting_hash)
allow_any_instance_of(ZoomGateway).to receive(:create_meeting).and_return("meeting_id")
allow_any_instance_of(ZoomGateway).to receive(:create_host).and_return("host_id")
allow(MuxLiveStream).to receive(:new).and_return OpenStruct.new(id: 'id', key: 'key', playback_id: 'playback_id')
stub_mux_live_stream
end
describe "#show" do

View File

@@ -110,14 +110,6 @@ RSpec.describe TalentReleasesController, type: :controller do
}.to have_enqueued_job(SetTagsForReleasableJob).with(TalentRelease.last)
end
it "logs analytics" do
expect {
post :create, params: { project_id: project, talent_release: talent_release_params }
}.to(
have_enqueued_job(TrackAnalyticsJob).with(user, account, :track_create_non_native_release, release_type: "TalentRelease", user_agent: "Rails Testing", user_ip: "0.0.0.0")
)
end
context "when the record would be invalid" do
before do
allow_any_instance_of(TalentRelease).to receive(:save).and_return(false)

View File

@@ -16,7 +16,7 @@ RSpec.describe ZoomMeetingsController, type: :controller do
allow_any_instance_of(ZoomGateway).to receive(:find_meeting).and_return(meeting_hash)
allow_any_instance_of(ZoomGateway).to receive(:create_meeting).and_return("meeting_id")
allow_any_instance_of(ZoomGateway).to receive(:create_host).and_return("host_id")
allow(MuxLiveStream).to receive(:new).and_return OpenStruct.new(id: 'id', key: 'key', playback_id: 'playback_id')
stub_mux_live_stream
end
describe "#show" do