From 1dc7b5793c4a323b1e79c862698974469db53c06 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Fri, 21 Feb 2020 13:55:56 +0000 Subject: [PATCH 1/3] Fix Enterprise validation and factory so that users are added after the validation --- app/models/enterprise.rb | 4 ++-- spec/factories/enterprise_factory.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 42177ad7b53..3c356134fc6 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -93,9 +93,9 @@ class Enterprise < ActiveRecord::Base validate :enforce_ownership_limit, if: lambda { owner_id_changed? && !owner_id.nil? } before_validation :initialize_permalink, if: lambda { permalink.nil? } - before_validation :ensure_owner_is_manager, if: lambda { owner_id_changed? && !owner_id.nil? } before_validation :set_unused_address_fields after_validation :geocode_address + after_validation :ensure_owner_is_manager, if: lambda { owner_id_changed? && !owner_id.nil? } after_touch :touch_distributors after_create :set_default_contact @@ -410,7 +410,7 @@ def geocode_address end def ensure_owner_is_manager - #users << owner unless users.include?(owner) + users << owner unless users.include?(owner) end def enforce_ownership_limit diff --git a/spec/factories/enterprise_factory.rb b/spec/factories/enterprise_factory.rb index ea93a818aab..ea79a2dc05f 100644 --- a/spec/factories/enterprise_factory.rb +++ b/spec/factories/enterprise_factory.rb @@ -1,11 +1,21 @@ FactoryBot.define do factory :enterprise, class: Enterprise do + transient do + users [] + end + owner { FactoryBot.create :user } sequence(:name) { |n| "Enterprise #{n}" } sells 'any' description 'enterprise' long_description '

Hello, world!

This is a paragraph.

' address { FactoryBot.create(:address) } + + after(:create) do |enterprise, proxy| + proxy.users.each do |user| + enterprise.users << user unless enterprise.users.include?(user) + end + end end factory :supplier_enterprise, parent: :enterprise do From e64d21d81dfd967fa9ad0ca6c2c93d17e6beec9f Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Fri, 21 Feb 2020 14:41:46 +0000 Subject: [PATCH 2/3] Move user enterprises definition in tests to after creation fixes a problem with enterprise_roles --- spec/factories/user_factory.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/factories/user_factory.rb b/spec/factories/user_factory.rb index 561aa064bf5..5f9a3678857 100644 --- a/spec/factories/user_factory.rb +++ b/spec/factories/user_factory.rb @@ -1,5 +1,9 @@ FactoryBot.modify do factory :user do + transient do + enterprises [] + end + confirmation_sent_at '1970-01-01 00:00:00' confirmed_at '1970-01-01 00:00:01' @@ -13,8 +17,10 @@ end end - after(:create) do |user| + after(:create) do |user, proxy| user.spree_roles.clear # Remove admin role + + user.enterprises << proxy.enterprises end end From bd0245229b731a250ff148b5174505ab4a3b1e52 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Fri, 21 Feb 2020 15:17:54 +0000 Subject: [PATCH 3/3] Move enterprise logo and promo_image setting in factories to after creation fixes a problem with enterprise_roles in the enterprise validation --- app/controllers/api/enterprise_attachment_controller.rb | 2 ++ spec/factories/enterprise_factory.rb | 3 +++ 2 files changed, 5 insertions(+) diff --git a/app/controllers/api/enterprise_attachment_controller.rb b/app/controllers/api/enterprise_attachment_controller.rb index 00b7c870437..fe8f47469b8 100644 --- a/app/controllers/api/enterprise_attachment_controller.rb +++ b/app/controllers/api/enterprise_attachment_controller.rb @@ -1,3 +1,5 @@ +require 'api/admin/enterprise_serializer' + module Api class EnterpriseAttachmentController < BaseController class MissingImplementationError < StandardError; end diff --git a/spec/factories/enterprise_factory.rb b/spec/factories/enterprise_factory.rb index ea79a2dc05f..5382e0fd946 100644 --- a/spec/factories/enterprise_factory.rb +++ b/spec/factories/enterprise_factory.rb @@ -2,6 +2,8 @@ factory :enterprise, class: Enterprise do transient do users [] + logo {} + promo_image {} end owner { FactoryBot.create :user } @@ -15,6 +17,7 @@ proxy.users.each do |user| enterprise.users << user unless enterprise.users.include?(user) end + enterprise.update_attributes logo: proxy.logo, promo_image: proxy.promo_image end end