Only stores alphanumeric characters of a signature's document number

This commit is contained in:
rgarcia
2016-12-28 19:42:02 +01:00
parent 4e1bb62654
commit 25f34cdab9
2 changed files with 31 additions and 0 deletions

View File

@@ -10,6 +10,8 @@ class Signature < ActiveRecord::Base
delegate :signable, to: :signature_sheet
before_validation :clean_document_number
def verified?
user_exists? || in_census?
end
@@ -58,6 +60,11 @@ class Signature < ActiveRecord::Base
User.create!(user_params)
end
def clean_document_number
return if self.document_number.blank?
self.document_number = self.document_number.gsub(/[^a-z0-9]+/i, "").upcase
end
def random_password
(0...20).map { ('a'..'z').to_a[rand(26)] }.join
end

View File

@@ -13,6 +13,12 @@ describe Signature do
it "should not be valid without a document number" do
signature.document_number = nil
expect(signature).to_not be_valid
signature.document_number = ""
expect(signature).to_not be_valid
signature.document_number = " "
expect(signature).to_not be_valid
end
it "should not be valid without an associated signature sheet" do
@@ -22,6 +28,24 @@ describe Signature do
end
describe "#clean_document_number" do
it "removes non alphanumeric characters" do
signature = create(:signature, document_number: "123-[;,9]")
expect(signature.document_number).to eq("1239")
end
it "upcases letter in document number" do
signature = create(:signature, document_number: "123a")
expect(signature.document_number).to eq("123A")
end
it "deals gracefully with empty document numbers" do
signature = build(:signature, document_number: "")
signature.clean_document_number
expect(signature.document_number).to eq("")
end
end
describe "#verified?" do
it "returns true if user exists" do