From 6d62caa96afad2bc67598a3a3c96b0db4ccedd5f Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 18:40:39 +0200 Subject: [PATCH 1/3] add required label to all location release fields --- .../public/location_releases/new.html.erb | 22 +++++++++---------- app/views/shared/_address_fields.html.erb | 9 ++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/app/views/public/location_releases/new.html.erb b/app/views/public/location_releases/new.html.erb index b93ffa0..d9855a1 100644 --- a/app/views/public/location_releases/new.html.erb +++ b/app/views/public/location_releases/new.html.erb @@ -17,21 +17,21 @@
<%= form.text_field :name, required: true, wrapper_class: "col-12" %>
- <%= render "shared/address_fields", form: form, subject: "" %> + <%= render "shared/address_fields", form: form, subject: "", required: true %> <% end %>
<%= card_field_set_tag t(".contact_info.heading") do %>
- <%= form.text_field :person_first_name, wrapper_class: "col-sm-6" %> - <%= form.text_field :person_last_name, wrapper_class: "col-sm-6" %> - <%= form.phone_field :person_phone, wrapper_class: "col-sm-6" %> - <%= form.email_field :person_email, wrapper_class: "col-sm-6" %> - <%= form.text_field :person_company, wrapper_class: "col-sm-6" %> - <%= form.text_field :person_title, wrapper_class: "col-sm-6" %> + <%= form.text_field :person_first_name, required: true, wrapper_class: "col-sm-6" %> + <%= form.text_field :person_last_name, required: true, wrapper_class: "col-sm-6" %> + <%= form.phone_field :person_phone, required: true, wrapper_class: "col-sm-6" %> + <%= form.email_field :person_email, required: true, wrapper_class: "col-sm-6" %> + <%= form.text_field :person_company, required: true, wrapper_class: "col-sm-6" %> + <%= form.text_field :person_title, required: true, wrapper_class: "col-sm-6" %>
- <%= render "shared/address_fields", form: form, subject: "person" %> + <%= render "shared/address_fields", form: form, subject: "person", required: true %> <% end %>
@@ -39,9 +39,9 @@ <%= card_field_set_tag t(".filming_info.heading") do %>
- <%= form.text_field :filming_started_on, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %> - <%= form.text_field :filming_ended_on, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %> - <%= form.text_field :filming_hours, wrapper_class: "col-sm-12" %> + <%= form.text_field :filming_started_on, required: true, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %> + <%= form.text_field :filming_ended_on, required: true, wrapper_class: "col-sm-6", class: "datepicker-control", readonly: true %> + <%= form.text_field :filming_hours, required: true, wrapper_class: "col-sm-12" %>
<% end %> diff --git a/app/views/shared/_address_fields.html.erb b/app/views/shared/_address_fields.html.erb index 6346517..51cda48 100644 --- a/app/views/shared/_address_fields.html.erb +++ b/app/views/shared/_address_fields.html.erb @@ -1,13 +1,14 @@ <% field_name_prefix = subject.present? ? "#{subject}_" : "" %> +<% required = required || false %>
- <%= form.text_field "#{field_name_prefix}address_street1", wrapper_class: "col-sm-6" %> + <%= form.text_field "#{field_name_prefix}address_street1", required: required, wrapper_class: "col-sm-6" %> <%= form.text_field "#{field_name_prefix}address_street2", wrapper_class: "col-sm-6" %>
- <%= form.text_field "#{field_name_prefix}address_city", wrapper_class: "col-sm-6" %> - <%= form.text_field "#{field_name_prefix}address_state", wrapper_class: "col-sm-3" %> - <%= form.text_field "#{field_name_prefix}address_zip", wrapper_class: "col-sm-3" %> + <%= form.text_field "#{field_name_prefix}address_city", required: required, wrapper_class: "col-sm-6" %> + <%= form.text_field "#{field_name_prefix}address_state", required: required, wrapper_class: "col-sm-3" %> + <%= form.text_field "#{field_name_prefix}address_zip", required: required, wrapper_class: "col-sm-3" %>
<%= form.form_group "#{field_name_prefix}address_country" do %> <%= form.label "#{field_name_prefix}address_country" %> -- 2.47.3 From 021ac7ffc6605143517d9d28cfa67c201ed5adeb Mon Sep 17 00:00:00 2001 From: bilal Date: Thu, 11 Jun 2020 21:52:14 +0200 Subject: [PATCH 2/3] make all location release fields required for native release --- app/models/location_release.rb | 7 +- .../location_releases_controller_spec.rb | 52 +++++++++---- spec/factories/location_releases.rb | 26 +++++++ .../user_managing_location_releases_spec.rb | 73 ++++++++++++++++++- spec/models/location_release_spec.rb | 22 +++++- 5 files changed, 164 insertions(+), 16 deletions(-) diff --git a/app/models/location_release.rb b/app/models/location_release.rb index a5b6a02..913201b 100644 --- a/app/models/location_release.rb +++ b/app/models/location_release.rb @@ -36,7 +36,12 @@ class LocationRelease < ApplicationRecord validate :end_date_after_start_date with_options on: :native do - validates :person_first_name, :person_last_name, presence: true + validates :address_street1, :address_city, :address_state, :address_zip, :address_country, + :person_first_name, :person_last_name, + :person_phone, :person_email, :person_company, :person_title, + :person_address_street1, :person_address_city, :person_address_state, + :person_address_zip, :person_address_country, + :filming_started_on, :filming_ended_on, :filming_hours, presence: true validates :signature, attached: true end diff --git a/spec/controllers/public/location_releases_controller_spec.rb b/spec/controllers/public/location_releases_controller_spec.rb index af10c12..5dfd904 100644 --- a/spec/controllers/public/location_releases_controller_spec.rb +++ b/spec/controllers/public/location_releases_controller_spec.rb @@ -19,9 +19,9 @@ describe Public::LocationReleasesController do it "logs analytics" do contract_template = create(:contract_template, project: project) - expect { + expect do post :create, params: { account_id: project.account.to_param, project_id: project, contract_template_id: contract_template, location_release: location_release_params } - }.to( + end.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") ) @@ -31,28 +31,54 @@ describe Public::LocationReleasesController do contract_template = create(:contract_template, project: project) sign_in(user) - post :create, params: { account_id: user.primary_account.to_param, project_id: project, contract_template_id: contract_template, location_release: { person_address_city: "Albuquerque", filming_started_on: '02/02/02', filming_ended_on: '01/01/02' } } + expect do + post :create, params: { + account_id: user.primary_account.to_param, + project_id: project, + contract_template_id: contract_template, + location_release: attributes_for(:empty_location_release) + } + end.not_to change(LocationRelease, :count) body = CGI.unescape_html(response.body) expect(body).to match /Name can't be blank/ - expect(body).to match />can't be blank Date: Fri, 12 Jun 2020 02:42:50 +0200 Subject: [PATCH 3/3] fix specs related to location release --- .../api/releases_controller_spec.rb | 24 ++++++++- .../user_managing_location_releases_spec.rb | 54 +++++++++---------- spec/requests/api_spec.rb | 40 ++++++++++++++ 3 files changed, 88 insertions(+), 30 deletions(-) diff --git a/spec/controllers/api/releases_controller_spec.rb b/spec/controllers/api/releases_controller_spec.rb index f72496b..48eafa0 100644 --- a/spec/controllers/api/releases_controller_spec.rb +++ b/spec/controllers/api/releases_controller_spec.rb @@ -86,10 +86,32 @@ releases.each do |release| io: small_photo, filename: 'photo1.jpg' }] - } } + if release[:type] == :location_release + additional_params = { + address_street1: 'Dummy St.', + address_city: 'Dummy City', + address_state: 'Dummy State', + address_zip: '12121', + address_country: 'US', + person_email: 'mail@mail.com', + person_company: 'Dummy Company Inc.', + person_title: 'mr.', + person_address_street1: 'Dummy St. 2', + person_address_city: 'Dummy City 2', + person_address_state: 'Dummy State 2', + person_address_zip: '1111111', + person_address_country: 'US', + filming_ended_on: DateTime.now, + filming_started_on: '01/02/20', + filming_hours: '04-20' + } + + @parameters[release[:type]].merge!(additional_params) + end + sign_in_to_api(current_user) end diff --git a/spec/features/user_managing_location_releases_spec.rb b/spec/features/user_managing_location_releases_spec.rb index c570478..0db5fbf 100644 --- a/spec/features/user_managing_location_releases_spec.rb +++ b/spec/features/user_managing_location_releases_spec.rb @@ -21,26 +21,7 @@ feature "User managing location releases" do expect(page).not_to have_content submitted_release_notice by "filling out the form" do - fill_in location_name_field, with: "Benny's Burritos" - fill_in address_street1_field, with: "100 Broadway" - fill_in address_city_field, with: "D" - fill_in address_state_field, with: "CA" - fill_in address_zip_field, with: "123" - fill_in person_first_name_field, with: "Jane" - fill_in person_last_name_field, with: "Doe" - fill_in person_phone_field, with: "555-555-5555" - fill_in person_email_field, with: "jane.doe@test.com" - fill_in person_company_field, with: "Inc" - fill_in person_title_field, with: "Mrs." - fill_in person_address_street1_field, with: "100 Broadway" - fill_in person_address_city_field, with: "D" - fill_in person_address_state_field, with: "CA" - fill_in person_address_zip_field, with: "123" - fill_filming_started_on_field - fill_filming_ended_on_field - fill_in filming_hours_field, with: "04:00 - 22:00" - - draw_signature file_fixture("signature.png"), "location_release_signature_base64" + fill_all_form_fields end click_button submit_release_button @@ -53,15 +34,7 @@ feature "User managing location releases" do visit new_account_project_contract_template_location_release_path(project.account, project, contract_template) - fill_in location_name_field, with: "Benny's Burritos" - fill_in person_first_name_field, with: "Jane" - fill_in person_last_name_field, with: "Doe" - fill_in person_phone_field, with: "555-555-5555" - fill_in person_email_field, with: "jane.doe@test.com" - fill_in person_address_street1_field, with: "100 Broadway" - fill_in filming_hours_field, with: "04:00 - 22:00" - draw_signature file_fixture("signature.png"), "location_release_signature_base64" - + fill_all_form_fields drop_file Rails.root.join(file_fixture("location_photo.png")), type: :dropzone click_button submit_release_button @@ -238,6 +211,29 @@ feature "User managing location releases" do private + def fill_all_form_fields + fill_in location_name_field, with: "Benny's Burritos" + fill_in address_street1_field, with: "100 Broadway" + fill_in address_city_field, with: "D" + fill_in address_state_field, with: "CA" + fill_in address_zip_field, with: "123" + fill_in person_first_name_field, with: "Jane" + fill_in person_last_name_field, with: "Doe" + fill_in person_phone_field, with: "555-555-5555" + fill_in person_email_field, with: "jane.doe@test.com" + fill_in person_company_field, with: "Inc" + fill_in person_title_field, with: "Mrs." + fill_in person_address_street1_field, with: "100 Broadway" + fill_in person_address_city_field, with: "D" + fill_in person_address_state_field, with: "CA" + fill_in person_address_zip_field, with: "123" + fill_filming_started_on_field + fill_filming_ended_on_field + fill_in filming_hours_field, with: "04:00 - 22:00" + + draw_signature file_fixture("signature.png"), "location_release_signature_base64" + end + def country_field_value find_field("location_release[person_address_country]").value end diff --git a/spec/requests/api_spec.rb b/spec/requests/api_spec.rb index 0573da4..49b42c1 100644 --- a/spec/requests/api_spec.rb +++ b/spec/requests/api_spec.rb @@ -150,9 +150,49 @@ describe "IOS App Support API" do expect(response.body).to match /Person/ end + it 'creates location release' do + release = releases.third + release_json = { "data" => { + "type" => "location_release", + "attributes" => { + "name" => "Test Premises", + "address_street1" => "Dummy St.", + "address_city" => "Dummy City", + "address_state" => "Dummy State", + "address_zip" => "12121", + "address_country" => "US", + "person_first_name" => "John", + "person_last_name" => "Doe", + "person_phone" => "222223333", + "person_email" => "mail@mail.com", + "person_company" => "Dummy Company Inc.", + "person_title" => "mr.", + "person_address_street1" => "Dummy St. 2", + "person_address_city" => "Dummy City 2", + "person_address_state" => "Dummy State 2", + "person_address_zip" => "1111111", + "person_address_country" => "US", + "filming_ended_on" => DateTime.now, + "filming_started_on" => "01/02/20", + "filming_hours" => "04-20", + "signature" => "#{signature_base64}" + } + } }.to_json + + post "/api/v1/contract_templates/#{template.id}/#{release[:type].to_s.pluralize}", params: release_json, headers: required_headers(current_user) + + json = JSON.parse(response.body) + + expect(response.status).to eq 201 + expect(json["data"]["attributes"].keys.length).to be > 1 + expect(response.body).to match /John/ + expect(response.body).to match /Doe/ + end + it 'creates talent, material and location releases' do releases.each do |release| next if release[:type] == :appearance_release + next if release[:type] == :location_release release_json = { "data" => { "type" => release[:type].to_s, -- 2.47.3