From b73619d168fa0902aa3940d78666a74b3a5037d8 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 30 Jan 2015 12:48:21 +1100 Subject: [PATCH] Adding known_users method to Spree::User --- app/models/spree/user_decorator.rb | 6 ++++++ spec/models/spree/user_spec.rb | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/models/spree/user_decorator.rb b/app/models/spree/user_decorator.rb index 4f119ab81b..1a41fc5b48 100644 --- a/app/models/spree/user_decorator.rb +++ b/app/models/spree/user_decorator.rb @@ -11,6 +11,12 @@ Spree.user_class.class_eval do validate :limit_owned_enterprises + def known_users + Spree::User + .includes(:enterprises) + .where("enterprises.id IN (SELECT enterprise_id FROM enterprise_roles WHERE user_id = ?)", id) + end + def build_enterprise_roles Enterprise.all.each do |enterprise| unless self.enterprise_roles.find_by_enterprise_id enterprise.id diff --git a/spec/models/spree/user_spec.rb b/spec/models/spree/user_spec.rb index e1a9239c95..204b6fe9c5 100644 --- a/spec/models/spree/user_spec.rb +++ b/spec/models/spree/user_spec.rb @@ -30,4 +30,22 @@ describe Spree.user_class do create(:user) end end + + describe "known_users" do + let(:u1) { create(:user) } + let(:u2) { create(:user) } + let(:u3) { create(:user) } + let!(:e1) { create(:enterprise, owner: u1, users: [u1, u2]) } + + it "returns a list of users which manage shared enterprises" do + t1 = Time.now + expect(u1.known_users).to include u1, u2 + expect(u1.known_users).to_not include u3 + expect(u2.known_users).to include u1,u2 + expect(u2.known_users).to_not include u3 + expect(u3.known_users).to_not include u1,u2,u3 + t2 = Time.now + binding.pry + end + end end