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
