diff --git a/app/models/signature.rb b/app/models/signature.rb index a72a0aefa..e8328d354 100644 --- a/app/models/signature.rb +++ b/app/models/signature.rb @@ -3,6 +3,8 @@ class Signature < ApplicationRecord belongs_to :user 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 scope :verified, -> { where(verified: true) } diff --git a/db/migrate/20190429214633_add_date_of_birth_to_signatures.rb b/db/migrate/20190429214633_add_date_of_birth_to_signatures.rb new file mode 100644 index 000000000..51d6e02c3 --- /dev/null +++ b/db/migrate/20190429214633_add_date_of_birth_to_signatures.rb @@ -0,0 +1,5 @@ +class AddDateOfBirthToSignatures < ActiveRecord::Migration + def change + add_column :signatures, :date_of_birth, :date + end +end diff --git a/db/migrate/20190430003908_add_postal_code_to_signatures.rb b/db/migrate/20190430003908_add_postal_code_to_signatures.rb new file mode 100644 index 000000000..4d71687c8 --- /dev/null +++ b/db/migrate/20190430003908_add_postal_code_to_signatures.rb @@ -0,0 +1,5 @@ +class AddPostalCodeToSignatures < ActiveRecord::Migration + def change + add_column :signatures, :postal_code, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 6fd743166..9d1a28d42 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1476,6 +1476,8 @@ ActiveRecord::Schema.define(version: 20190607160900) do t.boolean "verified", default: false t.datetime "created_at" t.datetime "updated_at" + t.date "date_of_birth" + t.string "postal_code" end create_table "site_customization_content_blocks", force: :cascade do |t| diff --git a/spec/models/signature_spec.rb b/spec/models/signature_spec.rb index c6f53153c..bc7c81968 100644 --- a/spec/models/signature_spec.rb +++ b/spec/models/signature_spec.rb @@ -28,6 +28,48 @@ describe Signature do 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 it "removes non alphanumeric characters" do signature = create(:signature, document_number: "123-[;,9]")