# frozen_string_literal: true require 'rails_helper' RSpec.describe Card, type: :model do let(:card) { build(:card) } it { should belong_to(:user_account)} it { should validate_presence_of(:number) } it { should validate_presence_of(:security_code) } it { should validate_presence_of(:expiration_year) } it { should validate_presence_of(:expiration_month) } it { should validate_presence_of(:expiration_day) } it { should validate_numericality_of(:expiration_year) } describe 'expiration_month' do it "can't be less than 1 or greater than 12" do card.expiration_month = 0 expect(card.save).to be_falsey card.expiration_month = 13 expect(card.save).to be_falsey end end describe 'expiration_day' do it "can't be less than 1 or greater than 31" do card.expiration_day = 0 expect(card.save).to be_falsey card.expiration_day = 32 expect(card.save).to be_falsey end end describe '#expiration_date' do it 'renders the expiration date in a friendly format' do card.expiration_year = 2025 card.expiration_month = 3 card.expiration_day = 24 expect(card.expiration_date).to eq('24/3/2025') end end end