Add new fields to signature
- Add :date_of_birth and :postal_code to Signature to allow send these fields to CustomCensusAPI - Add new model presence validates: Only validate :date_of_birth and :postal_code presence when the application has configured Remote Census and their alias fields has values.
This commit is contained in:
@@ -3,6 +3,8 @@ class Signature < ApplicationRecord
|
|||||||
belongs_to :user
|
belongs_to :user
|
||||||
|
|
||||||
validates :document_number, presence: true
|
validates :document_number, presence: true
|
||||||
|
validates :date_of_birth, presence: true, if: -> { Setting.force_presence_date_of_birth? }
|
||||||
|
validates :postal_code, presence: true, if: -> { Setting.force_presence_postal_code? }
|
||||||
validates :signature_sheet, presence: true
|
validates :signature_sheet, presence: true
|
||||||
|
|
||||||
scope :verified, -> { where(verified: true) }
|
scope :verified, -> { where(verified: true) }
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddDateOfBirthToSignatures < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :signatures, :date_of_birth, :date
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddPostalCodeToSignatures < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :signatures, :postal_code, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1476,6 +1476,8 @@ ActiveRecord::Schema.define(version: 20190607160900) do
|
|||||||
t.boolean "verified", default: false
|
t.boolean "verified", default: false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
|
t.date "date_of_birth"
|
||||||
|
t.string "postal_code"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "site_customization_content_blocks", force: :cascade do |t|
|
create_table "site_customization_content_blocks", force: :cascade do |t|
|
||||||
|
|||||||
@@ -28,6 +28,48 @@ describe Signature do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "custom validations" do
|
||||||
|
|
||||||
|
let(:signature) { build(:signature,
|
||||||
|
document_number: "12345678Z",
|
||||||
|
date_of_birth: "31/12/1980",
|
||||||
|
postal_code: "28013") }
|
||||||
|
|
||||||
|
before do
|
||||||
|
Setting["feature.remote_census"] = true
|
||||||
|
Setting["remote_census.request.date_of_birth"] = "some.value"
|
||||||
|
Setting["remote_census.request.postal_code"] = "some.value"
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
Setting["feature.remote_census"] = nil
|
||||||
|
Setting["remote_census.request.date_of_birth"] = nil
|
||||||
|
Setting["remote_census.request.postal_code"] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is valid" do
|
||||||
|
expect(signature).to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not valid without a document number" do
|
||||||
|
signature.document_number = nil
|
||||||
|
expect(signature).not_to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not valid without a date of birth" do
|
||||||
|
signature.date_of_birth = nil
|
||||||
|
|
||||||
|
expect(signature).not_to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not valid without a postal_code" do
|
||||||
|
signature.postal_code = nil
|
||||||
|
|
||||||
|
expect(signature).not_to be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
describe "#clean_document_number" do
|
describe "#clean_document_number" do
|
||||||
it "removes non alphanumeric characters" do
|
it "removes non alphanumeric characters" do
|
||||||
signature = create(:signature, document_number: "123-[;,9]")
|
signature = create(:signature, document_number: "123-[;,9]")
|
||||||
|
|||||||
Reference in New Issue
Block a user