spec/models/verification/letter_spec.rb
require "rails_helper"
describe Verification::Letter do
let(:user) { create(:user) }
describe "validations" do
let(:letter) { build(:verification_letter) }
it "is valid" do
expect(letter).to be_valid
end
it "is not valid without a user" do
letter.user = nil
expect(letter).not_to be_valid
end
end
describe "save" do
it "updates letter_requested" do
letter = build(:verification_letter)
letter.save!
expect(letter.user.letter_requested_at).to be
end
end
describe "#verify" do
let(:letter) { build(:verification_letter, verify: true) }
it "incorrect code" do
letter.user.update!(letter_verification_code: "123456")
letter.verification_code = "5555"
expect(letter.valid?).to be false
expect(letter.errors[:verification_code].first).to eq("Verification code incorrect")
end
it "correct code" do
letter.user.update!(letter_verification_code: "123456")
letter.verification_code = "123456"
expect(letter.valid?).to be true
expect(letter.errors).to be_empty
end
it "ignores trailing zeros" do
letter.user.update!(letter_verification_code: "003456")
letter.verification_code = "3456"
expect(letter.valid?).to be true
expect(letter.errors).to be_empty
end
end
end