diff --git a/app/controllers/public/appearance_releases_controller.rb b/app/controllers/public/appearance_releases_controller.rb
index c1a0955..4bd3d9f 100644
--- a/app/controllers/public/appearance_releases_controller.rb
+++ b/app/controllers/public/appearance_releases_controller.rb
@@ -41,7 +41,7 @@ class Public::AppearanceReleasesController < Public::BaseController
def appearance_release_params
params.require(:appearance_release).permit(:person_address, :person_first_name, :person_last_name, :person_phone, :person_email, :person_photo,
- :guardian_address, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_photo, :minor,
+ :guardian_address, :guardian_first_name, :guardian_last_name, :guardian_phone, :guardian_email, :guardian_photo, :minor,
:signature_base64, :person_date_of_birth,
:locale, :contract_template,)
end
diff --git a/app/models/appearance_release.rb b/app/models/appearance_release.rb
index 59d1f22..9a587c7 100644
--- a/app/models/appearance_release.rb
+++ b/app/models/appearance_release.rb
@@ -39,6 +39,7 @@ class AppearanceRelease < ApplicationRecord
# These validations apply to releases being signed by a minor
with_options if: :minor? do
validates :guardian_first_name, :guardian_last_name, presence: true
+ validates :guardian_email, email: true, allow_blank: true
end
validates :person_photo, content_type: face_photo_acceptable_content_types
diff --git a/app/views/contracts/_signature_page.html.erb b/app/views/contracts/_signature_page.html.erb
index e39c8be..7c7ab68 100644
--- a/app/views/contracts/_signature_page.html.erb
+++ b/app/views/contracts/_signature_page.html.erb
@@ -56,6 +56,7 @@
<%= description_list_pair_for releasable, :guardian_name, append: ":" %>
<%= description_list_pair_for releasable, :guardian_address, append: ":" %>
<%= description_list_pair_for releasable, :guardian_phone, append: ":" %>
+ <%= description_list_pair_for releasable, :guardian_email, append: ":" %>
<%= description_list_pair_for releasable, :signed_on, append: ":" %>
diff --git a/app/views/public/appearance_releases/new.html.erb b/app/views/public/appearance_releases/new.html.erb
index 9055980..a612e02 100644
--- a/app/views/public/appearance_releases/new.html.erb
+++ b/app/views/public/appearance_releases/new.html.erb
@@ -76,6 +76,9 @@
<%= form.text_field :guardian_last_name, required: @appearance_release.minor?, wrapper_class: "col-sm-3" %>
<%= form.phone_field :guardian_phone, wrapper_class: "col-sm-6" %>
+
+ <%= form.text_field :guardian_email, wrapper_class: "col-sm-6" %>
+
<%= form.text_field :guardian_address, wrapper_class: "col-sm-6" %>
diff --git a/db/migrate/20200612121539_add_guardian_email_to_appearance_releases.rb b/db/migrate/20200612121539_add_guardian_email_to_appearance_releases.rb
new file mode 100644
index 0000000..dfa06d1
--- /dev/null
+++ b/db/migrate/20200612121539_add_guardian_email_to_appearance_releases.rb
@@ -0,0 +1,5 @@
+class AddGuardianEmailToAppearanceReleases < ActiveRecord::Migration[6.0]
+ def change
+ add_column :appearance_releases, :guardian_email, :string
+ end
+end
diff --git a/spec/controllers/appearance_releases_controller_spec.rb b/spec/controllers/appearance_releases_controller_spec.rb
index e7bc676..bfbe240 100644
--- a/spec/controllers/appearance_releases_controller_spec.rb
+++ b/spec/controllers/appearance_releases_controller_spec.rb
@@ -263,7 +263,10 @@ RSpec.describe AppearanceReleasesController, tye: :controller do
end
def minor_appearance_release_params
- attributes_for(:appearance_release, :non_native, :minor_with_guardian_photo).except(:contract).merge(contract_param, exploitable_rights_params)
+ attributes_for(:appearance_release, :non_native, :minor_with_guardian_photo)
+ .except(:contract)
+ .except(:guardian_email)
+ .merge(contract_param, exploitable_rights_params)
end
def exploitable_rights_params
diff --git a/spec/factories/appearance_releases.rb b/spec/factories/appearance_releases.rb
index fa39d2c..a64c4a9 100644
--- a/spec/factories/appearance_releases.rb
+++ b/spec/factories/appearance_releases.rb
@@ -33,6 +33,7 @@ FactoryBot.define do
guardian_last_name "Doe"
guardian_address "100 Test Lane, New York, 10001"
guardian_phone "123-555-1234"
+ guardian_email "guardian@galaxy.all"
end
trait :minor_with_guardian_photo do
@@ -41,6 +42,7 @@ FactoryBot.define do
guardian_last_name "Doe"
guardian_address "100 Test Lane, New York, 10001"
guardian_phone "123-555-1234"
+ guardian_email "guardian@galaxy.all"
guardian_photo do
path = Rails.root.join("spec", "fixtures", "files", "pratt.jpg")
Rack::Test::UploadedFile.new(path, "image/jpeg")
diff --git a/spec/features/user_managing_appearance_releases_spec.rb b/spec/features/user_managing_appearance_releases_spec.rb
index 28eeb2b..68d9e8e 100644
--- a/spec/features/user_managing_appearance_releases_spec.rb
+++ b/spec/features/user_managing_appearance_releases_spec.rb
@@ -25,7 +25,7 @@ feature 'User managing appearance releases' do
fill_in person_date_of_birth, with: '01/01/1999'
attach_file person_photo_field, file_fixture('person_photo.png'), visible: :all
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
- click_button 'I have read and agree to the above'
+ click_button submit_release_button
expect(page).to have_content(successful_submission_message)
end
@@ -45,6 +45,7 @@ feature 'User managing appearance releases' do
page.check person_is_minor_checkbox
expect(page).to have_content('GUARDIAN INFORMATION')
expect(page).to have_content('GUARDIAN PHOTO')
+ expect(page).to have_content 'Guardian Email'
fill_in guardian_first_name_field, with: 'Guardian'
fill_in guardian_last_name_field, with: 'Name'
@@ -58,7 +59,14 @@ feature 'User managing appearance releases' do
attach_file person_photo_field, file_fixture('person_photo.png'), visible: :all
attach_file guardian_photo_field, file_fixture('hemsworth.jpeg'), visible: :all
draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
- click_button 'I have read and agree to the above'
+
+ fill_in guardian_email_field, with: 'invalid@email'
+ click_button submit_release_button
+ expect(page).to have_content('Guardian email is not an email')
+
+ fill_in guardian_email_field, with: 'valid@email.com'
+ draw_signature file_fixture('signature.png'), 'appearance_release_signature_base64'
+ click_button submit_release_button
expect(page).to have_content(successful_submission_message)
end
@@ -249,6 +257,7 @@ feature 'User managing appearance releases' do
expect(pdf_body).to have_content('TAGS')
expect(pdf_body).to have_content('Woman')
expect(pdf_body).to have_content('Brunette')
+ expect(pdf_body).not_to have_content('Guardian Email')
end
scenario 'viewing contract PDF for a minor without guardian photo' do
@@ -262,8 +271,10 @@ feature 'User managing appearance releases' do
expect(pdf_filename).to include(appearance_release.filename_suffix.parameterize)
expect(pdf_body).to have_content(appearance_release.name)
expect(pdf_body).to have_content(appearance_release.guardian_name)
+ expect(pdf_body).to have_content(appearance_release.guardian_email)
expect(pdf_body).to have_content photos_heading.upcase
expect(pdf_body).to have_content(appearance_release.photo.filename.to_s)
+ expect(pdf_body).to have_content('Guardian Email')
end
scenario 'viewing contract PDF for a minor with guardian photo' do
@@ -277,9 +288,11 @@ feature 'User managing appearance releases' do
expect(pdf_filename).to include(appearance_release.filename_suffix.parameterize)
expect(pdf_body).to have_content(appearance_release.name)
expect(pdf_body).to have_content(appearance_release.guardian_name)
+ expect(pdf_body).to have_content(appearance_release.guardian_email)
expect(pdf_body).to have_content photos_heading(2).upcase
expect(pdf_body).to have_content(appearance_release.photo.filename.to_s)
expect(pdf_body).to have_content(appearance_release.guardian_photo.filename.to_s)
+ expect(pdf_body).to have_content('Guardian Email')
end
scenario 'deleting a release', js: true do
@@ -470,6 +483,10 @@ feature 'User managing appearance releases' do
'Guardian phone'
end
+ def guardian_email_field
+ 'Guardian email'
+ end
+
def guardian_photo_field
'appearance_release[guardian_photo]'
end
@@ -518,6 +535,10 @@ feature 'User managing appearance releases' do
'Import Release'
end
+ def submit_release_button
+ 'I have read and agree to the above'
+ end
+
def submit_update_button
'Save Changes'
end