uses year of birth instead of date of birth
This commit is contained in:
@@ -16,6 +16,6 @@ class Officing::ResidenceController < Officing::BaseController
|
|||||||
private
|
private
|
||||||
|
|
||||||
def residence_params
|
def residence_params
|
||||||
params.require(:residence).permit(:document_number, :document_type, :date_of_birth)
|
params.require(:residence).permit(:document_number, :document_type, :year_of_birth)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1,22 +1,19 @@
|
|||||||
class Officing::Residence
|
class Officing::Residence
|
||||||
include ActiveModel::Model
|
include ActiveModel::Model
|
||||||
include ActiveModel::Dates
|
|
||||||
include ActiveModel::Validations::Callbacks
|
include ActiveModel::Validations::Callbacks
|
||||||
|
|
||||||
attr_accessor :user, :officer, :document_number, :document_type, :date_of_birth
|
attr_accessor :user, :officer, :document_number, :document_type, :year_of_birth
|
||||||
|
|
||||||
before_validation :call_census_api
|
before_validation :call_census_api
|
||||||
|
|
||||||
validates_presence_of :document_number
|
validates_presence_of :document_number
|
||||||
validates_presence_of :document_type
|
validates_presence_of :document_type
|
||||||
validates_presence_of :date_of_birth
|
validates_presence_of :year_of_birth
|
||||||
|
|
||||||
validate :allowed_age
|
validate :allowed_age
|
||||||
validate :residence_in_madrid
|
validate :residence_in_madrid
|
||||||
|
|
||||||
def initialize(attrs={})
|
def initialize(attrs={})
|
||||||
self.date_of_birth = parse_date('date_of_birth', attrs)
|
|
||||||
attrs = remove_date('date_of_birth', attrs)
|
|
||||||
super
|
super
|
||||||
clean_document_number
|
clean_document_number
|
||||||
end
|
end
|
||||||
@@ -62,7 +59,8 @@ class Officing::Residence
|
|||||||
end
|
end
|
||||||
|
|
||||||
def allowed_age
|
def allowed_age
|
||||||
return if errors[:date_of_birth].any?
|
return if errors[:year_of_birth].any?
|
||||||
|
return unless @census_api_response.valid?
|
||||||
|
|
||||||
unless allowed_age?
|
unless allowed_age?
|
||||||
errors.add(:date_of_birth, I18n.t('verification.residence.new.error_not_allowed_age'))
|
errors.add(:date_of_birth, I18n.t('verification.residence.new.error_not_allowed_age'))
|
||||||
@@ -70,7 +68,7 @@ class Officing::Residence
|
|||||||
end
|
end
|
||||||
|
|
||||||
def allowed_age?
|
def allowed_age?
|
||||||
self.date_of_birth <= User.minimum_required_age.years.ago
|
date_of_birth <= User.minimum_required_age.years.ago
|
||||||
end
|
end
|
||||||
|
|
||||||
def geozone
|
def geozone
|
||||||
@@ -85,6 +83,10 @@ class Officing::Residence
|
|||||||
@census_api_response.gender
|
@census_api_response.gender
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def date_of_birth
|
||||||
|
@census_api_response.date_of_birth
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def call_census_api
|
def call_census_api
|
||||||
@@ -93,7 +95,11 @@ class Officing::Residence
|
|||||||
|
|
||||||
def residency_valid?
|
def residency_valid?
|
||||||
@census_api_response.valid? &&
|
@census_api_response.valid? &&
|
||||||
@census_api_response.date_of_birth == date_of_birth
|
@census_api_response.date_of_birth.year.to_s == year_of_birth.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
def census_year_of_birth
|
||||||
|
@census_api_response.date_of_birth.year
|
||||||
end
|
end
|
||||||
|
|
||||||
def clean_document_number
|
def clean_document_number
|
||||||
|
|||||||
@@ -14,9 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="date-of-birth small-12 medium-6">
|
<div class="date-of-birth small-12 medium-6">
|
||||||
<%= f.date_select :date_of_birth,
|
<%= f.text_field :year_of_birth %>
|
||||||
prompt: true,
|
|
||||||
start_year: 1900, end_year: 16.years.ago.year %>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="small-12 medium-6">
|
<div class="small-12 medium-6">
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ FactoryGirl.define do
|
|||||||
user
|
user
|
||||||
document_number
|
document_number
|
||||||
document_type "1"
|
document_type "1"
|
||||||
date_of_birth Date.new(1980, 12, 31)
|
year_of_birth "1980"
|
||||||
end
|
end
|
||||||
|
|
||||||
factory :organization do
|
factory :organization do
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ feature 'Residence' do
|
|||||||
click_link "Validate document"
|
click_link "Validate document"
|
||||||
end
|
end
|
||||||
|
|
||||||
fill_in 'residence_document_number', with: "12345678Z"
|
|
||||||
select 'DNI', from: 'residence_document_type'
|
select 'DNI', from: 'residence_document_type'
|
||||||
select_date '31-December-1980', from: 'residence_date_of_birth'
|
fill_in 'residence_document_number', with: "12345678Z"
|
||||||
|
fill_in 'residence_year_of_birth', with: '1980'
|
||||||
|
|
||||||
click_button 'Validate document'
|
click_button 'Validate document'
|
||||||
|
|
||||||
@@ -31,16 +31,28 @@ feature 'Residence' do
|
|||||||
expect(page).to have_content /\d errors? prevented the verification of this document/
|
expect(page).to have_content /\d errors? prevented the verification of this document/
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario "Error on Census" do
|
scenario "Error on Census (document number)" do
|
||||||
within("#side_menu") do
|
within("#side_menu") do
|
||||||
click_link "Validate document"
|
click_link "Validate document"
|
||||||
end
|
end
|
||||||
|
|
||||||
fill_in 'residence_document_number', with: "12345678Z"
|
|
||||||
select 'DNI', from: 'residence_document_type'
|
select 'DNI', from: 'residence_document_type'
|
||||||
select '1997', from: 'residence_date_of_birth_1i'
|
fill_in 'residence_document_number', with: "9999999A"
|
||||||
select 'January', from: 'residence_date_of_birth_2i'
|
fill_in 'residence_year_of_birth', with: '1980'
|
||||||
select '1', from: 'residence_date_of_birth_3i'
|
|
||||||
|
click_button 'Validate document'
|
||||||
|
|
||||||
|
expect(page).to have_content 'The Census was unable to verify this document'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Error on Census (year of birth)" do
|
||||||
|
within("#side_menu") do
|
||||||
|
click_link "Validate document"
|
||||||
|
end
|
||||||
|
|
||||||
|
select 'DNI', from: 'residence_document_type'
|
||||||
|
fill_in 'residence_document_number', with: "12345678Z"
|
||||||
|
fill_in 'residence_year_of_birth', with: '1981'
|
||||||
|
|
||||||
click_button 'Validate document'
|
click_button 'Validate document'
|
||||||
|
|
||||||
|
|||||||
@@ -11,23 +11,33 @@ describe Officing::Residence do
|
|||||||
expect(residence).to be_valid
|
expect(residence).to be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "dates" do
|
it "should not be valid without a document number" do
|
||||||
it "should be valid with a valid date of birth" do
|
residence.document_number = nil
|
||||||
residence = Officing::Residence.new({"date_of_birth(3i)"=>"1", "date_of_birth(2i)"=>"1", "date_of_birth(1i)"=>"1980"})
|
expect(residence).to_not be_valid
|
||||||
expect(residence.errors[:date_of_birth].size).to eq(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "should not be valid without a date of birth" do
|
|
||||||
residence = Officing::Residence.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
|
end
|
||||||
|
|
||||||
it "should validate user has allowed age" do
|
it "should not be valid without a document type" do
|
||||||
residence = Officing::Residence.new({"date_of_birth(3i)"=>"1", "date_of_birth(2i)"=>"1", "date_of_birth(1i)"=>"#{5.year.ago.year}"})
|
residence.document_type = nil
|
||||||
expect(residence).to_not be_valid
|
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 "should not be valid without a year of birth" do
|
||||||
|
residence.year_of_birth = nil
|
||||||
|
expect(residence).to_not be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "allowed age" do
|
||||||
|
it "should not be validate if user is under allowed age" do
|
||||||
|
allow_any_instance_of(Officing::Residence).to receive(:date_of_birth).and_return(15.years.ago)
|
||||||
|
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 "should be validate if user is above allowed age" do
|
||||||
|
allow_any_instance_of(Officing::Residence).to receive(:date_of_birth).and_return(16.years.ago)
|
||||||
|
expect(residence).to be_valid
|
||||||
|
expect(residence.errors[:date_of_birth]).to be_empty
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user