Fixed admin contact validation and repp error

This commit is contained in:
tsoganov 2025-04-23 17:03:26 +03:00
parent 8e8fd6cead
commit 537e75e162
4 changed files with 20 additions and 22 deletions

View file

@ -1,6 +1,6 @@
class AdminDomainContact < DomainContact class AdminDomainContact < DomainContact
include AgeValidation include AgeValidation
validate :validate_contact_age validate :validate_contact_age
# rubocop:disable Metrics/AbcSize # rubocop:disable Metrics/AbcSize
@ -33,8 +33,6 @@ class AdminDomainContact < DomainContact
def validate_contact_age def validate_contact_age
return unless contact&.underage? return unless contact&.underage?
errors.add(:contact, I18n.t( errors.add(:base, :contact_too_young)
'activerecord.errors.models.admin_domain_contact.contact_too_young'
))
end end
end end

View file

@ -17,13 +17,17 @@ module AgeValidation
def underage_by_birthday? def underage_by_birthday?
birth_date = Date.parse(ident) birth_date = Date.parse(ident)
calculate_age(birth_date) < 18 calculate_age(birth_date) < 18
rescue ArgumentError
true
end end
def underage_by_estonian_id? def underage_by_estonian_id?
return false unless estonian_id? return false unless estonian_id?
birth_date = parse_estonian_id_birth_date(ident) birth_date = parse_estonian_id_birth_date(ident)
calculate_age(birth_date) < 18 calculate_age(birth_date) < 18
rescue ArgumentError
true
end end
def estonian_id? def estonian_id?
@ -50,4 +54,4 @@ module AgeValidation
Date.parse("#{birth_year}-#{month}-#{day}") Date.parse("#{birth_year}-#{month}-#{day}")
end end
end end

View file

@ -3,11 +3,10 @@ class DomainContact < ApplicationRecord
# STI: admin_domain_contact # STI: admin_domain_contact
include Versions # version/domain_contact_version.rb include Versions # version/domain_contact_version.rb
include EppErrors include EppErrors
belongs_to :contact belongs_to :contact
belongs_to :domain belongs_to :domain
validates :contact, presence: true
after_destroy :update_contact after_destroy :update_contact
attr_accessor :value_typeahead attr_accessor :value_typeahead
attr_writer :contact_code attr_writer :contact_code

View file

@ -20,15 +20,14 @@ class DomainContactTest < ActiveSupport::TestCase
ident_type: 'birthday', ident_type: 'birthday',
ident: (Time.zone.now - 16.years).strftime('%Y-%m-%d') ident: (Time.zone.now - 16.years).strftime('%Y-%m-%d')
) )
domain_contact = AdminDomainContact.new( domain_contact = AdminDomainContact.new(
domain: domains(:shop), domain: domains(:shop),
contact: admin_contact contact: admin_contact
) )
assert_not domain_contact.valid? assert_not domain_contact.valid?
assert_includes domain_contact.errors.full_messages, assert_includes domain_contact.errors.full_messages, 'Administrative contact must be at least 18 years old'
'Contact Administrative contact must be at least 18 years old'
end end
def test_validates_admin_contact_age_with_estonian_id def test_validates_admin_contact_age_with_estonian_id
@ -38,15 +37,14 @@ class DomainContactTest < ActiveSupport::TestCase
ident: '61203150222', ident: '61203150222',
ident_country_code: 'EE' ident_country_code: 'EE'
) )
domain_contact = AdminDomainContact.new( domain_contact = AdminDomainContact.new(
domain: domains(:shop), domain: domains(:shop),
contact: admin_contact contact: admin_contact
) )
assert_not domain_contact.valid? assert_not domain_contact.valid?
assert_includes domain_contact.errors.full_messages, assert_includes domain_contact.errors.full_messages, 'Administrative contact must be at least 18 years old'
'Contact Administrative contact must be at least 18 years old'
end end
def test_allows_adult_admin_contact_with_birthday def test_allows_adult_admin_contact_with_birthday
@ -55,12 +53,12 @@ class DomainContactTest < ActiveSupport::TestCase
ident_type: 'birthday', ident_type: 'birthday',
ident: (Time.zone.now - 20.years).strftime('%Y-%m-%d') ident: (Time.zone.now - 20.years).strftime('%Y-%m-%d')
) )
domain_contact = AdminDomainContact.new( domain_contact = AdminDomainContact.new(
domain: domains(:shop), domain: domains(:shop),
contact: admin_contact contact: admin_contact
) )
assert domain_contact.valid? assert domain_contact.valid?
end end
@ -71,13 +69,12 @@ class DomainContactTest < ActiveSupport::TestCase
ident: '38903111310', ident: '38903111310',
ident_country_code: 'EE' ident_country_code: 'EE'
) )
domain_contact = AdminDomainContact.new( domain_contact = AdminDomainContact.new(
domain: domains(:shop), domain: domains(:shop),
contact: admin_contact contact: admin_contact
) )
assert domain_contact.valid? assert domain_contact.valid?
end end
end
end