From e9d7a0b0994b25a10018fe69f55426f00e585d42 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 17 Jul 2024 12:04:54 +1000 Subject: [PATCH] Add User#affiliate_enterprises --- app/models/spree/user.rb | 8 ++++++++ spec/models/spree/user_spec.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/app/models/spree/user.rb b/app/models/spree/user.rb index f7ceb5ddca2..0d03670e539 100644 --- a/app/models/spree/user.rb +++ b/app/models/spree/user.rb @@ -156,6 +156,14 @@ def disabled=(value) self.disabled_at = value == '1' ? Time.zone.now : nil end + def affiliate_enterprises + return [] unless Flipper.enabled?(:affiliate_sales_data, self) + + Enterprise.joins(:connected_apps) + .where(connected_apps: { type: "ConnectedApps::AffiliateSalesData" }) + .where.not(connected_apps: { data: nil }) + end + protected def password_required? diff --git a/spec/models/spree/user_spec.rb b/spec/models/spree/user_spec.rb index c53b8d7845b..aa13e6f2308 100644 --- a/spec/models/spree/user_spec.rb +++ b/spec/models/spree/user_spec.rb @@ -268,4 +268,31 @@ expect(user.disabled).to be_falsey end end + + describe "#affiliate_enterprises" do + let(:user) { create(:user) } + let(:affiliate_enterprise) { create(:enterprise) } + let(:other_enterprise) { create(:enterprise) } + subject{ user.affiliate_enterprises } + + before do + ConnectedApps::AffiliateSalesData.create(enterprise: affiliate_enterprise, data: true) + end + + context "user does not have feature" do + it { is_expected.to be_empty } + end + + context "user has feature affiliate_sales_data" do + before do + Flipper.enable_actor(:affiliate_sales_data, user) + user.reload + end + + it "includes only affiliate enterprises" do + is_expected.to include affiliate_enterprise + is_expected.not_to include other_enterprise + end + end + end end