From 54f7e8737018e9d6d7ba998e46c10b32a959506e Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 7 May 2021 17:14:14 +0300 Subject: [PATCH 1/4] added initializer which returns definitly count of domains --- .../api/v1/registrant/domains_controller.rb | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/v1/registrant/domains_controller.rb b/app/controllers/api/v1/registrant/domains_controller.rb index 94d2c865af..1d52fe9683 100644 --- a/app/controllers/api/v1/registrant/domains_controller.rb +++ b/app/controllers/api/v1/registrant/domains_controller.rb @@ -6,10 +6,12 @@ module Registrant class DomainsController < ::Api::V1::Registrant::BaseController before_action :set_tech_flag, only: [:show] + LIMIT_DOMAIN_TOTAL = 3000.freeze + def index limit = params[:limit] || 200 offset = params[:offset] || 0 - simple = params[:simple] == 'true' || false + simple = params[:simple] == 'true' || false if limit.to_i > 200 || limit.to_i < 1 render(json: { errors: [{ limit: ['parameter is out of range'] }] }, @@ -57,10 +59,24 @@ def current_user_domains_total_count end def current_user_domains + return initialization_count_of__domains if params[:tech] == 'init' + current_registrant_user.domains(admin: params[:tech] != 'true') rescue CompanyRegister::NotAvailableError + return initialization_count_of__direct_domains if params[:tech] == 'init' + current_registrant_user.direct_domains(admin: params[:tech] != 'true') end + + def initialization_count_of__direct_domains + return current_registrant_user.direct_domains(admin: false) if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL + current_registrant_user.direct_domains(admin: true) + end + + def initialization_count_of__domains + return current_registrant_user.domains(admin: false) if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL + current_registrant_user.domains(admin: true) + end end end end From 13a257210b461be9fb0134b21e41422be98819ef Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 7 May 2021 18:08:29 +0300 Subject: [PATCH 2/4] refactoring --- .../api/v1/registrant/domains_controller.rb | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/app/controllers/api/v1/registrant/domains_controller.rb b/app/controllers/api/v1/registrant/domains_controller.rb index 1d52fe9683..a31dfb13da 100644 --- a/app/controllers/api/v1/registrant/domains_controller.rb +++ b/app/controllers/api/v1/registrant/domains_controller.rb @@ -6,12 +6,12 @@ module Registrant class DomainsController < ::Api::V1::Registrant::BaseController before_action :set_tech_flag, only: [:show] - LIMIT_DOMAIN_TOTAL = 3000.freeze + LIMIT_DOMAIN_TOTAL = 3000 def index limit = params[:limit] || 200 offset = params[:offset] || 0 - simple = params[:simple] == 'true' || false + simple = params[:simple] == 'true' || false if limit.to_i > 200 || limit.to_i < 1 render(json: { errors: [{ limit: ['parameter is out of range'] }] }, @@ -59,23 +59,33 @@ def current_user_domains_total_count end def current_user_domains - return initialization_count_of__domains if params[:tech] == 'init' - - current_registrant_user.domains(admin: params[:tech] != 'true') + initialization_count_of__domains rescue CompanyRegister::NotAvailableError - return initialization_count_of__direct_domains if params[:tech] == 'init' - - current_registrant_user.direct_domains(admin: params[:tech] != 'true') + initialization_count_of__direct_domains end def initialization_count_of__direct_domains - return current_registrant_user.direct_domains(admin: false) if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL - current_registrant_user.direct_domains(admin: true) + if params[:tech] == 'init' + if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL + return current_registrant_user.direct_domains(admin: false) + end + + current_registrant_user.direct_domains(admin: true) + end + + current_registrant_user.direct_domains(admin: params[:tech] != 'true') end def initialization_count_of__domains - return current_registrant_user.domains(admin: false) if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL - current_registrant_user.domains(admin: true) + if params[:tech] == 'init' + if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL + return current_registrant_user.domains(admin: false) + end + + current_registrant_user.domains(admin: true) + end + + current_registrant_user.domains(admin: params[:tech] != 'true') end end end From f64898deab3bfc04e9a46d6d17ba6ab3db8b1554 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 10 May 2021 09:48:16 +0300 Subject: [PATCH 3/4] added test --- .../api/v1/registrant/domains_test.rb | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 test/integration/api/v1/registrant/domains_test.rb diff --git a/test/integration/api/v1/registrant/domains_test.rb b/test/integration/api/v1/registrant/domains_test.rb new file mode 100644 index 0000000000..367df9e48a --- /dev/null +++ b/test/integration/api/v1/registrant/domains_test.rb @@ -0,0 +1,46 @@ +require 'test_helper' +require 'auth_token/auth_token_creator' + +CompanyRegisterClientStub = Struct.new(:any_method) do + def representation_rights(citizen_personal_code:, citizen_country_code:) + raise CompanyRegister::NotAvailableError + end +end + +class RegistrantApiV1DomainsTest < ActionDispatch::IntegrationTest + setup do + @user = users(:registrant) + @registrar = registrars(:bestnames) + @contact = contacts(:john) + end + + def test_get_default_counts_of_domains + get api_v1_registrant_domains_path + "?tech=init", as: :json, + headers: { 'HTTP_AUTHORIZATION' => auth_token } + + assert_response :ok + + response_json = JSON.parse(response.body) + assert_equal response_json['total'], 4 + assert_equal response_json['count'], 4 + end + + def test_get_default_counts_of_direct_domains + CompanyRegister::Client.stub(:new, CompanyRegisterClientStub.new) do + get api_v1_registrant_domains_path + "?tech=init", as: :json, + headers: { 'HTTP_AUTHORIZATION' => auth_token } + end + + response_json = JSON.parse(response.body) + assert_equal response_json['total'], 4 + assert_equal response_json['count'], 4 + end + + private + + def auth_token + token_creator = AuthTokenCreator.create_with_defaults(@user) + hash = token_creator.token_in_hash + "Bearer #{hash[:access_token]}" + end +end From c46b22db78c8233652669560013a29f789be9c12 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Mon, 10 May 2021 13:03:23 +0300 Subject: [PATCH 4/4] refactoring --- app/controllers/api/v1/registrant/domains_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/v1/registrant/domains_controller.rb b/app/controllers/api/v1/registrant/domains_controller.rb index a31dfb13da..95475a4989 100644 --- a/app/controllers/api/v1/registrant/domains_controller.rb +++ b/app/controllers/api/v1/registrant/domains_controller.rb @@ -59,12 +59,12 @@ def current_user_domains_total_count end def current_user_domains - initialization_count_of__domains + init_count_of_domains rescue CompanyRegister::NotAvailableError - initialization_count_of__direct_domains + init_count_of_direct_domains end - def initialization_count_of__direct_domains + def init_count_of_direct_domains if params[:tech] == 'init' if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL return current_registrant_user.direct_domains(admin: false) @@ -76,7 +76,7 @@ def initialization_count_of__direct_domains current_registrant_user.direct_domains(admin: params[:tech] != 'true') end - def initialization_count_of__domains + def init_count_of_domains if params[:tech] == 'init' if current_user_domains_total_count < LIMIT_DOMAIN_TOTAL return current_registrant_user.domains(admin: false)