require File.dirname(__FILE__) + '/../test_helper' class UserTest < ActiveSupport::TestCase context 'A user instance that acts_as_muck_commerce_user' do setup do @user = Factory(:user) end subject { @user } should_have_one :cart should_have_many :billing_informations should_have_many :order_transactions should_have_many :orders should_have_many :subscriptions should "have a referral_code after creation" do assert_not_nil @user.referral_code assert_not_nil @user.referral_code.code code = @user.referral_code.code # Make sure that the referral code isn't getting reassigned assert_equal code, @user.referral_code.code end context "subscription" do setup do @default = @user.subscriptions.create(Factory.attributes_for(:subscription, :default => true)) @other = @user.subscriptions.create(Factory.attributes_for(:subscription, :default => false)) end should "give the default subscription" do assert_equal @default, @user.subscription end end context "billing information" do context "get billing_information" do setup do @default = @user.billing_informations.create(Factory.attributes_for(:billing_information, :default => true)) @other = @user.billing_informations.create(Factory.attributes_for(:billing_information, :default => false)) end should "give the default billing information" do assert_equal @default, @user.billing_information end end context "create_update_billing_information!" do context "billing information exists" do should "update existing billing information" do @default = @user.billing_informations.create(Factory.attributes_for(:billing_information, :default => true)) @user.create_update_billing_information!(Factory.attributes_for(:billing_information)) assert_equal @default, @user.billing_information assert_equal 1, @user.billing_informations.length end end context "no billing information" do should "create a new billing entry" do billing_information = @user.create_update_billing_information!(Factory.attributes_for(:billing_information)) assert_equal billing_information, @user.billing_information end end end context "build_billing_information" do should "build but not save billing information for the user" do billing_information = @user.build_billing_information(Factory.attributes_for(:billing_information)) assert_nil @user.billing_information end end end end end