Enable RSpec/FilePath cop and fix all issues
Read about cop at http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FilePath
This commit is contained in:
61
spec/models/verification/letter_spec.rb
Normal file
61
spec/models/verification/letter_spec.rb
Normal file
@@ -0,0 +1,61 @@
|
||||
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).to_not 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
|
||||
114
spec/models/verification/residence_spec.rb
Normal file
114
spec/models/verification/residence_spec.rb
Normal file
@@ -0,0 +1,114 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Verification::Residence do
|
||||
|
||||
let!(:geozone) { create(:geozone, census_code: "01") }
|
||||
let(:residence) { build(:verification_residence, document_number: "12345678Z") }
|
||||
|
||||
describe "validations" do
|
||||
|
||||
it "is valid" do
|
||||
expect(residence).to be_valid
|
||||
end
|
||||
|
||||
describe "dates" do
|
||||
it "is valid with a valid date of birth" do
|
||||
residence = described_class.new("date_of_birth(3i)" => "1", "date_of_birth(2i)" => "1", "date_of_birth(1i)" => "1980")
|
||||
expect(residence.errors[:date_of_birth].size).to eq(0)
|
||||
end
|
||||
|
||||
it "is not valid without a date of birth" do
|
||||
residence = described_class.new("date_of_birth(3i)" => "", "date_of_birth(2i)" => "", "date_of_birth(1i)" => "")
|
||||
expect(residence).to_not be_valid
|
||||
expect(residence.errors[:date_of_birth]).to include("can't be blank")
|
||||
end
|
||||
end
|
||||
|
||||
it "validates user has allowed age" do
|
||||
residence = described_class.new("date_of_birth(3i)" => "1",
|
||||
"date_of_birth(2i)" => "1",
|
||||
"date_of_birth(1i)" => 5.years.ago.year.to_s)
|
||||
expect(residence).to_not be_valid
|
||||
expect(residence.errors[:date_of_birth]).to include("You don't have the required age to participate")
|
||||
end
|
||||
|
||||
it "validates uniquness of document_number" do
|
||||
user = create(:user)
|
||||
residence.user = user
|
||||
residence.save
|
||||
|
||||
build(:verification_residence)
|
||||
|
||||
residence.valid?
|
||||
expect(residence.errors[:document_number]).to include("has already been taken")
|
||||
end
|
||||
|
||||
it "validates census terms" do
|
||||
residence.terms_of_service = nil
|
||||
expect(residence).to_not be_valid
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "new" do
|
||||
it "upcases document number" do
|
||||
residence = described_class.new(document_number: "x1234567z")
|
||||
expect(residence.document_number).to eq("X1234567Z")
|
||||
end
|
||||
|
||||
it "removes all characters except numbers and letters" do
|
||||
residence = described_class.new(document_number: " 12.345.678 - B")
|
||||
expect(residence.document_number).to eq("12345678B")
|
||||
end
|
||||
end
|
||||
|
||||
describe "save" do
|
||||
|
||||
it "stores document number, document type, geozone, date of birth and gender" do
|
||||
user = create(:user)
|
||||
residence.user = user
|
||||
residence.save
|
||||
|
||||
user.reload
|
||||
expect(user.document_number).to eq('12345678Z')
|
||||
expect(user.document_type).to eq("1")
|
||||
expect(user.date_of_birth.year).to eq(1980)
|
||||
expect(user.date_of_birth.month).to eq(12)
|
||||
expect(user.date_of_birth.day).to eq(31)
|
||||
expect(user.gender).to eq('male')
|
||||
expect(user.geozone).to eq(geozone)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "tries" do
|
||||
it "increases tries after a call to the Census" do
|
||||
residence.postal_code = "28011"
|
||||
residence.valid?
|
||||
expect(residence.user.lock.tries).to eq(1)
|
||||
end
|
||||
|
||||
it "does not increase tries after a validation error" do
|
||||
residence.postal_code = ""
|
||||
residence.valid?
|
||||
expect(residence.user.lock).to be nil
|
||||
end
|
||||
end
|
||||
|
||||
describe "Failed census call" do
|
||||
it "stores failed census API calls" do
|
||||
residence = build(:verification_residence, :invalid, document_number: "12345678Z")
|
||||
residence.save
|
||||
|
||||
expect(FailedCensusCall.count).to eq(1)
|
||||
expect(FailedCensusCall.first).to have_attributes(
|
||||
user_id: residence.user.id,
|
||||
document_number: "12345678Z",
|
||||
document_type: "1",
|
||||
date_of_birth: Date.new(1980, 12, 31),
|
||||
postal_code: "28001"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
22
spec/models/verification/sms_spec.rb
Normal file
22
spec/models/verification/sms_spec.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Verification::Sms do
|
||||
it "is valid" do
|
||||
sms = build(:verification_sms)
|
||||
expect(sms).to be_valid
|
||||
end
|
||||
|
||||
it "validates uniqness of phone" do
|
||||
create(:user, confirmed_phone: "699999999")
|
||||
sms = described_class.new(phone: "699999999")
|
||||
expect(sms).to_not be_valid
|
||||
end
|
||||
|
||||
it "only allows spaces, numbers and the + sign" do
|
||||
expect(build(:verification_sms, phone: "0034 666666666")).to be_valid
|
||||
expect(build(:verification_sms, phone: "+34 666666666")).to be_valid
|
||||
expect(build(:verification_sms, phone: "hello there")).to_not be_valid
|
||||
expect(build(:verification_sms, phone: "555; DROP TABLE USERS")).to_not be_valid
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user