diff --git a/.env.sample b/.env.sample
index c506d1a..578cac9 100644
--- a/.env.sample
+++ b/.env.sample
@@ -7,8 +7,6 @@ AWS_SECRET_ACCESS_KEY=
AWS_REGION=
BRAYNIAC_AI_API_ENDPOINT=https://z99cprg2eg.execute-api.us-east-1.amazonaws.com/dev/v0.0.1
-SOURCE_AUDIO_API_ENDPOINT=https://bigmedia.sourceaudio.com/api
-SOURCE_AUDIO_TOKEN=
# Optional
REDIS_URL=
@@ -16,7 +14,6 @@ REDIS_URL=
# Required for Zoom.us integration
ZOOM_API_KEY=
ZOOM_API_SECRET=
-ZOOM_ACCOUNT_NUMBER=
ZOOM_PRO_USERS_LIMIT= # defaults to 3
ZOOM_USER_TYPE= # 'pro' / 'basic'
ZOOM_ENABLE_RECORDINGS= # true / false (default: false)
@@ -28,3 +25,7 @@ MUX_TOKEN_ID=
MUX_TOKEN_SECRET=
MUX_BROADCAST_SERVER_URL=rtmp://global-live.mux.com:5222/app
MUX_TEST_MODE_DISABLED=
+
+# Required for creating user through API
+CUSTOM_API_TOKEN=
+
diff --git a/app/controllers/api/user_token_controller.rb b/app/controllers/api/user_token_controller.rb
index c9ab895..cae81f9 100644
--- a/app/controllers/api/user_token_controller.rb
+++ b/app/controllers/api/user_token_controller.rb
@@ -1,5 +1,12 @@
+# frozen_string_literal: true
+
+require './lib/knock_monkeypatch'
+
class Api::UserTokenController < Knock::AuthTokenController
+ include Oath::ControllerHelpers
+
skip_before_action :verify_authenticity_token
+ before_action :sign_in_user
rescue_from Exception, :with => :return_error
@@ -10,7 +17,7 @@ class Api::UserTokenController < Knock::AuthTokenController
logger.error "==Handled======="
logger.error exception.message
logger.error exception.backtrace.join("\n")
- logger.error "==Handled======="
+ logger.error "==Handled======="
case exception
when ActiveRecord::RecordNotFound
@status = 404
@@ -27,12 +34,18 @@ class Api::UserTokenController < Knock::AuthTokenController
end
# for some reason render json_errors is not working
- # simulating JSON API support
- render json: {
+ # simulating JSON API support
+ render json: {
errors: [{
status: @status.to_s,
title: @message
}]
}
end
+
+ private
+
+ def sign_in_user
+ sign_in(entity)
+ end
end
diff --git a/app/controllers/api/users_controller.rb b/app/controllers/api/users_controller.rb
new file mode 100644
index 0000000..1af1d76
--- /dev/null
+++ b/app/controllers/api/users_controller.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+class Api::UsersController < Api::ApiController
+ skip_before_action :authenticate_user
+ before_action :verify_custom_token, only: :create
+
+ def create
+ if user_params[:email].nil? || user_params[:password].nil?
+ raise ActionController::ParameterMissing.new 'Missing email or password'
+ end
+
+ user = Oath::Services::SignUp.new(user_params).perform
+ render json: user.slice(:email, :created_at, :first_name, :last_name)
+ end
+
+ private
+
+ def user_params
+ params.require(:user).permit(%i[
+ email
+ password
+ first_name
+ last_name
+ ])
+ end
+
+ def verify_custom_token
+ if token.blank? || token != ENV['CUSTOM_API_TOKEN']
+ unauthorized_entity(:user)
+ end
+ end
+
+end
diff --git a/app/models/account.rb b/app/models/account.rb
index 6c89d62..b2f0a60 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -64,6 +64,19 @@ class Account < ApplicationRecord
])).sum(:byte_size).to_f
end
+ def total_number_of_releases
+ [
+ MiscRelease.where(project: projects).size,
+ AppearanceRelease.where(project: projects).size,
+ TalentRelease.where(project: projects).size,
+ MaterialRelease.where(project: projects).size,
+ MedicalRelease.where(project: projects).size,
+ LocationRelease.where(project: projects).size,
+ AcquiredMediaRelease.where(project: projects).size,
+ MusicRelease.where(project: projects).size
+ ].sum
+ end
+
def to_param
slug
end
@@ -85,7 +98,7 @@ class Account < ApplicationRecord
end
def taskme_enabled?
- ENV["TASKME_ENABLED"] && (plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme")
+ plan_uid.to_s == "me_suite" || plan_uid.to_s == "taskme"
end
def plan_name
diff --git a/app/views/account_auths/_account_logo_form.html.erb b/app/views/account_auths/_account_logo_form.html.erb
index c593522..33af982 100644
--- a/app/views/account_auths/_account_logo_form.html.erb
+++ b/app/views/account_auths/_account_logo_form.html.erb
@@ -1,4 +1,4 @@
<%= bootstrap_form_with model: account, url: account_path, html: { autocorrect: :off, autocapitalize: :none, autocomplete: :off, spellcheck: false }, layout: :inline, remote: true do |form| %>
- <%= form.file_field :logo, hide_label: true, accept: "image/*", placeholder: "Upload Logo", direct_upload: true, wrapper_class: "mr-1" %>
+ <%= form.file_field :logo, hide_label: true, accept: "image/*", placeholder: "Upload Logo", direct_upload: true, wrapper_class: "mr-1", required: true %>
<%= form.button(fa_icon("upload", text: t(".submit")), class: "btn btn-md btn-primary", data: { disable_with: t("shared.disable_with") }) %>
<% end %>
diff --git a/app/views/acquired_media_releases/_acquired_media_release.html.erb b/app/views/acquired_media_releases/_acquired_media_release.html.erb
index 2ebcc67..ab0f400 100644
--- a/app/views/acquired_media_releases/_acquired_media_release.html.erb
+++ b/app/views/acquired_media_releases/_acquired_media_release.html.erb
@@ -18,6 +18,9 @@
<%= fa_icon("warning", text: t(".no_media"), class: "text-danger") %>
<% end %>
+
+ <%= contact_info_for(acquired_media_release.contact_person) %>
+ |
<%= notes_preview acquired_media_release.notes.order_by_recent %>
|
diff --git a/app/views/acquired_media_releases/index.html.erb b/app/views/acquired_media_releases/index.html.erb
index 3bbc09c..38c41dd 100644
--- a/app/views/acquired_media_releases/index.html.erb
+++ b/app/views/acquired_media_releases/index.html.erb
@@ -29,6 +29,7 @@
<%= t '.table_headers.approved'%> |
<%= AcquiredMediaRelease.human_attribute_name(:name) %> |
<%= t(".table_headers.file_infos_count") %> |
+ <%= t(".table_headers.owner_info") %> |
<%= t(".table_headers.notes") %> |
<%= t(".table_headers.tags") %> |
<%= t(".table_headers.signed_at") %> |
diff --git a/app/views/admin/accounts/show.html.erb b/app/views/admin/accounts/show.html.erb
index 48b21ed..f900f9d 100644
--- a/app/views/admin/accounts/show.html.erb
+++ b/app/views/admin/accounts/show.html.erb
@@ -9,6 +9,8 @@
<%= @account.users.size %>
Created at
<%= time_ago_in_words(@account.created_at) %> ago
+ # of Releases
+ <%= @account.total_number_of_releases %>
<% end %>
diff --git a/app/views/broadcasts/_video.html.erb b/app/views/broadcasts/_video.html.erb
index ff88436..e0e9ad2 100644
--- a/app/views/broadcasts/_video.html.erb
+++ b/app/views/broadcasts/_video.html.erb
@@ -1,9 +1,9 @@
-<% if broadcast.streamer_recording? && broadcast.active? %>
-
-<% elsif broadcast.director_mode_video_embed.present? && params[:director_mode] == "true" %>
+<% if broadcast.director_mode_video_embed.present? && params[:director_mode].present? %>
<%= raw broadcast.director_mode_video_embed %>
+<% elsif broadcast.streamer_recording? && broadcast.active? %>
+
<% else %>
diff --git a/app/views/layouts/admin/application.html.erb b/app/views/layouts/admin/application.html.erb
index a12ee6a..1ab88e9 100644
--- a/app/views/layouts/admin/application.html.erb
+++ b/app/views/layouts/admin/application.html.erb
@@ -1,7 +1,7 @@
- BiGMedia.ai App
+ MESuite.ai App
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index 5bee701..b2e5751 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,7 +1,7 @@
- BiGMedia.ai App
+ MESuite.ai App
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
diff --git a/app/views/material_releases/_material_release.html.erb b/app/views/material_releases/_material_release.html.erb
index 1db1c17..44c1b00 100644
--- a/app/views/material_releases/_material_release.html.erb
+++ b/app/views/material_releases/_material_release.html.erb
@@ -18,6 +18,9 @@
|
<%= material_release.name %>
|
+
+ <%= contact_info_for(material_release.contact_person) %>
+ |
<%= notes_preview material_release.notes.order_by_recent %>
|
diff --git a/app/views/material_releases/index.html.erb b/app/views/material_releases/index.html.erb
index bca39db..eaf63df 100644
--- a/app/views/material_releases/index.html.erb
+++ b/app/views/material_releases/index.html.erb
@@ -29,10 +29,10 @@
<%= t '.table_headers.approved'%> |
|
<%= MaterialRelease.human_attribute_name(:name) %> |
+ <%= t(".table_headers.owner_info") %>
| <%= t(".table_headers.notes") %> |
<%= t(".table_headers.tags") %> |
- <%= t(".table_headers.signed_at") %> |
-
+ <%= t(".table_headers.signed_at") %> |
|
diff --git a/app/views/task_requests/splash.html.erb b/app/views/task_requests/splash.html.erb
index 98d626f..206c74d 100644
--- a/app/views/task_requests/splash.html.erb
+++ b/app/views/task_requests/splash.html.erb
@@ -18,15 +18,7 @@
-
-
-
- |
- Video tutorial will be available soon
- |
-
-
-
+
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 77285d3..fd67d6c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -67,6 +67,7 @@ en:
notes: Notes
signed_at: Date Signed
tags: Tags
+ owner_info: Owner Info
new:
heading: Import Acquired Media Release
update:
@@ -518,6 +519,8 @@ en:
person_last_name: Last name
person_name: Name
person_phone: Phone number
+ contract_template:
+ amendment_clause: Additional Contract Clause
location_release:
address_city: City
address_country: Country
@@ -848,7 +851,8 @@ en:
search: Search
empty: Location Releases will appear here
table_headers:
- amendment_signed: Amendment
+ address: Address
+ amendment_signed: Additional Clause
approved: Approved
location_info: Location Info
notes: Notes
@@ -859,7 +863,7 @@ en:
actions:
manage: Manage
review: Review
- sign_amendment: Sign Amendment
+ sign_amendment: Sign Additional Clause
messages:
amendment_not_signed_tooltip: Amendment not yet signed
amendment_signed_tooltip: Amendment Signed
@@ -903,6 +907,7 @@ en:
approved: Approved
name: Name
notes: Notes
+ owner_info: Owner Info
signed_at: Date Signed
tags: Tags
material_release:
@@ -1141,7 +1146,7 @@ en:
amendment_signed_message: Release amendment signed successfully! Thank you
new:
amendment:
- heading: Amendment
+ heading: Additional Clause
copy_url: Copy sign amendment URL
signature:
heading: Signature
diff --git a/config/locales/es.yml b/config/locales/es.yml
index b87f3aa..fca74aa 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -21,6 +21,7 @@ es:
notes: Notes (ES)
signed_at: Date Signed (ES)
tags: Tags (ES)
+ owner_info: Owner Info (ES)
activerecord:
attributes:
appearance_release:
@@ -285,6 +286,8 @@ es:
person_email: Dirección de correo electrónico
person_name: Nómbre
person_phone: Número de teléfono
+ contract_template:
+ amendment_clause: Additional Contract Clause (ES)
material_release:
guardian_2_address_city: Guardian 2 city (ES)
guardian_2_address_country: Guardian 2 country (ES)
@@ -408,13 +411,13 @@ es:
index:
table_headers:
address: Address (ES)
- amendment_signed: Amendment (ES)
+ amendment_signed: Additional Clause (ES)
notes: Notes (ES)
signed_at: Date Signed (ES)
tags: Tags (ES)
location_release:
actions:
- sign_amendment: Sign Amendment (ES)
+ sign_amendment: Sign Additional Clause (ES)
messages:
amendment_not_signed_tooltip: Amendment not yet signed (ES)
amendment_signed_tooltip: Amendment Signed (ES)
@@ -436,6 +439,7 @@ es:
table_headers:
name: Name (ES)
notes: Notes (ES)
+ owner_info: Owner Info
signed_at: Date Signed (ES)
tags: Tags (ES)
medical_releases:
@@ -500,7 +504,7 @@ es:
amendment_signed_message: Release amendment signed successfully! Thank you (ES)
new:
amendment:
- heading: Amendment
+ heading: Additional Clause (ES)
copy_url: Copy sign amendment URL (ES)
signature:
heading: Signature (ES)
diff --git a/config/routes.rb b/config/routes.rb
index 7a9f412..534fa25 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -160,6 +160,7 @@ Rails.application.routes.draw do
scope 'v1' do
get 'sync' => 'sync#index'
post 'user_token' => 'user_token#create'
+ post 'users' => 'users#create'
resource :profiles, only: [:show]
resources :projects, only: [:index] do
resources :broadcasts, only: [:index, :show, :update]
diff --git a/lib/knock_monkeypatch.rb b/lib/knock_monkeypatch.rb
new file mode 100644
index 0000000..ade5f2c
--- /dev/null
+++ b/lib/knock_monkeypatch.rb
@@ -0,0 +1,7 @@
+module Knock
+ class AuthTokenController < ApplicationController
+ skip_before_action :authenticate
+ alias authenticate_with_token authenticate
+ before_action :authenticate_with_token
+ end
+end
\ No newline at end of file
diff --git a/spec/controllers/api/user_token_controller_spec.rb b/spec/controllers/api/user_token_controller_spec.rb
new file mode 100644
index 0000000..cb01e35
--- /dev/null
+++ b/spec/controllers/api/user_token_controller_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe Api::UserTokenController, type: :request do
+ let(:current_user) { create(:user) }
+
+ describe '#create' do
+ it 'returns error if credentials are not corrent and does not set cookie' do
+
+ post create_endpoint, params: wrong_auth_params
+
+ expect(response).to be_successful
+ expect(response.body).to match record_not_found
+ expect(cookie_data).to eq nil
+ end
+
+ it 'sends token and cookie if credentials are correct' do
+ post create_endpoint, params: correct_auth_params
+
+ expect(response).to be_successful
+ expect(response.body).not_to match record_not_found
+ expect(response.body).to match token_response
+ expect(cookie_data).not_to eq nil
+ end
+ end
+
+ private
+
+ def wrong_auth_params
+ {
+ auth: {
+ email: 'wrong_email@api-test.com',
+ password: 'password'
+ }
+ }
+ end
+
+ def correct_auth_params
+ {
+ auth: {
+ email: current_user.email,
+ password: 'password'
+ }
+ }
+ end
+
+ def create_endpoint
+ '/api/v1/user_token'
+ end
+
+ def record_not_found
+ /Record not found/
+ end
+
+ def token_response
+ /jwt/
+ end
+
+ def cookie_data
+ cookies[:_easy_release_session]
+ end
+end
diff --git a/spec/controllers/api/users_controller_spec.rb b/spec/controllers/api/users_controller_spec.rb
new file mode 100644
index 0000000..e785c73
--- /dev/null
+++ b/spec/controllers/api/users_controller_spec.rb
@@ -0,0 +1,78 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe Api::UsersController, type: :controller do
+ before do
+ ENV['CUSTOM_API_TOKEN'] = "custom_token"
+ end
+ describe '#create' do
+ context 'Invalid token' do
+ it 'Returns 401 (Unauthorized) status if token is not valid' do
+
+ post :create
+
+ expect(response).not_to be_successful
+ expect(response).to have_http_status(401)
+ end
+ end
+
+ context 'Valid token' do
+ before :each do
+ controller.request.env['HTTP_AUTHORIZATION'] = 'Bearer custom_token'
+ end
+
+ it 'Returns Server error if user param is missing' do
+ user_count = User.all.count
+
+ expect do
+ post :create
+ end.to raise_exception ActionController::ParameterMissing
+
+ expect(User.all.count).to eq user_count
+ end
+
+ it 'Returns Server Error if email or password is missing' do
+ user_count = User.all.count
+
+ expect do
+ post :create, params: { user: { email: "a@b.com" } }
+ end.to raise_exception ActionController::ParameterMissing
+
+ expect do
+ post :create, params: { user: { password: "123" } }
+ end.to raise_exception ActionController::ParameterMissing
+
+ expect(User.all.count).to eq user_count
+ end
+
+ it 'Returns Server Error if body contains not permitted params' do
+ user_count = User.all.count
+
+ expect do
+ post :create, params: { user: { email: "a@b.com", password: "123", admin: true } }
+ end.to raise_exception ActionController::UnpermittedParameters
+
+ expect(User.all.count).to eq user_count
+ end
+
+ it 'Creates user if body contains correct params' do
+ expect do
+ post :create, params: { user: { email: "a@b.com", password: "123" } }
+ end.to change(User, :count).by(1)
+
+ expect(response).to be_successful
+ end
+
+ it 'Nothing changes if existing email is used' do
+ create(:user, email: "a@b.com")
+
+ expect do
+ post :create, params: { user: { email: "a@b.com", password: "123" } }
+ end.not_to change(User, :count)
+
+ expect(response).to be_successful
+ end
+ end
+ end
+end
diff --git a/spec/factories/acquired_media_releases.rb b/spec/factories/acquired_media_releases.rb
index 952f049..b45c57e 100644
--- a/spec/factories/acquired_media_releases.rb
+++ b/spec/factories/acquired_media_releases.rb
@@ -4,6 +4,22 @@ FactoryBot.define do
name "Test Acquired Media Release"
+ trait :with_address do
+ person_address_street1 "St1"
+ person_address_street2 "St2"
+ person_address_city "City"
+ person_address_state "State"
+ person_address_zip "123"
+ person_address_country "US"
+ end
+
+ trait :with_owner_info do
+ person_first_name "Jane"
+ person_last_name "Doe"
+ person_phone "100-555-1001"
+ person_email "owner@email.com"
+ end
+
trait :native do
signature do
path = Rails.root.join("spec", "fixtures", "files", "signature.png")
diff --git a/spec/factories/material_releases.rb b/spec/factories/material_releases.rb
index 164979f..c5ebb17 100644
--- a/spec/factories/material_releases.rb
+++ b/spec/factories/material_releases.rb
@@ -4,10 +4,20 @@ FactoryBot.define do
name "Test Materials"
+ trait :with_address do
+ person_address_street1 "St1"
+ person_address_street2 "St2"
+ person_address_city "City"
+ person_address_state "State"
+ person_address_zip "123"
+ person_address_country "US"
+ end
+
trait :native do
person_first_name "Jane"
person_last_name "Doe"
person_phone "100-555-1001"
+ person_email "owner@email.com"
signature do
path = Rails.root.join("spec", "fixtures", "files", "signature.png")
diff --git a/spec/features/user_managing_acquired_media_releases_spec.rb b/spec/features/user_managing_acquired_media_releases_spec.rb
index 61ac8c8..0d4484d 100644
--- a/spec/features/user_managing_acquired_media_releases_spec.rb
+++ b/spec/features/user_managing_acquired_media_releases_spec.rb
@@ -165,6 +165,24 @@ feature "User managing acquired_media releases" do
sign_in current_user
end
+ scenario "index table shows owner info" do
+ release = create(:acquired_media_release, :with_owner_info, :with_address, project: project)
+
+ visit project_acquired_media_releases_path(project)
+
+ expect(page).to have_content owner_info_table_header
+
+ expect(page).to have_content release.person_first_name
+ expect(page).to have_content release.person_last_name
+ expect(page).to have_content release.person_phone
+ expect(page).to have_content release.person_email
+ expect(page).to have_content release.person_address_street1
+ expect(page).to have_content release.person_address_city
+ expect(page).to have_content release.person_address_state
+ expect(page).to have_content release.person_address_zip
+ expect(page).to have_content release.person_address_country
+ end
+
scenario "creating a release for an adult", js: true do
visit new_project_acquired_media_release_path(project)
@@ -262,62 +280,63 @@ feature "User managing acquired_media releases" do
end
scenario "creating, updating, destroying a release", js: true do
- release_data = {
- name: "Test Acquired Media Release",
- applicable_media: ApplicableMedium.last.label,
- territory: Territory.last.label,
- term: Term.last.label,
- restriction: Restriction.first.label,
- restriction_text: "Not available in China",
- }
+ resize_window_to(1_000, 1_000) do
+ release_data = {
+ name: "Test Acquired Media Release",
+ applicable_media: ApplicableMedium.last.label,
+ territory: Territory.last.label,
+ term: Term.last.label,
+ restriction: Restriction.first.label,
+ restriction_text: "Not available in China",
+ }
- sign_in current_user
- visit new_project_acquired_media_release_path(project)
+ sign_in current_user
+ visit new_project_acquired_media_release_path(project)
- by "attaching only a contract" do
- attach_file contract_field, Rails.root.join(file_fixture("contract.pdf")), visible: false
- click_button create_release_button
+ by "attaching only a contract" do
+ attach_file contract_field, Rails.root.join(file_fixture("contract.pdf")), visible: false
+ click_button create_release_button
- expect(page).to have_invalid_field(acquired_media_name_field)
- end
-
- by "attaching files" do
- drop_file Rails.root.join(file_fixture("video_file.mp4")), type: "file-info-dropzone"
- click_button create_release_button
-
- expect(page).to have_invalid_field(acquired_media_name_field)
- end
-
- by "filling out the remaining information" do
- fill_in_release_fields release_data
- click_button create_release_button
-
- expect(page).to have_content(create_release_notice)
- expect(page).to have_content("1")
-
- click_on "Manage"
- expect(page).to have_link("Download")
- end
-
- it_also "updates an existing release" do
- click_link "Edit"
-
- within ".dropzone" do
- expect(page).to have_filename("video_file.mp4")
+ expect(page).to have_invalid_field(acquired_media_name_field)
end
- expect(page).to have_filled_in_data(release_data)
+ by "attaching files" do
+ drop_file Rails.root.join(file_fixture("video_file.mp4")), type: "file-info-dropzone"
+ click_button create_release_button
- fill_in_release_fields name: "New name"
- drop_file Rails.root.join(file_fixture("person_photo.png")), type: "file-info-dropzone"
- click_button update_release_button
+ expect(page).to have_invalid_field(acquired_media_name_field)
+ end
- expect(page).to have_content(update_release_notice)
- expect(page).to have_content("New name")
- expect(page).to have_content("2")
- end
+ by "filling out the remaining information" do
+ fill_in_release_fields release_data
+ click_button create_release_button
- it_also "deletes an existing release" do
+ expect(page).to have_content(create_release_notice)
+ expect(page).to have_content("1")
+
+ click_on "Manage"
+ expect(page).to have_link("Download")
+ end
+
+ it_also "updates an existing release" do
+ click_link "Edit"
+
+ within ".dropzone" do
+ expect(page).to have_filename("video_file.mp4")
+ end
+
+ expect(page).to have_filled_in_data(release_data)
+
+ fill_in_release_fields name: "New name"
+ drop_file Rails.root.join(file_fixture("person_photo.png")), type: "file-info-dropzone"
+ click_button update_release_button
+
+ expect(page).to have_content(update_release_notice)
+ expect(page).to have_content("New name")
+ expect(page).to have_content("2")
+ end
+
+ it_also "deletes an existing release" do
click_button "Manage"
accept_alert do
click_link "Delete"
@@ -325,6 +344,7 @@ feature "User managing acquired_media releases" do
expect(page).not_to have_content("New name")
end
+ end
end
scenario "viewing the contract PDF for an adult" do
@@ -836,4 +856,8 @@ feature "User managing acquired_media releases" do
def successful_import_message
t 'acquired_media_releases.create.notice'
end
+
+ def owner_info_table_header
+ t 'acquired_media_releases.index.table_headers.owner_info'
+ end
end
diff --git a/spec/features/user_managing_location_releases_spec.rb b/spec/features/user_managing_location_releases_spec.rb
index b7cf8f7..4b3da39 100644
--- a/spec/features/user_managing_location_releases_spec.rb
+++ b/spec/features/user_managing_location_releases_spec.rb
@@ -87,7 +87,7 @@ feature "User managing location releases" do
visit new_account_project_contract_template_location_release_amendment_path(project.account, project, contract_template, release)
- expect(page).to have_content amendments_heading
+ expect(page).to have_content amendments_heading.upcase
fill_in amendment_signer_name_field, with: 'Big Signer'
draw_signature file_fixture("signature.png"), amendment_signature_field
@@ -250,10 +250,7 @@ feature "User managing location releases" do
new_window = window_opened_by { click_link sign_amendment_link }
within_window new_window do
- expect(page).to have_content amendments_heading
- expect(page).to have_content signed_contract_preview.upcase
-
- expect(page).to have_selector 'embed'
+ expect(page).to have_content amendments_heading.upcase
fill_in amendment_signer_name_field, with: 'Big Signer'
draw_signature file_fixture("signature.png"), amendment_signature_field
diff --git a/spec/features/user_managing_material_releases_spec.rb b/spec/features/user_managing_material_releases_spec.rb
index b98f5d6..594d20a 100644
--- a/spec/features/user_managing_material_releases_spec.rb
+++ b/spec/features/user_managing_material_releases_spec.rb
@@ -185,6 +185,24 @@ feature "User managing material releases" do
sign_in current_user
end
+ scenario "index table shows owner info" do
+ release = create(:material_release, :native, :with_address, project: project)
+
+ visit project_material_releases_path(project)
+
+ expect(page).to have_content owner_info_table_header
+
+ expect(page).to have_content release.person_first_name
+ expect(page).to have_content release.person_last_name
+ expect(page).to have_content release.person_phone
+ expect(page).to have_content release.person_email
+ expect(page).to have_content release.person_address_street1
+ expect(page).to have_content release.person_address_city
+ expect(page).to have_content release.person_address_state
+ expect(page).to have_content release.person_address_zip
+ expect(page).to have_content release.person_address_country
+ end
+
scenario "creating a release for and adult", js: true do
visit new_project_material_release_path(project)
@@ -813,4 +831,8 @@ feature "User managing material releases" do
def signature_field
'material_release_signature_base64'
end
+
+ def owner_info_table_header
+ t 'material_releases.index.table_headers.owner_info'
+ end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 97468b7..09e50ec 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -148,6 +148,18 @@ RSpec.describe Account do
end
end
+ describe "#total_number_of_releases" do
+ it "returns total number of releases" do
+ account = create(:account)
+ project = create(:project, account: account)
+ appearance_release = create(:appearance_release, project: project)
+ talent_release = create(:talent_release, project: project)
+ material_release = create(:material_release, project: project)
+
+ expect(account.total_number_of_releases).to eq 3
+ end
+ end
+
describe "#me_suite_enabled?" do
it "returns true when plan_uid is me_suite" do
expect(build(:account, plan_uid: "me_suite").me_suite_enabled?).to eq true