diff --git a/app/controllers/api/v1/registrant/domains_controller.rb b/app/controllers/api/v1/registrant/domains_controller.rb index 94d2c865af..95475a4989 100644 --- a/app/controllers/api/v1/registrant/domains_controller.rb +++ b/app/controllers/api/v1/registrant/domains_controller.rb @@ -6,6 +6,8 @@ module Registrant class DomainsController < ::Api::V1::Registrant::BaseController before_action :set_tech_flag, only: [:show] + LIMIT_DOMAIN_TOTAL = 3000 + def index limit = params[:limit] || 200 offset = params[:offset] || 0 @@ -57,10 +59,34 @@ def current_user_domains_total_count end def current_user_domains - current_registrant_user.domains(admin: params[:tech] != 'true') + init_count_of_domains rescue CompanyRegister::NotAvailableError + init_count_of_direct_domains + end + + 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) + end + + current_registrant_user.direct_domains(admin: true) + end + current_registrant_user.direct_domains(admin: params[:tech] != 'true') end + + 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) + end + + current_registrant_user.domains(admin: true) + end + + current_registrant_user.domains(admin: params[:tech] != 'true') + end end end end 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