mirror of
https://github.com/internetee/registry.git
synced 2025-07-31 06:56:23 +02:00
feat: Add invalid ident notification for company register status checks
- Add notification system for invalid company identifications - Update force delete notifications to handle invalid company cases - Add translations for invalid ident messages (ET/EN) - Add test coverage for invalid ident scenarios - Remove debug logging from force delete process - Clean up unused CSV templates This change improves handling of invalid company identifications in the Estonian business registry by providing proper notifications to registrars and ensuring appropriate status updates.
This commit is contained in:
parent
475b1e7fbd
commit
b229613b8a
8 changed files with 50 additions and 31 deletions
|
@ -1,17 +0,0 @@
|
|||
# Steps to Update company_status.rake
|
||||
|
||||
- [x] Modify the CSV output to include the contact type (role) information
|
||||
- [x] Filter the output to include only Estonian organization type contacts
|
||||
- [ ] Ensure only registrant contacts are included in the output
|
||||
- [ ] Remove duplicate entries for the same organization
|
||||
- [ ] Add a column to indicate if the contact is deleted due to an overdue annual statement
|
||||
- [ ] Create a separate CSV file for invalid registrant contacts
|
||||
- [ ] Update the existing CSV output to include only contacts that fail validation against the business registry and whitelist
|
||||
- [ ] Add error handling and logging for better debugging
|
||||
- [ ] Update the task description and comments to reflect the new functionality
|
||||
- [ ] Add a new rake task or option to generate the separate registrant-only CSV file
|
||||
- [ ] Implement validation against the business registry for Estonian organization contacts
|
||||
- [ ] Implement validation against the whitelist for Estonian organization contacts
|
||||
- [ ] Optimize the code for better performance, especially when dealing with large datasets
|
||||
- [ ] Add unit tests for the new functionality
|
||||
- [ ] Update the documentation to reflect the changes and new output format
|
|
@ -6,10 +6,14 @@ module Domains
|
|||
end
|
||||
|
||||
def notify_without_email
|
||||
template = I18n.t('force_delete_set_on_domain',
|
||||
domain_name: domain.name,
|
||||
outzone_date: domain.outzone_date,
|
||||
purge_date: domain.purge_date)
|
||||
template = if reason == 'invalid_company'
|
||||
I18n.t('invalid_ident', ident: domain.registrant.ident)
|
||||
else
|
||||
I18n.t('force_delete_set_on_domain',
|
||||
domain_name: domain.name,
|
||||
outzone_date: domain.outzone_date,
|
||||
purge_date: domain.purge_date)
|
||||
end
|
||||
|
||||
return if domain.registrar&.notifications&.last&.text&.include? template
|
||||
|
||||
|
@ -17,11 +21,15 @@ module Domains
|
|||
end
|
||||
|
||||
def notify_with_email
|
||||
template = I18n.t('force_delete_auto_email',
|
||||
domain_name: domain.name,
|
||||
outzone_date: domain.outzone_date,
|
||||
purge_date: domain.purge_date,
|
||||
email: email)
|
||||
template = if reason == 'invalid_company'
|
||||
I18n.t('invalid_ident', ident: domain.registrant.ident)
|
||||
else
|
||||
I18n.t('force_delete_auto_email',
|
||||
domain_name: domain.name,
|
||||
outzone_date: domain.outzone_date,
|
||||
purge_date: domain.purge_date,
|
||||
email: email)
|
||||
end
|
||||
|
||||
return if domain.registrar&.notifications&.last&.text&.include? template
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ module Domains
|
|||
# Allow deletion
|
||||
statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED)
|
||||
|
||||
puts "Try to save domain: #{domain.name} with statuses: #{statuses}"
|
||||
domain.save(validate: false)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -675,6 +675,7 @@ en:
|
|||
actions: Actions
|
||||
contact_has_been_archived: 'Contact with code %{contact_code} has been archieved because it has been orphaned for longer than %{orphan_months} months.'
|
||||
dns_policy_violation: "Data management policy violation: DNSKEY does not match or not found in the authoritative nameservers"
|
||||
invalid_ident: 'Invalid ident %{ident}'
|
||||
|
||||
number:
|
||||
currency:
|
||||
|
|
|
@ -40,3 +40,5 @@ et:
|
|||
taken: 'on juba lisatud'
|
||||
ipv6:
|
||||
taken: 'on juba lisatud'
|
||||
|
||||
invalid_ident: 'Vigane ident %{ident}'
|
|
@ -154,6 +154,36 @@ class CompanyRegisterStatusJobTest < ActiveSupport::TestCase
|
|||
CompanyRegister::Client.define_singleton_method(:new, original_new_method)
|
||||
end
|
||||
|
||||
def test_companies_with_invalid_ident_should_receive_invalid_ident_notification
|
||||
original_new_method = CompanyRegister::Client.method(:new)
|
||||
CompanyRegister::Client.define_singleton_method(:new) do
|
||||
object = original_new_method.call
|
||||
def object.simple_data(registration_number:)
|
||||
[Company.new('16752073', 'ACME Ltd', DELETED)]
|
||||
end
|
||||
object
|
||||
end
|
||||
|
||||
@registrant_acme.update!(
|
||||
company_register_status: Contact::DELETED,
|
||||
checked_company_at: nil,
|
||||
ident_type: 'org',
|
||||
ident_country_code: 'EE',
|
||||
ident: '16752073'
|
||||
)
|
||||
|
||||
@registrant_acme.reload
|
||||
|
||||
CompanyRegisterStatusJob.perform_now(14, 0, 100)
|
||||
|
||||
@registrant_acme.reload
|
||||
|
||||
assert_equal Contact::DELETED, @registrant_acme.company_register_status
|
||||
assert_equal @registrant_acme.registrant_domains.first.registrar.notifications.last.text, I18n.t('invalid_ident', ident: @registrant_acme.ident)
|
||||
|
||||
CompanyRegister::Client.define_singleton_method(:new, original_new_method)
|
||||
end
|
||||
|
||||
def test_companies_with_force_delete_and_status_R_should_be_lifted
|
||||
original_new_method = CompanyRegister::Client.method(:new)
|
||||
CompanyRegister::Client.define_singleton_method(:new) do
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
company_code,company_name,status
|
||||
12345678,Test Company,active
|
|
|
@ -1,2 +0,0 @@
|
|||
company_code,company_name,status
|
||||
12345678,Test Company,active
|
|
Loading…
Add table
Add a link
Reference in a new issue