From c42e71150f14a71ae00a223128ce7d2edfa5c60e Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Wed, 14 Sep 2022 11:15:27 -0700 Subject: [PATCH 01/15] Added instagram field and checkbox to social media section --- .../partners/profiles_controller.rb | 2 + app/models/organization.rb | 48 ++++++++++--------- app/models/partners/partner.rb | 4 ++ .../profiles/edit/_media_information.html.erb | 2 + .../profiles/show/_media_information.html.erb | 3 ++ ...33605_add_instagram_to_partner_profiles.rb | 5 ++ ...cial_media_presence_to_partner_profiles.rb | 5 ++ db/schema.rb | 4 +- spec/factories/organizations.rb | 48 ++++++++++--------- spec/models/organization_spec.rb | 48 ++++++++++--------- spec/models/partners/partner_spec.rb | 4 ++ 11 files changed, 103 insertions(+), 70 deletions(-) create mode 100644 db/migrate/20220913233605_add_instagram_to_partner_profiles.rb create mode 100644 db/migrate/20220914000010_add_no_social_media_presence_to_partner_profiles.rb diff --git a/app/controllers/partners/profiles_controller.rb b/app/controllers/partners/profiles_controller.rb index 463183de40..59db671061 100644 --- a/app/controllers/partners/profiles_controller.rb +++ b/app/controllers/partners/profiles_controller.rb @@ -31,6 +31,8 @@ def partner_params :website, :facebook, :twitter, + :instagram, + :no_social_media_presence, :founded, :form_990, :proof_of_form_990, diff --git a/app/models/organization.rb b/app/models/organization.rb index 35426051dc..7a51449311 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -2,29 +2,31 @@ # # Table name: organizations # -# id :integer not null, primary key -# city :string -# deadline_day :integer -# default_storage_location :integer -# distribute_monthly :boolean default(FALSE), not null -# email :string -# intake_location :integer -# invitation_text :text -# latitude :float -# longitude :float -# name :string -# partner_form_fields :text default([]), is an Array -# reminder_day :integer -# repackage_essentials :boolean default(FALSE), not null -# short_name :string -# state :string -# street :string -# url :string -# zipcode :string -# created_at :datetime not null -# updated_at :datetime not null -# account_request_id :integer -# ndbn_member_id :bigint +# id :integer not null, primary key +# city :string +# deadline_day :integer +# default_storage_location :integer +# distribute_monthly :boolean default(FALSE), not null +# email :string +# enable_child_based_requests :boolean default(TRUE), not null +# enable_individual_requests :boolean default(TRUE), not null +# intake_location :integer +# invitation_text :text +# latitude :float +# longitude :float +# name :string +# partner_form_fields :text default([]), is an Array +# reminder_day :integer +# repackage_essentials :boolean default(FALSE), not null +# short_name :string +# state :string +# street :string +# url :string +# zipcode :string +# created_at :datetime not null +# updated_at :datetime not null +# account_request_id :integer +# ndbn_member_id :bigint # class Organization < ApplicationRecord diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index 27f27f265d..a2b3fd5b3a 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -17,6 +17,8 @@ # describe_storage_space :text # distribution_times :string # distributor_type :string +# enable_child_based_requests :boolean default(TRUE), not null +# enable_individual_requests :boolean default(TRUE), not null # essentials_budget :string # essentials_funding_source :string # essentials_use :string @@ -30,9 +32,11 @@ # greater_2_times_fpl :integer # income_requirement_desc :boolean # income_verification :boolean +# instagram :string # more_docs_required :string # name :string # new_client_times :string +# no_social_media_presence :boolean # other_agency_type :string # partner_status :string default("pending") # pick_up_email :string diff --git a/app/views/partners/profiles/edit/_media_information.html.erb b/app/views/partners/profiles/edit/_media_information.html.erb index eda3dd2924..52d6fb3bc6 100644 --- a/app/views/partners/profiles/edit/_media_information.html.erb +++ b/app/views/partners/profiles/edit/_media_information.html.erb @@ -10,6 +10,8 @@ <%= form.input :website, label: "Website", class: "form-control", wrapper: :input_group %> <%= form.input :facebook, label: "Facebook", class: "form-control", wrapper: :input_group %> <%= form.input :twitter, label: "Twitter", class: "form-control", wrapper: :input_group %> + <%= form.input :instagram, label: "Instagram", class: "form-control", wrapper: :input_group %> + <%= form.input :no_social_media_presence, label: "No Social Media Presence", as: :boolean, class: "form-control", wrapper: :input_group %> diff --git a/app/views/partners/profiles/show/_media_information.html.erb b/app/views/partners/profiles/show/_media_information.html.erb index 76e6a64a85..6374ca55e3 100644 --- a/app/views/partners/profiles/show/_media_information.html.erb +++ b/app/views/partners/profiles/show/_media_information.html.erb @@ -10,6 +10,9 @@
Twitter
<%= partner.twitter %>
+ +
Instagram
+
<%= partner.instagram %>
diff --git a/db/migrate/20220913233605_add_instagram_to_partner_profiles.rb b/db/migrate/20220913233605_add_instagram_to_partner_profiles.rb new file mode 100644 index 0000000000..1584f0d799 --- /dev/null +++ b/db/migrate/20220913233605_add_instagram_to_partner_profiles.rb @@ -0,0 +1,5 @@ +class AddInstagramToPartnerProfiles < ActiveRecord::Migration[7.0] + def change + add_column :partner_profiles, :instagram, :string + end +end diff --git a/db/migrate/20220914000010_add_no_social_media_presence_to_partner_profiles.rb b/db/migrate/20220914000010_add_no_social_media_presence_to_partner_profiles.rb new file mode 100644 index 0000000000..d43ae4ebfa --- /dev/null +++ b/db/migrate/20220914000010_add_no_social_media_presence_to_partner_profiles.rb @@ -0,0 +1,5 @@ +class AddNoSocialMediaPresenceToPartnerProfiles < ActiveRecord::Migration[7.0] + def change + add_column :partner_profiles, :no_social_media_presence, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index 91bfc10853..ad488779bf 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_08_19_192440) do +ActiveRecord::Schema[7.0].define(version: 2022_09_14_000010) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -514,6 +514,8 @@ t.string "status_in_diaper_base" t.boolean "enable_child_based_requests", default: true, null: false t.boolean "enable_individual_requests", default: true, null: false + t.string "instagram" + t.boolean "no_social_media_presence" t.index ["essentials_bank_id"], name: "index_partners_on_essentials_bank_id" end diff --git a/spec/factories/organizations.rb b/spec/factories/organizations.rb index 6a502fbc3d..1cee1c79bf 100644 --- a/spec/factories/organizations.rb +++ b/spec/factories/organizations.rb @@ -2,29 +2,31 @@ # # Table name: organizations # -# id :integer not null, primary key -# city :string -# deadline_day :integer -# default_storage_location :integer -# distribute_monthly :boolean default(FALSE), not null -# email :string -# intake_location :integer -# invitation_text :text -# latitude :float -# longitude :float -# name :string -# partner_form_fields :text default([]), is an Array -# reminder_day :integer -# repackage_essentials :boolean default(FALSE), not null -# short_name :string -# state :string -# street :string -# url :string -# zipcode :string -# created_at :datetime not null -# updated_at :datetime not null -# account_request_id :integer -# ndbn_member_id :bigint +# id :integer not null, primary key +# city :string +# deadline_day :integer +# default_storage_location :integer +# distribute_monthly :boolean default(FALSE), not null +# email :string +# enable_child_based_requests :boolean default(TRUE), not null +# enable_individual_requests :boolean default(TRUE), not null +# intake_location :integer +# invitation_text :text +# latitude :float +# longitude :float +# name :string +# partner_form_fields :text default([]), is an Array +# reminder_day :integer +# repackage_essentials :boolean default(FALSE), not null +# short_name :string +# state :string +# street :string +# url :string +# zipcode :string +# created_at :datetime not null +# updated_at :datetime not null +# account_request_id :integer +# ndbn_member_id :bigint # FactoryBot.define do diff --git a/spec/models/organization_spec.rb b/spec/models/organization_spec.rb index fc6bef12b6..064e5e665f 100644 --- a/spec/models/organization_spec.rb +++ b/spec/models/organization_spec.rb @@ -2,29 +2,31 @@ # # Table name: organizations # -# id :integer not null, primary key -# city :string -# deadline_day :integer -# default_storage_location :integer -# distribute_monthly :boolean default(FALSE), not null -# email :string -# intake_location :integer -# invitation_text :text -# latitude :float -# longitude :float -# name :string -# partner_form_fields :text default([]), is an Array -# reminder_day :integer -# repackage_essentials :boolean default(FALSE), not null -# short_name :string -# state :string -# street :string -# url :string -# zipcode :string -# created_at :datetime not null -# updated_at :datetime not null -# account_request_id :integer -# ndbn_member_id :bigint +# id :integer not null, primary key +# city :string +# deadline_day :integer +# default_storage_location :integer +# distribute_monthly :boolean default(FALSE), not null +# email :string +# enable_child_based_requests :boolean default(TRUE), not null +# enable_individual_requests :boolean default(TRUE), not null +# intake_location :integer +# invitation_text :text +# latitude :float +# longitude :float +# name :string +# partner_form_fields :text default([]), is an Array +# reminder_day :integer +# repackage_essentials :boolean default(FALSE), not null +# short_name :string +# state :string +# street :string +# url :string +# zipcode :string +# created_at :datetime not null +# updated_at :datetime not null +# account_request_id :integer +# ndbn_member_id :bigint # RSpec.describe Organization, type: :model do diff --git a/spec/models/partners/partner_spec.rb b/spec/models/partners/partner_spec.rb index 746facb5a0..a687996228 100644 --- a/spec/models/partners/partner_spec.rb +++ b/spec/models/partners/partner_spec.rb @@ -17,6 +17,8 @@ # describe_storage_space :text # distribution_times :string # distributor_type :string +# enable_child_based_requests :boolean default(TRUE), not null +# enable_individual_requests :boolean default(TRUE), not null # essentials_budget :string # essentials_funding_source :string # essentials_use :string @@ -30,9 +32,11 @@ # greater_2_times_fpl :integer # income_requirement_desc :boolean # income_verification :boolean +# instagram :string # more_docs_required :string # name :string # new_client_times :string +# no_social_media_presence :boolean # other_agency_type :string # partner_status :string default("pending") # pick_up_email :string From 79841f4952fc988062f22192b47449f97445397a Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Wed, 14 Sep 2022 16:40:35 -0700 Subject: [PATCH 02/15] Added validation for the checkbox on the social media form --- app/models/partners/partner.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index a2b3fd5b3a..efd214b5e5 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,6 +94,8 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents + validates :no_social_media_presence, acceptance: {message: "You must either check this box or have at least one social media platform filled out."}, if: :has_no_social_media? + self.ignored_columns = %w[ evidence_based_description program_client_improvement @@ -181,6 +183,10 @@ def impact_metrics private + def has_no_social_media? + website.blank? && twitter.blank? && facebook.blank? && instagram.blank? + end + def families_served_count families.count end From e6b10ef03ee6a07d2e4e1a131be5c84dd43872a0 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Wed, 14 Sep 2022 18:41:40 -0700 Subject: [PATCH 03/15] Small wording change --- app/models/partners/partner.rb | 2 +- spec/models/partner_spec.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index efd214b5e5..78f72237c5 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,7 +94,7 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents - validates :no_social_media_presence, acceptance: {message: "You must either check this box or have at least one social media platform filled out."}, if: :has_no_social_media? + validates :no_social_media_presence, acceptance: {message: "must either be checked or you need to have at least one social media platform filled out."}, if: :has_no_social_media? self.ignored_columns = %w[ evidence_based_description diff --git a/spec/models/partner_spec.rb b/spec/models/partner_spec.rb index d343325c84..f41c1247a1 100644 --- a/spec/models/partner_spec.rb +++ b/spec/models/partner_spec.rb @@ -28,6 +28,10 @@ end context "Validations >" do + it "" do + + end + it "must belong to an organization" do expect(build(:partner, organization_id: nil)).not_to be_valid end From aa70d7056cd5348488da72f01413828dea68827e Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Fri, 16 Sep 2022 13:57:02 -0700 Subject: [PATCH 04/15] Added some tests --- spec/models/partner_spec.rb | 4 ---- spec/models/partners/partner_spec.rb | 26 ++++++++++++++++++++++++++ spec/system/dashboard_system_spec.rb | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/spec/models/partner_spec.rb b/spec/models/partner_spec.rb index f41c1247a1..d343325c84 100644 --- a/spec/models/partner_spec.rb +++ b/spec/models/partner_spec.rb @@ -28,10 +28,6 @@ end context "Validations >" do - it "" do - - end - it "must belong to an organization" do expect(build(:partner, organization_id: nil)).not_to be_valid end diff --git a/spec/models/partners/partner_spec.rb b/spec/models/partners/partner_spec.rb index a687996228..4dc13c345e 100644 --- a/spec/models/partners/partner_spec.rb +++ b/spec/models/partners/partner_spec.rb @@ -106,6 +106,32 @@ end end + describe "validations" do + context "no social media presence and the checkbox isn't checked" do + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: false) } + + it "should not be valid" do + expect(partner.valid?).to eq(false) + end + end + + context "no social media presence and the checkbox is checked" do + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: true) } + + it "should be valid" do + expect(partner.valid?).to eq(true) + end + end + + context "has social media presence and the checkbox is unchecked" do + let(:partner) { FactoryBot.build(:partners_partner, website: "website URL", twitter: "", facebook: "", instagram: "instagram URL", no_social_media_presence: false) } + + it "should be valid" do + expect(partner.valid?).to eq(true) + end + end + end + describe '#verified?' do subject { partner.verified? } let(:partner) { FactoryBot.build(:partners_partner, partner_status: partner_status) } diff --git a/spec/system/dashboard_system_spec.rb b/spec/system/dashboard_system_spec.rb index b3fbaad2a7..19a18582b2 100644 --- a/spec/system/dashboard_system_spec.rb +++ b/spec/system/dashboard_system_spec.rb @@ -379,7 +379,7 @@ def create_next_product_drive_donation(donation_date:) drive = @product_drives.sample create :product_drive_donation, :with_items, product_drive: drive.drive, product_drive_participant: @product_drive_participant, issued_at: donation_date, item_quantity: quantity_in_donation, storage_location: storage_location, organization: @organization, - money_raised: @money_raised_on_each_product_drive + money_raised: @money_raised_on_each_product_drive OpenStruct.new drive_name: drive.name, quantity: quantity_in_donation, money_raised: @money_raised_on_each_product_drive end From fc3e0b35210432162ea2ba1675cf92a896c49f5f Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Sat, 17 Sep 2022 20:05:33 -0700 Subject: [PATCH 05/15] Added some more tests --- spec/models/partners/partner_spec.rb | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/spec/models/partners/partner_spec.rb b/spec/models/partners/partner_spec.rb index 4dc13c345e..a5f964bb52 100644 --- a/spec/models/partners/partner_spec.rb +++ b/spec/models/partners/partner_spec.rb @@ -124,9 +124,30 @@ end context "has social media presence and the checkbox is unchecked" do - let(:partner) { FactoryBot.build(:partners_partner, website: "website URL", twitter: "", facebook: "", instagram: "instagram URL", no_social_media_presence: false) } + let(:partner) { FactoryBot.build(:partners_partner, no_social_media_presence: false) } - it "should be valid" do + it "with just a website it should be valid" do + partner.update(website: "some website URL", twitter: "", facebook: "", instagram: "") + expect(partner.valid?).to eq(true) + end + + it "with just twitter it should be valid" do + partner.update(website: "", twitter: "some twitter URL", facebook: "", instagram: "") + expect(partner.valid?).to eq(true) + end + + it "with just facebook it should be valid" do + partner.update(website: "", twitter: "", facebook: "some facebook URL", instagram: "") + expect(partner.valid?).to eq(true) + end + + it "with just instagram it should be valid" do + partner.update(website: "", twitter: "", facebook: "", instagram: "some instagram URL") + expect(partner.valid?).to eq(true) + end + + it "with every social media option it should be valid" do + partner.update(website: "some website URL", twitter: "some twitter URL", facebook: "some facebook URL", instagram: "some instagram URL") expect(partner.valid?).to eq(true) end end From 274e4a5d1da2acc4a55361dfa38777c45ddc0b77 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Tue, 20 Sep 2022 23:16:01 -0700 Subject: [PATCH 06/15] Bug fix --- app/models/partners/partner.rb | 6 +++--- spec/models/partners/partner_spec.rb | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index 78f72237c5..cc21f09d44 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,7 +94,7 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents - validates :no_social_media_presence, acceptance: {message: "must either be checked or you need to have at least one social media platform filled out."}, if: :has_no_social_media? + validates :no_social_media_presence, acceptance: {message: "must either be checked or you need to have at least one social media platform filled out."}, if: :verified_and_has_no_social_media? self.ignored_columns = %w[ evidence_based_description @@ -183,8 +183,8 @@ def impact_metrics private - def has_no_social_media? - website.blank? && twitter.blank? && facebook.blank? && instagram.blank? + def verified_and_has_no_social_media? + website.blank? && twitter.blank? && facebook.blank? && instagram.blank? && verified? end def families_served_count diff --git a/spec/models/partners/partner_spec.rb b/spec/models/partners/partner_spec.rb index a5f964bb52..b5dde74cae 100644 --- a/spec/models/partners/partner_spec.rb +++ b/spec/models/partners/partner_spec.rb @@ -106,9 +106,9 @@ end end - describe "validations" do + describe "social media info validation for verified partners" do context "no social media presence and the checkbox isn't checked" do - let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: false) } + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: false, partner_status: 'verified') } it "should not be valid" do expect(partner.valid?).to eq(false) @@ -116,7 +116,7 @@ end context "no social media presence and the checkbox is checked" do - let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: true) } + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: true, partner_status: 'verified') } it "should be valid" do expect(partner.valid?).to eq(true) @@ -124,7 +124,7 @@ end context "has social media presence and the checkbox is unchecked" do - let(:partner) { FactoryBot.build(:partners_partner, no_social_media_presence: false) } + let(:partner) { FactoryBot.build(:partners_partner, no_social_media_presence: false, partner_status: 'verified') } it "with just a website it should be valid" do partner.update(website: "some website URL", twitter: "", facebook: "", instagram: "") From 7fc935c76e4dcd32dba986af0e6316aaa72e0bc2 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Mon, 26 Sep 2022 18:37:25 -0700 Subject: [PATCH 07/15] Changed the social media validation error message --- app/controllers/partners/profiles_controller.rb | 6 ++++++ app/models/partners/partner.rb | 2 +- .../partners/profiles/edit/_media_information.html.erb | 5 +++++ config/database.yml | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/controllers/partners/profiles_controller.rb b/app/controllers/partners/profiles_controller.rb index 59db671061..364cd52e61 100644 --- a/app/controllers/partners/profiles_controller.rb +++ b/app/controllers/partners/profiles_controller.rb @@ -9,12 +9,18 @@ def update flash[:success] = "Details were successfully updated." redirect_to partners_profile_path else + handle_social_media_error_message render :edit end end private + def handle_social_media_error_message + current_partner.errors.delete(:no_social_media_presence) + current_partner.errors.add :base, message: "You must either provide a social media site or indicate that you have no social media presence" + end + def partner_params params.require(:partners_partner).permit( :name, diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index cc21f09d44..213a8298d1 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,7 +94,7 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents - validates :no_social_media_presence, acceptance: {message: "must either be checked or you need to have at least one social media platform filled out."}, if: :verified_and_has_no_social_media? + validates :no_social_media_presence, acceptance: true, if: :verified_and_has_no_social_media? self.ignored_columns = %w[ evidence_based_description diff --git a/app/views/partners/profiles/edit/_media_information.html.erb b/app/views/partners/profiles/edit/_media_information.html.erb index 52d6fb3bc6..2f42e75352 100644 --- a/app/views/partners/profiles/edit/_media_information.html.erb +++ b/app/views/partners/profiles/edit/_media_information.html.erb @@ -12,6 +12,11 @@ <%= form.input :twitter, label: "Twitter", class: "form-control", wrapper: :input_group %> <%= form.input :instagram, label: "Instagram", class: "form-control", wrapper: :input_group %> <%= form.input :no_social_media_presence, label: "No Social Media Presence", as: :boolean, class: "form-control", wrapper: :input_group %> + <% partner.errors.each do |error| %> + <% if error.message == "You must either provide a social media site or indicate that you have no social media presence" %> +
<%= error.message %>
+ <% end %> + <% end %> diff --git a/config/database.yml b/config/database.yml index c9fb9e079e..895b92727d 100644 --- a/config/database.yml +++ b/config/database.yml @@ -4,7 +4,7 @@ default: &default host: localhost database: diaper_dev username: <%= ENV.fetch("PG_USERNAME", 'postgres') %> - password: <%= ENV.fetch("PG_PASSWORD", nil) %> + password: <%= ENV.fetch("PG_PASSWORD", 'password') %> pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 From eb8857dc54fe9f55cdfa66cf4f8529c644753730 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Thu, 29 Sep 2022 19:23:24 -0700 Subject: [PATCH 08/15] Added a test for the custom error message --- .../partners/profiles_controller.rb | 2 +- config/database.yml | 2 +- .../partners/edit_profile_system_spec.rb | 24 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 spec/system/partners/edit_profile_system_spec.rb diff --git a/app/controllers/partners/profiles_controller.rb b/app/controllers/partners/profiles_controller.rb index 364cd52e61..191b4d5987 100644 --- a/app/controllers/partners/profiles_controller.rb +++ b/app/controllers/partners/profiles_controller.rb @@ -9,7 +9,7 @@ def update flash[:success] = "Details were successfully updated." redirect_to partners_profile_path else - handle_social_media_error_message + handle_social_media_error_message if current_partner.errors.include?(:no_social_media_presence) render :edit end end diff --git a/config/database.yml b/config/database.yml index 895b92727d..c9fb9e079e 100644 --- a/config/database.yml +++ b/config/database.yml @@ -4,7 +4,7 @@ default: &default host: localhost database: diaper_dev username: <%= ENV.fetch("PG_USERNAME", 'postgres') %> - password: <%= ENV.fetch("PG_PASSWORD", 'password') %> + password: <%= ENV.fetch("PG_PASSWORD", nil) %> pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 diff --git a/spec/system/partners/edit_profile_system_spec.rb b/spec/system/partners/edit_profile_system_spec.rb new file mode 100644 index 0000000000..c3f781e7b8 --- /dev/null +++ b/spec/system/partners/edit_profile_system_spec.rb @@ -0,0 +1,24 @@ +RSpec.describe "edit profile page", type: :system do + let!(:partner) { FactoryBot.create(:partner) } + let(:partner_user) { partner.primary_partner_user } + + before do + partner.profile.update(partner_status: :verified) + login_as(partner_user) + visit edit_partners_profile_path + end + + describe "with no social media platfrom filled out and the checkbox is unchecked" do + it "should display the correct error message", :aggregate_failures do + fill_in "Website", with: "" + fill_in "Facebook", with: "" + fill_in "Twitter", with: "" + fill_in "Instagram", with: "" + uncheck "No Social Media Presence" + click_on "Update Information" + + expect(page).to have_text("You must either provide a social media site or indicate that you have no social media presence") + expect(page).not_to have_text("No social media presence must be accepted") + end + end +end From 2d4f8f2e4a89b62cdbaa41ede8a921e2c0fcec0d Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Tue, 11 Oct 2022 09:57:45 -0700 Subject: [PATCH 09/15] Changed error message --- .../partners/profiles_controller.rb | 6 ----- app/models/partners/partner.rb | 2 +- .../profiles/edit/_media_information.html.erb | 5 ---- .../partners/edit_profile_system_spec.rb | 24 ------------------- 4 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 spec/system/partners/edit_profile_system_spec.rb diff --git a/app/controllers/partners/profiles_controller.rb b/app/controllers/partners/profiles_controller.rb index 478f3bf598..d6cea5d1ce 100644 --- a/app/controllers/partners/profiles_controller.rb +++ b/app/controllers/partners/profiles_controller.rb @@ -9,18 +9,12 @@ def update flash[:success] = "Details were successfully updated." redirect_to partners_profile_path else - handle_social_media_error_message if current_partner.errors.include?(:no_social_media_presence) render :edit end end private - def handle_social_media_error_message - current_partner.errors.delete(:no_social_media_presence) - current_partner.errors.add :base, message: "You must either provide a social media site or indicate that you have no social media presence" - end - def partner_params params.require(:partners_partner).permit( :name, diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index 213a8298d1..8e64addc00 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,7 +94,7 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents - validates :no_social_media_presence, acceptance: true, if: :verified_and_has_no_social_media? + validates :no_social_media_presence, acceptance: {message: "must be checked if you have not provided any of Website, Twitter, Facebook, or Instagram."}, if: :verified_and_has_no_social_media? self.ignored_columns = %w[ evidence_based_description diff --git a/app/views/partners/profiles/edit/_media_information.html.erb b/app/views/partners/profiles/edit/_media_information.html.erb index 2f42e75352..52d6fb3bc6 100644 --- a/app/views/partners/profiles/edit/_media_information.html.erb +++ b/app/views/partners/profiles/edit/_media_information.html.erb @@ -12,11 +12,6 @@ <%= form.input :twitter, label: "Twitter", class: "form-control", wrapper: :input_group %> <%= form.input :instagram, label: "Instagram", class: "form-control", wrapper: :input_group %> <%= form.input :no_social_media_presence, label: "No Social Media Presence", as: :boolean, class: "form-control", wrapper: :input_group %> - <% partner.errors.each do |error| %> - <% if error.message == "You must either provide a social media site or indicate that you have no social media presence" %> -
<%= error.message %>
- <% end %> - <% end %> diff --git a/spec/system/partners/edit_profile_system_spec.rb b/spec/system/partners/edit_profile_system_spec.rb deleted file mode 100644 index c3f781e7b8..0000000000 --- a/spec/system/partners/edit_profile_system_spec.rb +++ /dev/null @@ -1,24 +0,0 @@ -RSpec.describe "edit profile page", type: :system do - let!(:partner) { FactoryBot.create(:partner) } - let(:partner_user) { partner.primary_partner_user } - - before do - partner.profile.update(partner_status: :verified) - login_as(partner_user) - visit edit_partners_profile_path - end - - describe "with no social media platfrom filled out and the checkbox is unchecked" do - it "should display the correct error message", :aggregate_failures do - fill_in "Website", with: "" - fill_in "Facebook", with: "" - fill_in "Twitter", with: "" - fill_in "Instagram", with: "" - uncheck "No Social Media Presence" - click_on "Update Information" - - expect(page).to have_text("You must either provide a social media site or indicate that you have no social media presence") - expect(page).not_to have_text("No social media presence must be accepted") - end - end -end From f171d31029f47095a1308ae61edabc0a08455f5b Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Fri, 14 Oct 2022 14:00:17 -0700 Subject: [PATCH 10/15] Partner media info list only renders if partner has social media --- .../profiles/show/_media_information.html.erb | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/views/partners/profiles/show/_media_information.html.erb b/app/views/partners/profiles/show/_media_information.html.erb index 6374ca55e3..24c3196d7f 100644 --- a/app/views/partners/profiles/show/_media_information.html.erb +++ b/app/views/partners/profiles/show/_media_information.html.erb @@ -1,18 +1,22 @@
Media Information
-
-
Website
-
<%= partner.website %>
+ <% if partner.no_social_media_presence %> + No Social Media Presence + <% else %> +
+
Website
+
<%= partner.website %>
-
Facebook
-
<%= partner.facebook %>
+
Facebook
+
<%= partner.facebook %>
-
Twitter
-
<%= partner.twitter %>
+
Twitter
+
<%= partner.twitter %>
-
Instagram
-
<%= partner.instagram %>
-
+
Instagram
+
<%= partner.instagram %>
+
+ <% end %>
From 20d8f48b495fadff35743713ec35a118daeb0eb1 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Sat, 15 Oct 2022 17:07:59 -0700 Subject: [PATCH 11/15] Small refactor --- app/models/partners/partner.rb | 6 +++--- spec/models/partners/partner_spec.rb | 8 ++++---- spec/system/partners/approval_process_spec.rb | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/models/partners/partner.rb b/app/models/partners/partner.rb index 8e64addc00..dc320910ab 100644 --- a/app/models/partners/partner.rb +++ b/app/models/partners/partner.rb @@ -94,7 +94,7 @@ class Partner < Base has_one_attached :proof_of_form_990 has_many_attached :documents - validates :no_social_media_presence, acceptance: {message: "must be checked if you have not provided any of Website, Twitter, Facebook, or Instagram."}, if: :verified_and_has_no_social_media? + validates :no_social_media_presence, acceptance: {message: "must be checked if you have not provided any of Website, Twitter, Facebook, or Instagram."}, if: :has_no_social_media? self.ignored_columns = %w[ evidence_based_description @@ -183,8 +183,8 @@ def impact_metrics private - def verified_and_has_no_social_media? - website.blank? && twitter.blank? && facebook.blank? && instagram.blank? && verified? + def has_no_social_media? + website.blank? && twitter.blank? && facebook.blank? && instagram.blank? end def families_served_count diff --git a/spec/models/partners/partner_spec.rb b/spec/models/partners/partner_spec.rb index b5dde74cae..8da0b9ab89 100644 --- a/spec/models/partners/partner_spec.rb +++ b/spec/models/partners/partner_spec.rb @@ -106,9 +106,9 @@ end end - describe "social media info validation for verified partners" do + describe "social media info validation for partners" do context "no social media presence and the checkbox isn't checked" do - let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: false, partner_status: 'verified') } + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: false) } it "should not be valid" do expect(partner.valid?).to eq(false) @@ -116,7 +116,7 @@ end context "no social media presence and the checkbox is checked" do - let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: true, partner_status: 'verified') } + let(:partner) { FactoryBot.build(:partners_partner, website: "", twitter: "", facebook: "", instagram: "", no_social_media_presence: true) } it "should be valid" do expect(partner.valid?).to eq(true) @@ -124,7 +124,7 @@ end context "has social media presence and the checkbox is unchecked" do - let(:partner) { FactoryBot.build(:partners_partner, no_social_media_presence: false, partner_status: 'verified') } + let(:partner) { FactoryBot.build(:partners_partner, no_social_media_presence: false) } it "with just a website it should be valid" do partner.update(website: "some website URL", twitter: "", facebook: "", instagram: "") diff --git a/spec/system/partners/approval_process_spec.rb b/spec/system/partners/approval_process_spec.rb index a038c478b7..720d2b21cb 100644 --- a/spec/system/partners/approval_process_spec.rb +++ b/spec/system/partners/approval_process_spec.rb @@ -36,6 +36,7 @@ fill_in 'Executive Director Phone', with: '8889990000' fill_in 'Executive Director Email', with: 'lorem@example.com' fill_in 'Primary Contact Phone', with: '8889990000' + check 'No Social Media Presence' click_on 'Update Information' assert page.has_content? 'Details were successfully updated.' From 6938b01745aae0de10634b8fbfcf8ed022eea41f Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Sat, 15 Oct 2022 18:53:03 -0700 Subject: [PATCH 12/15] Updated media info section --- .../profiles/show/_media_information.html.erb | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/app/views/partners/profiles/show/_media_information.html.erb b/app/views/partners/profiles/show/_media_information.html.erb index 24c3196d7f..4d9bee8f50 100644 --- a/app/views/partners/profiles/show/_media_information.html.erb +++ b/app/views/partners/profiles/show/_media_information.html.erb @@ -1,22 +1,21 @@
Media Information
- <% if partner.no_social_media_presence %> - No Social Media Presence - <% else %> -
-
Website
-
<%= partner.website %>
+
+
Website
+
<%= partner.website %>
-
Facebook
-
<%= partner.facebook %>
+
Facebook
+
<%= partner.facebook %>
-
Twitter
-
<%= partner.twitter %>
+
Twitter
+
<%= partner.twitter %>
-
Instagram
-
<%= partner.instagram %>
-
- <% end %> +
Instagram
+
<%= partner.instagram %>
+ +
No Social Media Presence
+
<%= humanize_boolean(partner.no_social_media_presence) %>
+
From 185d179a3547c50eb1533f427bd1b8895189dfd1 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Sun, 16 Oct 2022 13:30:59 -0700 Subject: [PATCH 13/15] Added social media fields to views for bank admins --- app/views/profiles/_show.html.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/profiles/_show.html.erb b/app/views/profiles/_show.html.erb index b52b944f7a..b3d3ab02f4 100644 --- a/app/views/profiles/_show.html.erb +++ b/app/views/profiles/_show.html.erb @@ -23,6 +23,8 @@

Website: <%= partner_profile.website %>

Facebook: <%= partner_profile.facebook %>

Twitter: <%= partner_profile.twitter %>

+

Instagram: <%= partner_profile.instagram %>

+

No Social Media Presence: <%= humanize_boolean(partner_profile.no_social_media_presence) %>


<% end %> <% if partner_profile_fields.include?('agency_stability') || partner_profile_fields.empty? %> From f1d1e46ce148b4e0e0d6efa9e537305436d15217 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Sun, 16 Oct 2022 13:54:45 -0700 Subject: [PATCH 14/15] Fixed linting issue --- spec/models/organization_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/organization_spec.rb b/spec/models/organization_spec.rb index 532ca5e65c..6eaee1d6cf 100644 --- a/spec/models/organization_spec.rb +++ b/spec/models/organization_spec.rb @@ -60,7 +60,7 @@ user.add_role(:volunteer, organization) end - it 'should returns users without duplications' do + it 'should returns users without duplications' do expect(subject).to eq([user]) end end From 04e12c0233b32432badd6acba1e6f769195b0063 Mon Sep 17 00:00:00 2001 From: Andy Strube Date: Tue, 25 Oct 2022 15:35:56 -0700 Subject: [PATCH 15/15] Added instagram and no_social_media_presence to the other profiles controller --- app/controllers/profiles_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index 9307fd85d2..1f1facf1f4 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -31,6 +31,8 @@ def edit_profile_params :website, :facebook, :twitter, + :instagram, + :no_social_media_presence, :founded, :form_990, :proof_of_form_990,