We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
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 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
|