Compare commits
10 Commits
add-splash
...
task-me-mv
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
71ad502cc1 | ||
|
|
1cd125382f | ||
|
|
749aad3467 | ||
|
|
c167889ea3 | ||
|
|
3e917c29f0 | ||
|
|
8ad89371b8 | ||
|
|
9d7e2c044a | ||
|
|
88836e937e | ||
|
|
e3d4d22a34 | ||
|
|
3690268f83 |
4
Gemfile
4
Gemfile
@@ -30,9 +30,9 @@ gem "active_storage_base64", "~> 1.0.0"
|
||||
gem "image_processing", "~> 1.2"
|
||||
|
||||
# Use Amazon Web Services S3 for file uploads in production
|
||||
gem "aws-sdk-s3", "~> 1.48", require: false, group: [:production, :review]
|
||||
gem "aws-sdk-s3", "~> 1.31.0", require: false, group: [:production, :review]
|
||||
# Allow AWS API requests to be signed using IAM credentials
|
||||
gem "aws-sigv4", "~> 1.1"
|
||||
gem "aws-sigv4", "~> 1.0.2"
|
||||
|
||||
# Reduces boot times through caching; required in config/boot.rb
|
||||
gem "bootsnap", ">= 1.1.0", require: false
|
||||
|
||||
31
Gemfile.lock
31
Gemfile.lock
@@ -117,22 +117,21 @@ GEM
|
||||
ast (2.4.0)
|
||||
autoprefixer-rails (9.7.3)
|
||||
execjs
|
||||
aws-eventstream (1.1.0)
|
||||
aws-partitions (1.337.0)
|
||||
aws-sdk-core (3.102.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-eventstream (1.0.3)
|
||||
aws-partitions (1.210.0)
|
||||
aws-sdk-core (3.46.2)
|
||||
aws-eventstream (~> 1.0)
|
||||
aws-partitions (~> 1.0)
|
||||
aws-sigv4 (~> 1.0)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.35.0)
|
||||
aws-sdk-core (~> 3, >= 3.99.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.72.0)
|
||||
aws-sdk-core (~> 3, >= 3.102.1)
|
||||
aws-sdk-kms (1.13.0)
|
||||
aws-sdk-core (~> 3, >= 3.39.0)
|
||||
aws-sigv4 (~> 1.0)
|
||||
aws-sdk-s3 (1.31.0)
|
||||
aws-sdk-core (~> 3, >= 3.39.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.2.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-sigv4 (~> 1.0)
|
||||
aws-sigv4 (1.0.3)
|
||||
axlsx (3.0.0.pre)
|
||||
htmlentities (~> 4.3, >= 4.3.4)
|
||||
mimemagic (~> 0.3)
|
||||
@@ -515,8 +514,8 @@ DEPENDENCIES
|
||||
activeresource (= 5.1.0)
|
||||
acts-as-taggable-on!
|
||||
analytics-ruby
|
||||
aws-sdk-s3 (~> 1.48)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (~> 1.31.0)
|
||||
aws-sigv4 (~> 1.0.2)
|
||||
axlsx (~> 3.0.0.pre)
|
||||
axlsx_rails (~> 0.5.2)
|
||||
axlsx_styler (~> 0.2.0)
|
||||
|
||||
@@ -17,7 +17,7 @@ class AccountsController < ApplicationController
|
||||
|
||||
if sign_in(user)
|
||||
TrackAnalyticsJob.perform_later(user, user.primary_account, :track_guest_sign_up, user_agent: request.user_agent, user_ip: request.remote_ip)
|
||||
SubmitHubspotFormJob.perform_later(user.first_name, user.last_name, user.email, account.name, i_m_interested_in: user.interested_product_name)
|
||||
SubmitHubspotFormJob.perform_later(user.email, account.name, i_m_interested_in: user.interested_product_name)
|
||||
redirect_to signed_in_root_path
|
||||
else
|
||||
redirect_to new_session_path, alert: t(".notice")
|
||||
|
||||
@@ -19,11 +19,5 @@ class Api::AppearanceReleasesController < Api::ReleasesController
|
||||
guardian_photo[:io] = StringIO.new(Base64.decode64(guardian_photo[:io]))
|
||||
release.guardian_photo.attach(io: guardian_photo[:io], filename: guardian_photo[:filename])
|
||||
end
|
||||
|
||||
guardian_2_photo = release_create_params[:guardian_2_photo]
|
||||
if guardian_2_photo
|
||||
guardian_2_photo[:io] = StringIO.new(Base64.decode64(guardian_2_photo[:io]))
|
||||
release.guardian_2_photo.attach(io: guardian_2_photo[:io], filename: guardian_2_photo[:filename])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -103,16 +103,10 @@ class Api::ReleasesController < Api::ApiController
|
||||
if ["appearance_release", "talent_release"].include?(name)
|
||||
has_many :guardian_photos do
|
||||
data do
|
||||
[
|
||||
@object.guardian_photo.try(:attachment),
|
||||
@object.guardian_2_photo.try(:attachment)
|
||||
].compact
|
||||
[@object.guardian_photo.try(:attachment)].compact
|
||||
end
|
||||
meta do
|
||||
{ count:
|
||||
(@object.try(:guardian_photo).try(:attached?) ? 1 : 0) +
|
||||
(@object.try(:guardian_2_photo).try(:attached?) ? 1 : 0)
|
||||
}
|
||||
{ count: @object.try(:guardian_photo).try(:attached?) ? 1 : 0 }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -176,7 +170,7 @@ class Api::ReleasesController < Api::ApiController
|
||||
|
||||
def release_create_params
|
||||
parameters = params.require(model_name).permit!
|
||||
keys = model_constant.new.attributes.keys + [:guardian_photo, :guardian_2_photo, :person_photo, :photos, :signature, :signature_base64, :file_infos_attributes]
|
||||
keys = model_constant.new.attributes.keys + [:guardian_photo, :person_photo, :photos, :signature, :signature_base64, :file_infos_attributes]
|
||||
parameters[:signature_base64] = parameters[:signature]
|
||||
parameters = parameters.slice(*keys).except(:created_at, :updated_at, :id, :user_id, :signature)
|
||||
parameters
|
||||
|
||||
@@ -17,11 +17,5 @@ class Api::TalentReleasesController < Api::ReleasesController
|
||||
guardian_photo[:io] = StringIO.new(Base64.decode64(guardian_photo[:io]))
|
||||
release.guardian_photo.attach(io: guardian_photo[:io], filename: guardian_photo[:filename])
|
||||
end
|
||||
|
||||
guardian_2_photo = release_create_params[:guardian_2_photo]
|
||||
if guardian_2_photo
|
||||
guardian_2_photo[:io] = StringIO.new(Base64.decode64(guardian_2_photo[:io]))
|
||||
release.guardian_2_photo.attach(io: guardian_2_photo[:io], filename: guardian_2_photo[:filename])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,7 +5,6 @@ class BroadcastsController < ApplicationController
|
||||
before_action :build_broadcast, only: [:new, :create]
|
||||
before_action :set_broadcast, only: [:show, :destroy, :update]
|
||||
before_action :set_multi_view_broadcasts, only: [:show]
|
||||
before_action :show_splash_screen, only: :index
|
||||
|
||||
def index
|
||||
@broadcasts = filtered_broadcasts.order_by_recent.paginate(page: params[:page])
|
||||
@@ -50,10 +49,6 @@ class BroadcastsController < ApplicationController
|
||||
|
||||
private
|
||||
|
||||
def show_splash_screen
|
||||
render :splash if broadcasts.count.zero?
|
||||
end
|
||||
|
||||
def broadcast_params
|
||||
params.require(:broadcast).permit(:name, files: [])
|
||||
end
|
||||
|
||||
@@ -60,14 +60,9 @@ class StreamNotificationsController < ApplicationController
|
||||
def set_broadcast
|
||||
if notification_type == "video.asset.static_renditions.ready"
|
||||
live_stream_id = notification.dig(:stream_notification, :data, :live_stream_id)
|
||||
@broadcast = Broadcast.find_by(stream_uid: live_stream_id)
|
||||
@broadcast = Broadcast.find_by!(stream_uid: live_stream_id)
|
||||
else
|
||||
@broadcast = Broadcast.find_by(stream_uid: notification_object_id)
|
||||
end
|
||||
|
||||
if @broadcast.nil?
|
||||
logger.info "Ignoring broadcast from other environment. Type = #{notification_type}. Id = #{live_stream_id} / #{notification_object_id}"
|
||||
head :ok
|
||||
@broadcast = Broadcast.find_by!(stream_uid: notification_object_id)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -13,13 +13,10 @@ module WordmarkHelper
|
||||
css += options[:class].to_s
|
||||
|
||||
content_tag(:div, class: css) do
|
||||
elements = [
|
||||
safe_join [
|
||||
content_tag(:span, t("shared.#{product_name}")),
|
||||
content_tag(:span, t("shared.me"))
|
||||
]
|
||||
prefix = options[:prefix]
|
||||
elements.unshift content_tag(:span, "#{prefix} ") unless prefix.blank?
|
||||
safe_join elements
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
class SubmitHubspotFormJob < ApplicationJob
|
||||
queue_as :default
|
||||
|
||||
def perform(first_name, last_name, email, company_name, additional_params = {})
|
||||
def perform(email, company_name, additional_params = {})
|
||||
hubspot_form_guid = ENV["HUBSPOT_FORM_GUID"]
|
||||
return unless hubspot_form_guid.present?
|
||||
|
||||
submission_params = {
|
||||
first_name: first_name,
|
||||
last_name: last_name,
|
||||
email: email,
|
||||
email: email,
|
||||
company: company_name
|
||||
}.merge(additional_params)
|
||||
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
<div class="d-flex flex-row">
|
||||
<div class="d-flex flex-column">
|
||||
<%= product_wordmark :direct_me, prefix: t('.headings.welcome'), class: "h2" %>
|
||||
<p class="text-muted"><%= t '.headings.subtitle' %>
|
||||
</div>
|
||||
|
||||
<%= 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(Broadcast).new? %>
|
||||
<%= link_to t(".actions.create_stream"), [:new, @project, :broadcast], class: "btn btn-success border align-self-center h-50 pb-2" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="pt-2">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card-body p-0">
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="embed-responsive-item">
|
||||
<table class="w-100 h-100 bg-secondary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="text-center align-middle text-white">
|
||||
Video tutorial will be available soon
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.how_it_works' %></h3>
|
||||
<ol>
|
||||
<li><%= t '.list_items.create_stream' %></li>
|
||||
<li><%= t '.list_items.share_stream' %></li>
|
||||
<li><%= t '.list_items.launch_video_conference' %></li>
|
||||
<li><%= t '.list_items.share_files' %></li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3><%= t '.headings.benefits' %></h3>
|
||||
<ul class="fa-ul ml-5">
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_from_mobile_app'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.direct_shoots_anywhere'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.share_live_stream'))) %>
|
||||
<%= content_tag(:li, fa_icon("check li", text: t('.list_items.stream_multiple_cameras'))) %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -207,24 +207,6 @@ 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
|
||||
@@ -342,11 +324,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.
|
||||
|
||||
@@ -57,25 +57,6 @@ 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:
|
||||
|
||||
@@ -9,6 +9,20 @@ 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: -
|
||||
--
|
||||
@@ -317,8 +331,8 @@ CREATE TABLE public.appearance_releases (
|
||||
person_last_name character varying,
|
||||
guardian_first_name character varying,
|
||||
guardian_last_name character varying,
|
||||
identifier character varying,
|
||||
guardian_email character varying,
|
||||
identifier character varying,
|
||||
person_address_street2 character varying,
|
||||
person_address_city character varying,
|
||||
person_address_state character varying,
|
||||
@@ -652,6 +666,15 @@ 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: -
|
||||
--
|
||||
@@ -1378,7 +1401,6 @@ CREATE TABLE public.settings (
|
||||
--
|
||||
|
||||
CREATE SEQUENCE public.settings_id_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
@@ -1414,7 +1436,6 @@ CREATE TABLE public.taggings (
|
||||
--
|
||||
|
||||
CREATE SEQUENCE public.taggings_id_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
@@ -1445,7 +1466,6 @@ CREATE TABLE public.tags (
|
||||
--
|
||||
|
||||
CREATE SEQUENCE public.tags_id_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
@@ -1806,9 +1826,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,
|
||||
status integer DEFAULT 0
|
||||
project_id bigint
|
||||
);
|
||||
|
||||
|
||||
@@ -2285,6 +2305,14 @@ 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: -
|
||||
--
|
||||
|
||||
@@ -57,8 +57,6 @@ RSpec.describe AccountsController, type: :controller do
|
||||
expect {
|
||||
post :create, params: params
|
||||
}.to have_enqueued_job(SubmitHubspotFormJob).with(
|
||||
"John",
|
||||
"Doe",
|
||||
"test_user+1@test.com",
|
||||
"Test Dev account",
|
||||
i_m_interested_in: "DirectME"
|
||||
|
||||
@@ -37,26 +37,23 @@ RSpec.describe Api::AppearanceReleasesController, type: :controller do
|
||||
|
||||
it 'includes photos' do
|
||||
project = create(:project, account_id: current_user.primary_account.id)
|
||||
appearance_release = create(:appearance_release,
|
||||
:with_person_photo, :with_guardian_photo, :with_guardian_2_photo,
|
||||
project: project)
|
||||
appearance_release = create(:appearance_release, person_first_name: 'Release', person_last_name: 'Name', project: project)
|
||||
|
||||
sign_in_to_api(current_user)
|
||||
get :show, params: { id: appearance_release.id }
|
||||
|
||||
[appearance_release.person_photo, appearance_release.guardian_photo, appearance_release.guardian_2_photo].each do |photo|
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
photo = appearance_release.person_photo
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
end
|
||||
}
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -187,46 +184,7 @@ RSpec.describe Api::AppearanceReleasesController, type: :controller do
|
||||
expect(appearance_release.guardian_photo).to be_attached
|
||||
end
|
||||
|
||||
it 'returns 201 for minor without second guardian photo' do
|
||||
post :create, params: @parameters.deep_merge(appearance_release: {
|
||||
minor: true,
|
||||
guardian_2_name: 'Guardian 2 Name',
|
||||
guardian_2_phone: '101010',
|
||||
})
|
||||
|
||||
expect(response.status).to eq 201
|
||||
expect(AppearanceRelease.last.signature).to be_attached
|
||||
expect(AppearanceRelease.last.guardian_2_photo).not_to be_attached
|
||||
end
|
||||
|
||||
it 'returns 201 for minor with second guardian photo' do
|
||||
post :create, params: @parameters.deep_merge(appearance_release: {
|
||||
minor: true,
|
||||
guardian_2_name: 'Guardian 2 Name',
|
||||
guardian_2_phone: '101010',
|
||||
guardian_2_photo: {
|
||||
io: guardian_photo_base64,
|
||||
filename: 'guardian_2_photo.jpeg'
|
||||
}
|
||||
})
|
||||
expect(response.status).to eq 201
|
||||
|
||||
appearance_release = AppearanceRelease.last
|
||||
photo = appearance_release.guardian_2_photo
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
}
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
expect(appearance_release.signature).to be_attached
|
||||
expect(appearance_release.guardian_2_photo).to be_attached
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -32,28 +32,26 @@ RSpec.describe Api::TalentReleasesController, type: :controller do
|
||||
end
|
||||
|
||||
it 'includes photos' do
|
||||
project = create(:project, account_id: current_user.primary_account.id)
|
||||
talent_release = create(:talent_release,
|
||||
:with_guardian_photo, :with_guardian_2_photo,
|
||||
project: project)
|
||||
tested_release = create("talent_release_with_photo", person_name: 'Release 1', project: project)
|
||||
|
||||
sign_in_to_api(current_user)
|
||||
get :show, params: { id: talent_release.id }
|
||||
sign_in_to_api(current_user)
|
||||
get :show, params: { id: tested_release.id }
|
||||
|
||||
[talent_release.photos, talent_release.guardian_photo, talent_release.guardian_2_photo].flatten.each do |photo|
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
}
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
end
|
||||
end
|
||||
tested_release.photos.each do |photo|
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
}
|
||||
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#create' do
|
||||
@@ -182,47 +180,6 @@ RSpec.describe Api::TalentReleasesController, type: :controller do
|
||||
expect(talent_release.signature).to be_attached
|
||||
expect(talent_release.guardian_photo).to be_attached
|
||||
end
|
||||
|
||||
it 'returns 201 for minor without second guardian photo' do
|
||||
post :create, params: @parameters.deep_merge(talent_release: {
|
||||
minor: true,
|
||||
guardian_2_name: 'Guardian 2 Name',
|
||||
guardian_2_phone: '101010',
|
||||
})
|
||||
|
||||
expect(response.status).to eq 201
|
||||
expect(TalentRelease.last.signature).to be_attached
|
||||
expect(TalentRelease.last.guardian_2_photo).not_to be_attached
|
||||
end
|
||||
|
||||
it 'returns 201 for minor with second guardian photo' do
|
||||
post :create, params: @parameters.deep_merge(talent_release: {
|
||||
minor: true,
|
||||
guardian_2_name: 'Guardian 2 Name',
|
||||
guardian_2_phone: '101010',
|
||||
guardian_2_photo: {
|
||||
io: guardian_photo_base64,
|
||||
filename: 'guardian_2_photo.jpeg'
|
||||
}
|
||||
})
|
||||
expect(response.status).to eq 201
|
||||
|
||||
talent_release = TalentRelease.last
|
||||
photo = talent_release.guardian_2_photo
|
||||
data = {
|
||||
'id' => photo.id.to_s,
|
||||
'type' => 'active_storage_attachment',
|
||||
'attributes' => {
|
||||
'content_type' => photo.content_type,
|
||||
'filename' => photo.filename.to_s,
|
||||
'url' => photo_path_for(photo),
|
||||
'thumbnail_url' => photo_variant_path_for(photo, '150x150')
|
||||
}
|
||||
}
|
||||
expect(response_body_included_attributes).to include(data)
|
||||
expect(talent_release.signature).to be_attached
|
||||
expect(talent_release.guardian_2_photo).to be_attached
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -22,7 +22,7 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
it "renders content if theere are existing broadcasts" do
|
||||
it "renders content" do
|
||||
create(:broadcast, project: project, name: "Another Broadcast")
|
||||
|
||||
get :index, params: { project_id: project }
|
||||
@@ -34,13 +34,12 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
end
|
||||
|
||||
context "when there are no active broadcasts" do
|
||||
it "renders splash screen" do
|
||||
it "renders an empty message" do
|
||||
Broadcast.destroy_all
|
||||
|
||||
get :index, params: { project_id: project }
|
||||
|
||||
expect(response.body).to have_link create_stream
|
||||
expect(response.body).to have_link schedule_demo
|
||||
expect(response.body).to have_content("Live streams will appear here")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -56,8 +55,10 @@ RSpec.describe BroadcastsController, type: :controller do
|
||||
|
||||
context "for xhr request" do
|
||||
it "filters the broadcasts by a query param" do
|
||||
create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Adam")
|
||||
create(:broadcast, project: project, skip_create_callback: true, name: "Stream by Zoe")
|
||||
appearance_releases = [
|
||||
create(:broadcast, skip_create_callback: true, name: "Stream by Adam"),
|
||||
create(:broadcast, skip_create_callback: true, name: "Stream by Zoe"),
|
||||
]
|
||||
|
||||
get :index, params: { project_id: project, query: "Zoe" }, xhr: true
|
||||
|
||||
@@ -244,12 +245,4 @@ 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
|
||||
|
||||
@@ -7,7 +7,6 @@ RSpec.describe StreamNotificationsController, type: :controller do
|
||||
let(:active_status) { {type: "video.live_stream.active", object: { id: "mux_stream" }} }
|
||||
let(:disconnected_status) { {type: "video.live_stream.disconnected", object: { id: "mux_stream" }} }
|
||||
let(:idle_status) { {type: "video.live_stream.idle", object: { id: "mux_stream" }} }
|
||||
let(:idle_status_for_unknown_broadcast) { {type: "video.live_stream.idle", object: { id: "unknown-id" }} }
|
||||
let(:asset_ready) { {
|
||||
type: "video.asset.static_renditions.ready",
|
||||
object: { id: "asset_uid" },
|
||||
@@ -60,12 +59,6 @@ RSpec.describe StreamNotificationsController, type: :controller do
|
||||
|
||||
expect(BroadcastsChannel).to have_received(:stream_recording_ready)
|
||||
end
|
||||
|
||||
it "returns OK response even for non-existing broadcast" do
|
||||
post :create, params: idle_status_for_unknown_broadcast
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
|
||||
@@ -58,7 +58,10 @@ FactoryBot.define do
|
||||
guardian_address_state "State"
|
||||
guardian_address_zip "ZIP"
|
||||
guardian_address_country "Country"
|
||||
with_guardian_photo
|
||||
guardian_photo do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
|
||||
Rack::Test::UploadedFile.new(path, "image/jpeg")
|
||||
end
|
||||
end
|
||||
|
||||
trait :without_person_photo do
|
||||
@@ -71,20 +74,6 @@ FactoryBot.define do
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_guardian_photo do
|
||||
guardian_photo do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
|
||||
Rack::Test::UploadedFile.new(path, "image/jpeg")
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_guardian_2_photo do
|
||||
guardian_2_photo do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
|
||||
Rack::Test::UploadedFile.new(path, "image/jpeg")
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_person_photo_only do
|
||||
end
|
||||
|
||||
|
||||
@@ -35,23 +35,12 @@ FactoryBot.define do
|
||||
guardian_first_name "Jamie"
|
||||
guardian_last_name "Doe"
|
||||
guardian_phone "123-555-1234"
|
||||
with_guardian_photo
|
||||
end
|
||||
|
||||
trait :with_guardian_photo do
|
||||
guardian_photo do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
|
||||
Rack::Test::UploadedFile.new(path, "image/jpeg")
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_guardian_2_photo do
|
||||
guardian_2_photo do
|
||||
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
|
||||
Rack::Test::UploadedFile.new(path, "image/jpeg")
|
||||
end
|
||||
end
|
||||
|
||||
factory :talent_release_with_contract_template do
|
||||
after(:build) do |talent_release, _|
|
||||
talent_release.contract_template = build(:talent_release_contract_template)
|
||||
|
||||
@@ -12,13 +12,6 @@ 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)
|
||||
|
||||
@@ -138,29 +131,6 @@ 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
|
||||
@@ -181,12 +151,4 @@ 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
|
||||
|
||||
@@ -11,12 +11,10 @@ RSpec.describe SubmitHubspotFormJob, type: :job do
|
||||
allow(Hubspot::Form).to receive(:new).and_return(form)
|
||||
allow(form).to receive(:submit).and_return(true)
|
||||
|
||||
SubmitHubspotFormJob.perform_now("John", "Doe", "email@test.com", "My Account")
|
||||
SubmitHubspotFormJob.perform_now("email@test.com", "My Account")
|
||||
|
||||
expect(Hubspot::Form).to have_received(:new).with("guid" => "hubspot_form_guid")
|
||||
expect(form).to have_received(:submit).with(
|
||||
first_name: "John",
|
||||
last_name: "Doe",
|
||||
email: "email@test.com",
|
||||
company: "My Account"
|
||||
)
|
||||
@@ -27,11 +25,9 @@ RSpec.describe SubmitHubspotFormJob, type: :job do
|
||||
allow(Hubspot::Form).to receive(:new).and_return(form)
|
||||
allow(form).to receive(:submit).and_return(true)
|
||||
|
||||
SubmitHubspotFormJob.perform_now("John", "Doe", "email@test.com", "My Account", additional_param_one: "Foo", additional_param_two: "Bar")
|
||||
SubmitHubspotFormJob.perform_now("email@test.com", "My Account", additional_param_one: "Foo", additional_param_two: "Bar")
|
||||
|
||||
expect(form).to have_received(:submit).with(
|
||||
first_name: "John",
|
||||
last_name: "Doe",
|
||||
email: "email@test.com",
|
||||
company: "My Account",
|
||||
additional_param_one: "Foo",
|
||||
@@ -46,7 +42,7 @@ RSpec.describe SubmitHubspotFormJob, type: :job do
|
||||
allow(Hubspot::Form).to receive(:new).and_return(form)
|
||||
allow(form).to receive(:submit)
|
||||
|
||||
SubmitHubspotFormJob.perform_now("John", "Doe", "email@test.com", "My Account")
|
||||
SubmitHubspotFormJob.perform_now("email@test.com", "My Account")
|
||||
|
||||
expect(form).not_to have_received(:submit)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user