require 'rails_helper'

describe 'Verification::Letter' do

  let(:user)   { create(:user)  }

  describe "validations" do

    let(:letter) { build(:verification_letter) }

    it "should be valid" do
      expect(letter).to be_valid
    end

    it "should not be valid without a user" do
      letter.user = nil
      expect(letter).to_not be_valid
    end

  end

  describe "save" do

    it "should update 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 eq(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 eq(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 eq(true)
      expect(letter.errors).to be_empty
    end
  end

end
