From 6405280d9dd6dec5e642350fd766e9d46f5ca879 Mon Sep 17 00:00:00 2001 From: Jimmy Li Date: Thu, 1 Aug 2024 11:44:01 +0000 Subject: [PATCH] REFACTOR kit factory to use KitCreateService, update rspecs --- Gemfile.lock | 2 +- spec/events/inventory_aggregate_spec.rb | 9 +++++---- spec/factories/kits.rb | 16 +++++++--------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index caf84a543b..8a53a1e3b5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -792,4 +792,4 @@ DEPENDENCIES webmock (~> 3.23) BUNDLED WITH - 2.5.14 + 2.5.16 diff --git a/spec/events/inventory_aggregate_spec.rb b/spec/events/inventory_aggregate_spec.rb index 4c65ad97c9..fb13e01db3 100644 --- a/spec/events/inventory_aggregate_spec.rb +++ b/spec/events/inventory_aggregate_spec.rb @@ -381,11 +381,12 @@ end it "should process a kit allocation event" do - kit = FactoryBot.create(:kit, :with_item, organization: organization) + line_items = [] + line_items << build(:line_item, quantity: 10, item: item1, itemizable: nil) + line_items << build(:line_item, quantity: 3, item: item2, itemizable: nil) + + kit = FactoryBot.create(:kit, :with_item, organization: organization, line_items: line_items) - kit.line_items = [] - kit.line_items << build(:line_item, quantity: 10, item: item1, itemizable: kit) - kit.line_items << build(:line_item, quantity: 3, item: item2, itemizable: kit) KitAllocateEvent.publish(kit, storage_location1.id, 2) # 30 - (10*2) = 10, 10 - (3*2) = 4 diff --git a/spec/factories/kits.rb b/spec/factories/kits.rb index ef81343014..053ec88533 100644 --- a/spec/factories/kits.rb +++ b/spec/factories/kits.rb @@ -13,18 +13,16 @@ # FactoryBot.define do factory :kit do - sequence(:name) { |n| "Test Kit #{n}" } - organization - - after(:build) do |instance, _| - if instance.line_items.blank? - instance.line_items << create(:line_item, item: create(:item, organization: instance.organization), itemizable: instance) - end - end + sequence(:name) { |n| "Default Kit Name #{n} - Don't Match" } + organization { Organization.try(:first) || create(:organization) } + line_items { [build(:line_item, item: create(:item, organization: instance.organization), quantity: 1, itemizable: nil)] } trait :with_item do + skip_create after(:create) do |instance, _| - create(:item, kit: instance, organization: instance.organization) + kit_service = KitCreateService.new(organization_id: instance.organization_id, + kit_params: instance.attributes.merge(line_items_attributes: instance.line_items.as_json)).call + instance.attributes = kit_service.kit.attributes end end end