Add default_card method to user model

This commit is contained in:
Rob Harrington
2018-05-04 11:38:35 +10:00
committed by Maikel Linke
parent 09534b41e9
commit fc2844a3d5
2 changed files with 32 additions and 0 deletions

View File

@@ -73,6 +73,10 @@ Spree.user_class.class_eval do
owned_enterprises(:reload).size < enterprise_limit
end
def default_card
credit_cards.where(is_default: true).first
end
private
def limit_owned_enterprises

View File

@@ -126,4 +126,32 @@ describe Spree.user_class do
end
end
end
describe "default_card" do
let(:user) { create(:user) }
context "when the user has no credit cards" do
it "returns nil" do
expect(user.default_card).to be nil
end
end
context "when the user has one credit card" do
let!(:card) { create(:credit_card, user: user) }
it "should be assigned as the default and be returned" do
expect(card.reload.is_default).to be true
expect(user.default_card.id).to be card.id
end
end
context "when the user has more than one card" do
let!(:non_default_card) { create(:credit_card, user: user) }
let!(:default_card) { create(:credit_card, user: user, is_default: true) }
it "returns the card which is specified as the default" do
expect(user.default_card.id).to be default_card.id
end
end
end
end