summaryrefslogtreecommitdiff
path: root/spec/models/card_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/card_spec.rb')
-rw-r--r--spec/models/card_spec.rb40
1 files changed, 39 insertions, 1 deletions
diff --git a/spec/models/card_spec.rb b/spec/models/card_spec.rb
index 6f49b4a..11bee2d 100644
--- a/spec/models/card_spec.rb
+++ b/spec/models/card_spec.rb
@@ -1,5 +1,43 @@
+# frozen_string_literal: true
+
require 'rails_helper'
RSpec.describe Card, type: :model do
- pending "add some examples to (or delete) #{__FILE__}"
+ 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