From 89097bfabe947f174fcc124474e79c1f5f8460f2 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Fri, 3 Jan 2025 11:59:10 +0200 Subject: [PATCH] feat: restore company validation for Estonian organizations - Re-enable company validation logic for Estonian organization contacts - Update company_register gem to use master branch - Restore and update company validation tests - Add additional check for Estonian country code in validation This change ensures that only registered or liquidated Estonian companies can be used when creating organizational contacts. --- Gemfile | 4 +- Gemfile.lock | 6 +- app/interactions/actions/contact_create.rb | 17 +++--- .../repp/v1/contacts/create_test.rb | 57 +++++++++---------- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Gemfile b/Gemfile index c4e916929..72665c051 100644 --- a/Gemfile +++ b/Gemfile @@ -68,8 +68,8 @@ gem 'pdfkit' gem 'redis' gem 'sidekiq', '~> 7.0' -gem 'company_register', github: 'internetee/company_register', - branch: 'issues-with-upcoming-data' + +gem 'company_register', github: 'internetee/company_register', branch: :master gem 'domain_name' gem 'e_invoice', github: 'internetee/e_invoice', branch: :master gem 'haml', '~> 6.0' diff --git a/Gemfile.lock b/Gemfile.lock index ace0966c2..16cb1a497 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/internetee/company_register.git - revision: 1e91fec78212d7e549a1c2362c011761a447bbcd - branch: issues-with-upcoming-data + revision: 30b2c4d2f0bb882370e174fc965cd9fd02b42951 + branch: master specs: company_register (0.1.0) activesupport @@ -304,7 +304,7 @@ GEM kaminari-core (= 1.2.1) kaminari-core (1.2.1) libxml-ruby (3.2.1) - logger (1.6.5) + logger (1.6.4) loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) diff --git a/app/interactions/actions/contact_create.rb b/app/interactions/actions/contact_create.rb index b9d1d6596..dfa2d1299 100644 --- a/app/interactions/actions/contact_create.rb +++ b/app/interactions/actions/contact_create.rb @@ -14,7 +14,7 @@ module Actions maybe_attach_legal_doc maybe_validate_ident maybe_change_email - # maybe_company_is_relevant + maybe_company_is_relevant commit maybe_validate_phone_number maybe_validate_contact @@ -79,16 +79,17 @@ module Actions @error = true end - # def maybe_company_is_relevant - # return true unless contact.org? + def maybe_company_is_relevant + return true unless contact.org? + return true unless contact.ident_country_code == 'EE' - # company_status = contact.return_company_status + company_status = contact.return_company_status - # return if [Contact::REGISTERED, Contact::LIQUIDATED].include? company_status - # contact.add_epp_error('2003', nil, 'ident', I18n.t('errors.messages.company_not_registered')) + return true if [Contact::REGISTERED, Contact::LIQUIDATED].include? company_status + contact.add_epp_error('2003', nil, 'ident', I18n.t('errors.messages.company_not_registered')) - # @error = true - # end + @error = true + end def maybe_attach_legal_doc ::Actions::BaseAction.attach_legal_doc_to_new(contact, legal_document, domain: false) diff --git a/test/integration/repp/v1/contacts/create_test.rb b/test/integration/repp/v1/contacts/create_test.rb index bcb196f1a..505aabfe1 100644 --- a/test/integration/repp/v1/contacts/create_test.rb +++ b/test/integration/repp/v1/contacts/create_test.rb @@ -188,39 +188,38 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest ENV['shunter_enabled'] = 'false' end - # def test_returns_error_response_if_company_not_existed - # 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('1234567', 'ACME Ltd', 'K')] - # end - # object - # end + def test_returns_error_response_if_company_not_existed + 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('1234567', 'ACME Ltd', 'K')] + end + object + end - # request_body = { - # "contact": { - # "name": 'Donald Trump', - # "phone": '+372.51111112', - # "email": 'donald@trumptower.com', - # "ident": { - # "ident_type": 'org', - # "ident_country_code": 'EE', - # "ident": '70000313', - # }, - # }, - # } + request_body = { + "contact": { + "name": 'Donald Trump', + "phone": '+372.51111112', + "email": 'donald@trumptower.com', + "ident": { + "ident_type": 'org', + "ident_country_code": 'EE', + "ident": '70000313', + }, + }, + } - # post '/repp/v1/contacts', headers: @auth_headers, params: request_body - # json = JSON.parse(response.body, symbolize_names: true) + post '/repp/v1/contacts', headers: @auth_headers, params: request_body + json = JSON.parse(response.body, symbolize_names: true) - # assert_response :bad_request - # assert_equal 2003, json[:code] - # puts json[:message] - # assert json[:message].include? 'Company is not registered' + assert_response :bad_request + assert_equal 2003, json[:code] + assert json[:message].include? 'Company is not registered' - # CompanyRegister::Client.define_singleton_method(:new, original_new_method) - # end + CompanyRegister::Client.define_singleton_method(:new, original_new_method) + end def test_contact_created_with_existed_company original_new_method = CompanyRegister::Client.method(:new)