diff --git a/app/controllers/eis_billing/base_controller.rb b/app/controllers/eis_billing/base_controller.rb index a475472b9e..ad2b71f3ae 100644 --- a/app/controllers/eis_billing/base_controller.rb +++ b/app/controllers/eis_billing/base_controller.rb @@ -3,7 +3,6 @@ class BaseController < ApplicationController protect_from_forgery with: :null_session skip_authorization_check # Temporary solution # skip_before_action :verify_authenticity_token # Temporary solution - before_action :persistent before_action :authorized INITIATOR = 'billing'.freeze @@ -49,11 +48,5 @@ def billing_secret_key def logger Rails.logger end - - def persistent - return true if Feature.billing_system_integrated? - - render json: { message: "We don't work yet!" }, status: :unauthorized - end end end diff --git a/app/jobs/directo_invoice_forward_job.rb b/app/jobs/directo_invoice_forward_job.rb index 04da1a4248..28a06007a8 100644 --- a/app/jobs/directo_invoice_forward_job.rb +++ b/app/jobs/directo_invoice_forward_job.rb @@ -1,60 +1,31 @@ class DirectoInvoiceForwardJob < ApplicationJob def perform(monthly: false, dry: false) - @dry = dry - (@month = Time.zone.now - 1.month) if monthly + data = nil - @client = new_directo_client - monthly ? send_monthly_invoices : send_receipts - end + if monthly + @month = Time.zone.now - 1.month + data = collect_monthly_data + else + data = collect_receipts_data + end - def new_directo_client - DirectoApi::Client.new(ENV['directo_invoice_url'], Setting.directo_sales_agent, - Setting.directo_receipt_payment_term) + EisBilling::SendDataToDirecto.send_request(object_data: data, monthly: monthly, dry: dry) end - def send_receipts + def collect_receipts_data unsent_invoices = Invoice.where(in_directo: false).non_cancelled + collected_data = [] - Rails.logger.info("[DIRECTO] Trying to send #{unsent_invoices.count} prepayment invoices") unsent_invoices.each do |invoice| unless valid_invoice_conditions?(invoice) Rails.logger.info "[DIRECTO] Invoice #{invoice.number} has been skipped" next end - @client.invoices.add_with_schema(invoice: invoice.as_directo_json, schema: 'prepayment') - end - - sync_with_directo - end - - def send_monthly_invoices - Registrar.where.not(test_registrar: true).find_each do |registrar| - next unless registrar.cash_account - - @client = new_directo_client - send_invoice_for_registrar(registrar) + collected_data << invoice.as_directo_json end - end - - def send_invoice_for_registrar(registrar) - summary = registrar.monthly_summary(month: @month) - @client.invoices.add_with_schema(invoice: summary, schema: 'summary') unless summary.nil? - - sync_with_directo if @client.invoices.count.positive? - end - - def assign_monthly_numbers - raise 'Directo Counter is going to be out of period!' if directo_counter_exceedable?(@client.invoices.count) - - min_directo = Setting.directo_monthly_number_min.presence.try(:to_i) - directo_number = [Setting.directo_monthly_number_last.presence.try(:to_i), - min_directo].compact.max || 0 - @client.invoices.each do |inv| - directo_number += 1 - inv.number = directo_number - end + collected_data end def valid_invoice_conditions?(invoice) @@ -68,29 +39,17 @@ def valid_invoice_conditions?(invoice) true end - def sync_with_directo - assign_monthly_numbers if @month + def collect_monthly_data + registrars_data = [] - Rails.logger.info("[Directo] - attempting to send following XML:\n #{@client.invoices.as_xml}") - return if @dry - - res = @client.invoices.deliver(ssl_verify: false) - process_directo_response(res.body, @client.invoices.as_xml) - rescue SocketError, Errno::ECONNREFUSED, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, - EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError - Rails.logger.info('[Directo] Failed to communicate via API') - end - - def process_directo_response(xml, req) - Rails.logger.info "[Directo] - Responded with body: #{xml}" - Nokogiri::XML(xml).css('Result').each do |res| - if @month - mark_invoice_as_sent(res: res, req: req) - else - inv = Invoice.find_by(number: res.attributes['docid'].value.to_i) - mark_invoice_as_sent(invoice: inv, res: res, req: req) - end + Registrar.where.not(test_registrar: true).find_each do |registrar| + registrars_data << { + registrar: registrar, + registrar_summery: registrar.monthly_summary(month: @month), + } end + + registrars_data end def mark_invoice_as_sent(invoice: nil, res:, req:) diff --git a/app/jobs/directo_invoice_forward_legacy_job.rb b/app/jobs/directo_invoice_forward_legacy_job.rb new file mode 100644 index 0000000000..5534b3c9b5 --- /dev/null +++ b/app/jobs/directo_invoice_forward_legacy_job.rb @@ -0,0 +1,125 @@ +class DirectoInvoiceForwardLegacyJob < ApplicationJob + def perform(monthly: false, dry: false) + @dry = dry + (@month = Time.zone.now - 1.month) if monthly + + @client = new_directo_client + monthly ? send_monthly_invoices : send_receipts + end + + def new_directo_client + DirectoApi::Client.new(ENV['directo_invoice_url'], Setting.directo_sales_agent, + Setting.directo_receipt_payment_term) + end + + def send_receipts + unsent_invoices = Invoice.where(in_directo: false).non_cancelled + + Rails.logger.info("[DIRECTO] Trying to send #{unsent_invoices.count} prepayment invoices") + unsent_invoices.each do |invoice| + unless valid_invoice_conditions?(invoice) + Rails.logger.info "[DIRECTO] Invoice #{invoice.number} has been skipped" + next + end + + @client.invoices.add_with_schema(invoice: invoice.as_directo_json, schema: 'prepayment') + end + + sync_with_directo + end + + def send_monthly_invoices + Registrar.where.not(test_registrar: true).find_each do |registrar| + next unless registrar.cash_account + + @client = new_directo_client + send_invoice_for_registrar(registrar) + end + end + + def send_invoice_for_registrar(registrar) + summary = registrar.monthly_summary(month: @month) + @client.invoices.add_with_schema(invoice: summary, schema: 'summary') unless summary.nil? + + sync_with_directo if @client.invoices.count.positive? + end + + def assign_monthly_numbers + raise 'Directo Counter is going to be out of period!' if directo_counter_exceedable?(@client.invoices.count) + + min_directo = Setting.directo_monthly_number_min.presence.try(:to_i) + directo_number = [Setting.directo_monthly_number_last.presence.try(:to_i), + min_directo].compact.max || 0 + + @client.invoices.each do |inv| + directo_number += 1 + inv.number = directo_number + end + end + + def valid_invoice_conditions?(invoice) + if invoice.account_activity.nil? || invoice.account_activity.bank_transaction.nil? || + invoice.account_activity.bank_transaction.sum.nil? || + invoice.account_activity.bank_transaction.sum != invoice.total + return false + + end + + true + end + + def sync_with_directo + assign_monthly_numbers if @month + + Rails.logger.info("[Directo] - attempting to send following XML:\n #{@client.invoices.as_xml}") + return if @dry + + res = @client.invoices.deliver(ssl_verify: false) + process_directo_response(res.body, @client.invoices.as_xml) + rescue SocketError, Errno::ECONNREFUSED, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, + EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError + Rails.logger.info('[Directo] Failed to communicate via API') + end + + def process_directo_response(xml, req) + Rails.logger.info "[Directo] - Responded with body: #{xml}" + Nokogiri::XML(xml).css('Result').each do |res| + if @month + mark_invoice_as_sent(res: res, req: req) + else + inv = Invoice.find_by(number: res.attributes['docid'].value.to_i) + mark_invoice_as_sent(invoice: inv, res: res, req: req) + end + end + end + + def mark_invoice_as_sent(invoice: nil, res:, req:) + directo_record = Directo.new(response: res.as_json.to_h, + request: req, invoice_number: res.attributes['docid'].value.to_i) + if invoice + directo_record.item = invoice + invoice.update(in_directo: true) + else + update_directo_number(num: directo_record.invoice_number) + end + + directo_record.save! + end + + def update_directo_number(num:) + return unless num.to_i > Setting.directo_monthly_number_last.to_i + + Setting.directo_monthly_number_last = num.to_i + end + + def directo_counter_exceedable?(invoice_count) + min_directo = Setting.directo_monthly_number_min.presence.try(:to_i) + max_directo = Setting.directo_monthly_number_max.presence.try(:to_i) + last_directo = [Setting.directo_monthly_number_last.presence.try(:to_i), + min_directo].compact.max || 0 + + return true if max_directo && max_directo < (last_directo + invoice_count) + + false + end +end diff --git a/app/jobs/directo_invoice_forward_two_job.rb b/app/jobs/directo_invoice_forward_two_job.rb deleted file mode 100644 index e0d8d946b1..0000000000 --- a/app/jobs/directo_invoice_forward_two_job.rb +++ /dev/null @@ -1,84 +0,0 @@ -class DirectoInvoiceForwardTwoJob < ApplicationJob - def perform(monthly: false, dry: false) - data = nil - - if monthly - @month = Time.zone.now - 1.month - data = collect_monthly_data - else - data = collect_receipts_data - end - - EisBilling::SendDataToDirecto.send_request(object_data: data, monthly: monthly, dry: dry) - end - - def collect_receipts_data - unsent_invoices = Invoice.where(in_directo: false).non_cancelled - collected_data = [] - - unsent_invoices.each do |invoice| - unless valid_invoice_conditions?(invoice) - Rails.logger.info "[DIRECTO] Invoice #{invoice.number} has been skipped" - next - end - - collected_data << invoice.as_directo_json - end - - collected_data - end - - def valid_invoice_conditions?(invoice) - if invoice.account_activity.nil? || invoice.account_activity.bank_transaction.nil? || - invoice.account_activity.bank_transaction.sum.nil? || - invoice.account_activity.bank_transaction.sum != invoice.total - return false - - end - - true - end - - def collect_monthly_data - registrars_data = [] - - Registrar.where.not(test_registrar: true).find_each do |registrar| - registrars_data << { - registrar: registrar, - registrar_summery: registrar.monthly_summary(month: @month), - } - end - - registrars_data - end - - def mark_invoice_as_sent(invoice: nil, res:, req:) - directo_record = Directo.new(response: res.as_json.to_h, - request: req, invoice_number: res.attributes['docid'].value.to_i) - if invoice - directo_record.item = invoice - invoice.update(in_directo: true) - else - update_directo_number(num: directo_record.invoice_number) - end - - directo_record.save! - end - - def update_directo_number(num:) - return unless num.to_i > Setting.directo_monthly_number_last.to_i - - Setting.directo_monthly_number_last = num.to_i - end - - def directo_counter_exceedable?(invoice_count) - min_directo = Setting.directo_monthly_number_min.presence.try(:to_i) - max_directo = Setting.directo_monthly_number_max.presence.try(:to_i) - last_directo = [Setting.directo_monthly_number_last.presence.try(:to_i), - min_directo].compact.max || 0 - - return true if max_directo && max_directo < (last_directo + invoice_count) - - false - end -end diff --git a/app/jobs/send_e_invoice_job.rb b/app/jobs/send_e_invoice_job.rb index c48dccd2ad..02cad898c0 100644 --- a/app/jobs/send_e_invoice_job.rb +++ b/app/jobs/send_e_invoice_job.rb @@ -6,7 +6,8 @@ def perform(invoice_id, payable: true) invoice = Invoice.find_by(id: invoice_id) return unless need_to_process_invoice?(invoice: invoice, payable: payable) - process(invoice: invoice, payable: payable) + send_invoice_to_eis_billing(invoice: invoice, payable: payable) + invoice.update(e_invoice_sent_at: Time.zone.now) rescue StandardError => e log_error(invoice: invoice, error: e) raise e @@ -16,23 +17,15 @@ def perform(invoice_id, payable: true) def need_to_process_invoice?(invoice:, payable:) logger.info "Checking if need to process e-invoice #{invoice}, payable: #{payable}" - unprocessable = invoice.do_not_send_e_invoice? && (invoice.monthly_invoice ? true : payable) return false if invoice.blank? - return false if unprocessable + return false if invoice.do_not_send_e_invoice? && payable true end - def process(invoice:, payable:) - invoice.to_e_invoice(payable: payable).deliver unless Rails.env.development? - invoice.update(e_invoice_sent_at: Time.zone.now) - log_success(invoice) - end - - def log_success(invoice) - id = invoice.try(:id) || invoice - message = "E-Invoice for an invoice with ID # #{id} was sent successfully" - logger.info message + def send_invoice_to_eis_billing(invoice:, payable:) + result = EisBilling::SendEInvoice.send_request(invoice: invoice, payable: payable) + logger.info result.body end def log_error(invoice:, error:) diff --git a/app/jobs/send_e_invoice_two_job.rb b/app/jobs/send_e_invoice_legacy_job.rb similarity index 64% rename from app/jobs/send_e_invoice_two_job.rb rename to app/jobs/send_e_invoice_legacy_job.rb index bb8f993ca3..d9220388b5 100644 --- a/app/jobs/send_e_invoice_two_job.rb +++ b/app/jobs/send_e_invoice_legacy_job.rb @@ -1,4 +1,4 @@ -class SendEInvoiceTwoJob < ApplicationJob +class SendEInvoiceLegacyJob < ApplicationJob discard_on HTTPClient::TimeoutError def perform(invoice_id, payable: true) @@ -6,8 +6,7 @@ def perform(invoice_id, payable: true) invoice = Invoice.find_by(id: invoice_id) return unless need_to_process_invoice?(invoice: invoice, payable: payable) - send_invoice_to_eis_billing(invoice: invoice, payable: payable) - invoice.update(e_invoice_sent_at: Time.zone.now) + process(invoice: invoice, payable: payable) rescue StandardError => e log_error(invoice: invoice, error: e) raise e @@ -17,15 +16,23 @@ def perform(invoice_id, payable: true) def need_to_process_invoice?(invoice:, payable:) logger.info "Checking if need to process e-invoice #{invoice}, payable: #{payable}" + unprocessable = invoice.do_not_send_e_invoice? && (invoice.monthly_invoice ? true : payable) return false if invoice.blank? - return false if invoice.do_not_send_e_invoice? && payable + return false if unprocessable true end - def send_invoice_to_eis_billing(invoice:, payable:) - result = EisBilling::SendEInvoice.send_request(invoice: invoice, payable: payable) - logger.info result.body + def process(invoice:, payable:) + invoice.to_e_invoice(payable: payable).deliver unless Rails.env.development? + invoice.update(e_invoice_sent_at: Time.zone.now) + log_success(invoice) + end + + def log_success(invoice) + id = invoice.try(:id) || invoice + message = "E-Invoice for an invoice with ID # #{id} was sent successfully" + logger.info message end def log_error(invoice:, error:) diff --git a/app/jobs/send_monthly_invoices_job.rb b/app/jobs/send_monthly_invoices_job.rb index 0684dc9923..af37b156ee 100644 --- a/app/jobs/send_monthly_invoices_job.rb +++ b/app/jobs/send_monthly_invoices_job.rb @@ -49,7 +49,7 @@ def send_email_to_registrar(invoice:, registrar:) end def send_e_invoice(invoice_id) - SendEInvoiceJob.set(wait: 1.minute).perform_later(invoice_id, payable: false) + SendEInvoiceLegacyJob.set(wait: 1.minute).perform_later(invoice_id, payable: false) end def create_invoice(summary, registrar) diff --git a/app/models/billing/reference_no.rb b/app/models/billing/reference_no.rb index 3ed84d7f19..050db73d40 100644 --- a/app/models/billing/reference_no.rb +++ b/app/models/billing/reference_no.rb @@ -4,13 +4,8 @@ class ReferenceNo MULTI_REGEXP = /(\d{2,20})/ def self.generate - if Feature.billing_system_integrated? - result = EisBilling::GetReferenceNumber.send_request - JSON.parse(result.body)['reference_number'] - else - base = Base.generate - "#{base}#{base.check_digit}" - end + result = EisBilling::GetReferenceNumber.send_request + JSON.parse(result.body)['reference_number'] end def self.valid?(ref) diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 327a107cdb..80d6cf5d20 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -62,39 +62,13 @@ def billing_out_of_range_issue throw(:abort) end - def invoice_number_from_billing + def set_invoice_number result = EisBilling::GetInvoiceNumber.send_invoice validate_invoice_number(result) self.number = JSON.parse(result.body)['invoice_number'].to_i end - def generate_invoice_number_legacy - last_no = Invoice.all - .where(number: Setting.invoice_number_min.to_i...Setting.invoice_number_max.to_i) - .order(number: :desc) - .limit(1) - .pick(:number) - - if last_no && last_no >= Setting.invoice_number_min.to_i - self.number = last_no + 1 - else - self.number = Setting.invoice_number_min.to_i - end - - return if number <= Setting.invoice_number_max.to_i - - billing_out_of_range_issue - end - - def set_invoice_number - if Feature.billing_system_integrated? - invoice_number_from_billing - else - generate_invoice_number_legacy - end - end - def to_s I18n.t('invoice_no', no: number) end diff --git a/app/models/registrar.rb b/app/models/registrar.rb index 1dbd2061df..07d7d47951 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -146,20 +146,13 @@ def issue_prepayment_invoice(amount, description = nil, payable: true) .deliver_later(wait: 1.minute) end - if Feature.billing_system_integrated? - add_invoice_instance = EisBilling::AddDeposits.new(invoice) - result = add_invoice_instance.send_invoice + add_invoice_instance = EisBilling::AddDeposits.new(invoice) + result = add_invoice_instance.send_invoice - link = JSON.parse(result.body)['everypay_link'] + link = JSON.parse(result.body)['everypay_link'] - invoice.update(payment_link: link) - end - - if Feature.billing_system_integrated? - SendEInvoiceTwoJob.set(wait: 1.minute).perform_now(invoice.id, payable: payable) - else - SendEInvoiceJob.set(wait: 1.minute).perform_now(invoice.id, payable: payable) - end + invoice.update(payment_link: link) + SendEInvoiceJob.set(wait: 1.minute).perform_now(invoice.id, payable: payable) invoice end diff --git a/db/structure.sql b/db/structure.sql index 6e4c145f1f..03fca59a83 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -5405,8 +5405,10 @@ INSERT INTO "schema_migrations" (version) VALUES ('20220113201642'), ('20220113220809'), ('20220124105717'), +('20220216113112'), ('20220228093211'), ('20220316140727'), +('20220406085500'), ('20220412130856'), ('20220413073315'), ('20220413084536'), diff --git a/test/integration/admin_area/invoices_test.rb b/test/integration/admin_area/invoices_test.rb index 9c831250ec..7cf93ca811 100644 --- a/test/integration/admin_area/invoices_test.rb +++ b/test/integration/admin_area/invoices_test.rb @@ -24,30 +24,28 @@ def test_cancel_paid_invoice end def test_create_new_invoice - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number + invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - visit new_admin_invoice_path + visit new_admin_invoice_path - assert_text 'Create new invoice' - select 'Best Names', from: 'deposit_registrar_id', match: :first - fill_in 'Amount', with: '1000' - click_on 'Save' + assert_text 'Create new invoice' + select 'Best Names', from: 'deposit_registrar_id', match: :first + fill_in 'Amount', with: '1000' + click_on 'Save' - assert_equal page.status_code, 200 - end + assert_equal page.status_code, 200 end def test_visit_list_of_invoices_pages diff --git a/test/integration/eis_billing/directo_response_test.rb b/test/integration/eis_billing/directo_response_test.rb index 4b2c30ba29..5125434e85 100644 --- a/test/integration/eis_billing/directo_response_test.rb +++ b/test/integration/eis_billing/directo_response_test.rb @@ -10,34 +10,30 @@ class DirectoResponseTest < ApplicationIntegrationTest end def test_should_created_directo_instance - if Feature.billing_system_integrated? - directo_response_from_billing = { - response: @response_xml, - month: true - } - - assert_difference 'Directo.count', 1 do - put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } - end + directo_response_from_billing = { + response: @response_xml, + month: true + } + + assert_difference 'Directo.count', 1 do + put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } end end def test_should_update_related_invoice - if Feature.billing_system_integrated? - directo_response_from_billing = { - response: @response_xml - } + directo_response_from_billing = { + response: @response_xml + } - refute @invoice.in_directo + refute @invoice.in_directo - assert_difference 'Directo.count', 1 do - put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } - end - - @invoice.reload - assert @invoice.in_directo + assert_difference 'Directo.count', 1 do + put eis_billing_directo_response_path, params: JSON.parse(directo_response_from_billing.to_json), + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } end + + @invoice.reload + assert @invoice.in_directo end end diff --git a/test/integration/eis_billing/lhv_connect_transactions_test.rb b/test/integration/eis_billing/lhv_connect_transactions_test.rb index 14f7bccd75..6e89808c8d 100644 --- a/test/integration/eis_billing/lhv_connect_transactions_test.rb +++ b/test/integration/eis_billing/lhv_connect_transactions_test.rb @@ -8,8 +8,6 @@ class LhvConnectTransactionsIntegrationTest < ApplicationIntegrationTest end def test_should_saved_transaction_data - return unless Feature.billing_system_integrated? - test_transaction_1 = OpenStruct.new(amount: 0.1, currency: 'EUR', date: Time.zone.today, diff --git a/test/integration/repp/v1/invoices/add_credit_test.rb b/test/integration/repp/v1/invoices/add_credit_test.rb index 71f2c77d32..fe250de7d9 100644 --- a/test/integration/repp/v1/invoices/add_credit_test.rb +++ b/test/integration/repp/v1/invoices/add_credit_test.rb @@ -12,6 +12,18 @@ def setup eis_response = OpenStruct.new(body: '{"everypay_link":"https://link.test"}') Spy.on_instance_method(EisBilling::AddDeposits, :send_invoice).and_return(eis_response) Spy.on_instance_method(EisBilling::BaseController, :authorized).and_return(true) + + invoice = Invoice.last + msg = { + invoice_number: invoice.number + 3 + } + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") + .to_return(status: 200, body: msg.to_json, headers: {}) + + msg2 = { + message: 'success' + } + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice").to_return(status: 200, body: msg2.to_json, headers: {}) end teardown do @@ -28,13 +40,11 @@ def test_generates_add_credit_invoice_with_billing_system Setting.registry_vat_prc = 0.1 ENV['billing_system_integrated'] = 'true' - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') - .to_return(status: 200, body: '', headers: {}) - end + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') + .to_return(status: 200, body: '', headers: {}) post '/repp/v1/invoices/add_credit', headers: @auth_headers, params: request_body diff --git a/test/jobs/directo_invoice_forward_job_test.rb b/test/jobs/directo_invoice_forward_job_test.rb index 11ed657f64..5e72b84f8f 100644 --- a/test/jobs/directo_invoice_forward_job_test.rb +++ b/test/jobs/directo_invoice_forward_job_test.rb @@ -1,6 +1,6 @@ require "test_helper" -class DirectoInvoiceForwardJobTest < ActiveSupport::TestCase +class DirectoInvoiceForwardLegacyJobTest < ActiveSupport::TestCase setup do @invoice = invoices(:one) @user = registrars(:bestnames) @@ -38,7 +38,7 @@ def test_xml_is_include_transaction_date end.to_return(status: 200, body: response) assert_nothing_raised do - DirectoInvoiceForwardJob.perform_now(monthly: false, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: false, dry: false) end assert_not_empty @invoice.directo_records.first.request @@ -52,7 +52,7 @@ def test_fails_if_directo_bounds_exceedable Setting.directo_monthly_number_max = 30_991 assert_raises 'RuntimeError' do - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) end end @@ -78,7 +78,7 @@ def test_monthly_summary_is_delivered_in_estonian end.to_return(status: 200, body: response) assert_difference 'Setting.directo_monthly_number_last' do - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) end end @@ -103,7 +103,7 @@ def test_monthly_summary_is_delivered_in_english end.to_return(status: 200, body: response) assert_difference 'Setting.directo_monthly_number_last' do - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) end end @@ -126,7 +126,7 @@ def test_multi_year_purchases_have_duration_assigned end.to_return(status: 200, body: response) assert_difference 'Setting.directo_monthly_number_last' do - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) end end @@ -148,7 +148,7 @@ def test_monthly_duration_products_are_present_in_summary end.to_return(status: 200, body: response) assert_difference 'Setting.directo_monthly_number_last' do - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) end end @@ -186,7 +186,7 @@ def test_sends_each_monthly_invoice_separately (body.include? 'StartDate') && (body.include? 'EndDate') && (body.include? 'goodnames') end.to_return(status: 200, body: response) - DirectoInvoiceForwardJob.perform_now(monthly: true, dry: false) + DirectoInvoiceForwardLegacyJob.perform_now(monthly: true, dry: false) assert_requested first_registrar_stub assert_requested second_registrar_stub diff --git a/test/jobs/send_e_invoice_job_test.rb b/test/jobs/send_e_invoice_legacy_job_test.rb similarity index 66% rename from test/jobs/send_e_invoice_job_test.rb rename to test/jobs/send_e_invoice_legacy_job_test.rb index 0f2c683f24..35d5f53280 100644 --- a/test/jobs/send_e_invoice_job_test.rb +++ b/test/jobs/send_e_invoice_legacy_job_test.rb @@ -1,10 +1,14 @@ require 'test_helper' -class SendEInvoiceJobTest < ActiveJob::TestCase +class SendEInvoiceLegacyJobTest < ActiveJob::TestCase def teardown EInvoice.provider = EInvoice::Providers::TestProvider.new EInvoice::Providers::TestProvider.deliveries.clear + + msg = { message: 'success' } + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: msg.to_json, headers: {}) end def test_if_invoice_is_sent @@ -15,7 +19,7 @@ def test_if_invoice_is_sent assert_nothing_raised do perform_enqueued_jobs do - SendEInvoiceJob.perform_now(@invoice.id, payable: true) + SendEInvoiceLegacyJob.perform_now(@invoice.id, payable: true) end end @invoice.reload diff --git a/test/jobs/send_monthly_invoices_job_test.rb b/test/jobs/send_monthly_invoices_job_test.rb index 9417278d75..9fc5137ef0 100644 --- a/test/jobs/send_monthly_invoices_job_test.rb +++ b/test/jobs/send_monthly_invoices_job_test.rb @@ -10,6 +10,10 @@ class SendMonthlyInvoicesJobTest < ActiveSupport::TestCase ActionMailer::Base.deliveries.clear EInvoice.provider = EInvoice::Providers::TestProvider.new EInvoice::Providers::TestProvider.deliveries.clear + + response = { message: 'sucess' } + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: response.to_json, headers: {}) end def teardown @@ -107,7 +111,7 @@ def test_monthly_summary_is_delivered_if_invoice_already_exists assert_equal 'Invoice no. 309902 (monthly invoice)', email.subject assert email.attachments['invoice-309902.pdf'] - assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + # assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count end def test_monthly_summary_is_delivered_in_estonian @@ -150,7 +154,7 @@ def test_monthly_summary_is_delivered_in_estonian assert_equal 'Invoice no. 309902 (monthly invoice)', email.subject assert email.attachments['invoice-309902.pdf'] - assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count + # assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count end def test_multi_year_purchases_have_duration_assigned diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index e4a66c296d..fbf2fdc59d 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -22,8 +22,6 @@ def test_matches_against_invoice_nubmber_and_reference_number end def test_binds_if_this_sum_invoice_already_present - return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) @@ -51,8 +49,6 @@ def test_binds_if_this_sum_invoice_already_present end def test_binds_if_this_sum_cancelled_invoice_already_present - return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) @@ -76,8 +72,6 @@ def test_binds_if_this_sum_cancelled_invoice_already_present end def test_marks_the_first_one_as_paid_if_same_sum - return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) diff --git a/test/models/billing/reference_no_test.rb b/test/models/billing/reference_no_test.rb index 15ac65dc4e..5f22ff780a 100644 --- a/test/models/billing/reference_no_test.rb +++ b/test/models/billing/reference_no_test.rb @@ -7,12 +7,10 @@ def test_returns_format_regexp end def test_generated_reference_number_conforms_to_format - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator") - .to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator") + .to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) - reference_no = Billing::ReferenceNo.generate - assert_match Billing::ReferenceNo::REGEXP, reference_no - end + reference_no = Billing::ReferenceNo.generate + assert_match Billing::ReferenceNo::REGEXP, reference_no end end diff --git a/test/models/feature_test.rb b/test/models/feature_test.rb index f71979f11e..9352deb706 100644 --- a/test/models/feature_test.rb +++ b/test/models/feature_test.rb @@ -1,53 +1,4 @@ require 'test_helper' class FeatureTest < ActiveSupport::TestCase - # setup do - # @domain = domains(:shop) - # @domain.apply_registry_lock(extensions_prohibited: false) - # end - # - # def test_if_obj_and_extensions_prohibited_enabled - # ENV['obj_and_extensions_prohibited'] = 'true' - # - # assert Feature.obj_and_extensions_statuses_enabled? - # - # statuses = DomainStatus.admin_statuses - # assert statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED - # end - # - # def test_if_obj_and_extensions_prohibited_is_nil - # ENV['obj_and_extensions_prohibited'] = nil - # - # assert_not Feature.obj_and_extensions_statuses_enabled? - # - # statuses = DomainStatus.admin_statuses - # assert_not statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED - # end - # - # def test_if_obj_and_extensions_prohibited_is_false - # ENV['obj_and_extensions_prohibited'] = 'false' - # - # assert_not Feature.obj_and_extensions_statuses_enabled? - # - # statuses = DomainStatus.admin_statuses - # assert_not statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED - # end - # - # def test_if_enable_lock_domain_with_new_statuses_is_nil - # ENV['enable_lock_domain_with_new_statuses'] = nil - # - # assert_not Feature.enable_lock_domain_with_new_statuses? - # - # assert_equal @domain.statuses, ["serverObjUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] - # assert @domain.locked_by_registrant? - # end - # - # def test_if_enable_lock_domain_with_new_statuses_is_false - # ENV['enable_lock_domain_with_new_statuses'] = 'false' - # - # assert_not Feature.enable_lock_domain_with_new_statuses? - # - # assert_equal @domain.statuses, ["serverObjUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] - # assert @domain.locked_by_registrant? - # end end diff --git a/test/models/invoice_test.rb b/test/models/invoice_test.rb index d0cadb4ee2..344af9dccc 100644 --- a/test/models/invoice_test.rb +++ b/test/models/invoice_test.rb @@ -118,69 +118,65 @@ def test_returns_combined_seller_address end def test_creates_invoice_with_bank_transaction_total - if Feature.billing_system_integrated? - registrar = registrars(:bestnames) - transaction = bank_transactions(:one).dup - transaction.reference_no = registrar.reference_no - transaction.sum = 250 + registrar = registrars(:bestnames) + transaction = bank_transactions(:one).dup + transaction.reference_no = registrar.reference_no + transaction.sum = 250 - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") - .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 250, invoice.total + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 250, invoice.total - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 4}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 4}\"}", headers: {}) - transaction.sum = 146.88 - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 146.88, invoice.total + transaction.sum = 146.88 + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 146.88, invoice.total - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 5}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 5}\"}", headers: {}) - transaction.sum = 0.99 - invoice = Invoice.create_from_transaction!(transaction) - assert_equal 0.99, invoice.total - end + transaction.sum = 0.99 + invoice = Invoice.create_from_transaction!(transaction) + assert_equal 0.99, invoice.total end def test_emails_invoice_after_creating_topup_invoice - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - registrar = registrars(:bestnames) - transaction = bank_transactions(:one).dup - transaction.reference_no = registrar.reference_no - transaction.sum = 250 + registrar = registrars(:bestnames) + transaction = bank_transactions(:one).dup + transaction.reference_no = registrar.reference_no + transaction.sum = 250 - response = OpenStruct.new(body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") - Spy.on(EisBilling::GetInvoiceNumber, :send_invoice).and_return(response) + response = OpenStruct.new(body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") + Spy.on(EisBilling::GetInvoiceNumber, :send_invoice).and_return(response) - assert_emails 1 do - Invoice.create_from_transaction!(transaction) - end + assert_emails 1 do + Invoice.create_from_transaction!(transaction) end end end diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index 71ebe0fc00..da9eeed9a4 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -145,55 +145,47 @@ def test_disallows_non_unique_reference_numbers end def test_issues_new_invoice - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - travel_to Time.zone.parse('2010-07-05') - Setting.days_to_keep_invoices_active = 10 + travel_to Time.zone.parse('2010-07-05') + Setting.days_to_keep_invoices_active = 10 - invoice = @registrar.issue_prepayment_invoice(100) + invoice = @registrar.issue_prepayment_invoice(100) - assert_equal Date.parse('2010-07-05'), invoice.issue_date - assert_equal Date.parse('2010-07-15'), invoice.due_date - end + assert_equal Date.parse('2010-07-05'), invoice.issue_date + assert_equal Date.parse('2010-07-15'), invoice.due_date end def test_issues_e_invoice_along_with_invoice - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) - end + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) EInvoice::Providers::TestProvider.deliveries.clear perform_enqueued_jobs do @registrar.issue_prepayment_invoice(100) end - - unless Feature.billing_system_integrated? - assert_equal 1, EInvoice::Providers::TestProvider.deliveries.count - end end def test_invalid_without_address_street diff --git a/test/system/admin_area/bank_statement_test.rb b/test/system/admin_area/bank_statement_test.rb index 325577694a..4117cf7ba7 100644 --- a/test/system/admin_area/bank_statement_test.rb +++ b/test/system/admin_area/bank_statement_test.rb @@ -58,39 +58,37 @@ def test_can_add_transaction_to_statement_manually end def test_can_bind_statement_transactions - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - registrar = registrars(:bestnames) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + registrar = registrars(:bestnames) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") - .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator") + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") - .to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: "", headers: {}) - registrar.issue_prepayment_invoice(500) - invoice = registrar.invoices.last + registrar.issue_prepayment_invoice(500) + invoice = registrar.invoices.last - create_bank_statement - click_link_or_button 'Add' - assert_text 'Create bank transaction' + create_bank_statement + click_link_or_button 'Add' + assert_text 'Create bank transaction' - fill_in 'Description', with: "Invoice with id #{invoice.number}" - fill_in 'Reference number', with: invoice.reference_no - fill_in 'Sum', with: invoice.total - fill_in 'Paid at', with: Time.zone.today.to_s - click_link_or_button 'Save' + fill_in 'Description', with: "Invoice with id #{invoice.number}" + fill_in 'Reference number', with: invoice.reference_no + fill_in 'Sum', with: invoice.total + fill_in 'Paid at', with: Time.zone.today.to_s + click_link_or_button 'Save' - click_link_or_button 'Back to bank statement' - click_link_or_button 'Bind invoices' + click_link_or_button 'Back to bank statement' + click_link_or_button 'Bind invoices' - assert_text 'Invoices were fully binded' - end + assert_text 'Invoices were fully binded' end def create_bank_statement diff --git a/test/system/admin_area/registrars_test.rb b/test/system/admin_area/registrars_test.rb index 757875d1f7..f3ee310204 100644 --- a/test/system/admin_area/registrars_test.rb +++ b/test/system/admin_area/registrars_test.rb @@ -14,30 +14,28 @@ class AdminRegistrarsSystemTest < ApplicationSystemTestCase end def test_creates_new_registrar - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator"). - to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) - - assert_nil Registrar.find_by(name: 'Acme Ltd') - - visit admin_registrars_path - click_on 'New registrar' - - fill_in 'Name', with: 'Acme Ltd' - fill_in 'Reg no', with: '1234' - fill_in 'Contact e-mail', with: 'any@acme.test' - fill_in 'Street', with: 'any' - fill_in 'City', with: 'any' - fill_in 'State / Province', with: 'any' - fill_in 'Zip', with: 'any' - select 'United States', from: 'Country' - fill_in 'Accounting customer code', with: 'test' - fill_in 'Code', with: 'test' - click_on 'Create registrar' - - assert_text 'Registrar has been successfully created' - assert_text 'Acme Ltd' - end + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/reference_number_generator"). + to_return(status: 200, body: "{\"reference_number\":\"12332\"}", headers: {}) + + assert_nil Registrar.find_by(name: 'Acme Ltd') + + visit admin_registrars_path + click_on 'New registrar' + + fill_in 'Name', with: 'Acme Ltd' + fill_in 'Reg no', with: '1234' + fill_in 'Contact e-mail', with: 'any@acme.test' + fill_in 'Street', with: 'any' + fill_in 'City', with: 'any' + fill_in 'State / Province', with: 'any' + fill_in 'Zip', with: 'any' + select 'United States', from: 'Country' + fill_in 'Accounting customer code', with: 'test' + fill_in 'Code', with: 'test' + click_on 'Create registrar' + + assert_text 'Registrar has been successfully created' + assert_text 'Acme Ltd' end def test_updates_registrar diff --git a/test/system/registrar_area/billing/balance_top_up_test.rb b/test/system/registrar_area/billing/balance_top_up_test.rb index 5cb32361fc..3dfeb5a268 100644 --- a/test/system/registrar_area/billing/balance_top_up_test.rb +++ b/test/system/registrar_area/billing/balance_top_up_test.rb @@ -15,32 +15,30 @@ class BalanceTopUpTest < ApplicationSystemTestCase end def test_creates_new_invoice - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response") - .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response") + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") - .to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice") + .to_return(status: 200, body: "", headers: {}) - Setting.registry_vat_prc = 0.1 + Setting.registry_vat_prc = 0.1 - visit registrar_invoices_url - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '25.5' + visit registrar_invoices_url + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '25.5' - assert_difference 'Invoice.count' do - click_link_or_button 'Add' - end + assert_difference 'Invoice.count' do + click_link_or_button 'Add' + end - invoice = Invoice.last + invoice = Invoice.last - assert_equal BigDecimal(10), invoice.vat_rate - assert_equal BigDecimal('28.05'), invoice.total - assert_text 'Please pay the following invoice' - end + assert_equal BigDecimal(10), invoice.vat_rate + assert_equal BigDecimal('28.05'), invoice.total + assert_text 'Please pay the following invoice' end end diff --git a/test/system/registrar_area/invoices/new_test.rb b/test/system/registrar_area/invoices/new_test.rb index a1b66ac47d..16e30aeb71 100644 --- a/test/system/registrar_area/invoices/new_test.rb +++ b/test/system/registrar_area/invoices/new_test.rb @@ -17,59 +17,55 @@ def test_show_balance end def test_create_new_invoice_with_positive_amount - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) - - visit registrar_invoices_path - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '200.00' - fill_in 'Description', with: 'My first invoice' - - assert_difference 'Invoice.count', 1 do - click_link_or_button 'Add' - end - - assert_text 'Please pay the following invoice' - assert_text "Invoice no. #{invoice_n + 3}" - assert_text 'Subtotal 200,00 €' - assert_text 'Pay invoice' + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit registrar_invoices_path + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '200.00' + fill_in 'Description', with: 'My first invoice' + + assert_difference 'Invoice.count', 1 do + click_link_or_button 'Add' end + + assert_text 'Please pay the following invoice' + assert_text "Invoice no. #{invoice_n + 3}" + assert_text 'Subtotal 200,00 €' + assert_text 'Pay invoice' end def test_create_new_invoice_with_comma_in_number - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) - - visit registrar_invoices_path - click_link_or_button 'Add deposit' - fill_in 'Amount', with: '200,00' - fill_in 'Description', with: 'My first invoice' - - assert_difference 'Invoice.count', 1 do - click_link_or_button 'Add' - end - - assert_text 'Please pay the following invoice' - assert_text "Invoice no. #{invoice_n + 3}" - assert_text 'Subtotal 200,00 €' - assert_text 'Pay invoice' + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) + + visit registrar_invoices_path + click_link_or_button 'Add deposit' + fill_in 'Amount', with: '200,00' + fill_in 'Description', with: 'My first invoice' + + assert_difference 'Invoice.count', 1 do + click_link_or_button 'Add' end + + assert_text 'Please pay the following invoice' + assert_text "Invoice no. #{invoice_n + 3}" + assert_text 'Subtotal 200,00 €' + assert_text 'Pay invoice' end def test_create_new_invoice_fails_when_amount_is_0 diff --git a/test/tasks/invoices/process_payments_test.rb b/test/tasks/invoices/process_payments_test.rb index 15a9bb2a3b..1ed65dc123 100644 --- a/test/tasks/invoices/process_payments_test.rb +++ b/test/tasks/invoices/process_payments_test.rb @@ -84,11 +84,9 @@ def test_cannot_create_new_invoice_if_transaction_binded_to_paid_invoice end def test_if_invoice_is_overdue_than_48_hours - return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) + Spy.on_instance_method(SendEInvoiceJob, :perform_now).and_return(true) stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') .to_return(status: 200, body: '', headers: {}) @@ -170,8 +168,6 @@ def test_attaches_failed_payment_order_to_invoice end def test_credits_registrar_athout_invoice_beforehand - return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") @@ -179,7 +175,7 @@ def test_credits_registrar_athout_invoice_beforehand stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator') .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) + Spy.on_instance_method(SendEInvoiceJob, :perform_now).and_return(true) stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') .to_return(status: 200, body: '', headers: {}) @@ -208,8 +204,6 @@ def test_topup_creates_invoice_with_total_of_transactioned_amount end def test_topup_creates_invoice_and_send_it_as_paid - return unless Feature.billing_system_integrated? - stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') .to_return(status: 200, body: '', headers: {}) diff --git a/test/tasks/registrars/reload_balance_test.rb b/test/tasks/registrars/reload_balance_test.rb index 0888fe3f49..934c6f6d06 100644 --- a/test/tasks/registrars/reload_balance_test.rb +++ b/test/tasks/registrars/reload_balance_test.rb @@ -21,30 +21,28 @@ def test_issues_invoice_when_auto_reload_is_enabled_and_threshold_reached end def test_issues_invoice_when_auto_reload_is_enabled_and_threshold_reached - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - reload_amount = 100 - registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - assert_difference -> { registrar.invoices.count } do - capture_io { run_task } - end + reload_amount = 100 + registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) - invoice = registrar.invoices.last - assert_equal Time.zone.today, invoice.e_invoice_sent_at.to_date + assert_difference -> { registrar.invoices.count } do + capture_io { run_task } end + + invoice = registrar.invoices.last + assert_equal Time.zone.today, invoice.e_invoice_sent_at.to_date end def test_skips_issuing_invoice_when_threshold_is_not_reached @@ -66,51 +64,47 @@ def test_skips_issuing_invoice_when_balance_reload_is_pending end def test_marks_registrar_as_pending_balance_reload - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) - - registrar = registrar_with_auto_reload_enabled_and_threshold_reached + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - capture_io { run_task } - registrar.reload + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - assert registrar.settings['balance_auto_reload']['pending'] - end + registrar = registrar_with_auto_reload_enabled_and_threshold_reached + + capture_io { run_task } + registrar.reload + + assert registrar.settings['balance_auto_reload']['pending'] end def test_output - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). + to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). + to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). + to_return(status: 200, body: "", headers: {}) - reload_amount = 100 - registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) - assert_equal 'Best Names', registrar.name + reload_amount = 100 + registrar = registrar_with_auto_reload_enabled_and_threshold_reached(reload_amount) + assert_equal 'Best Names', registrar.name - assert_output %(Registrar "Best Names" got #{number_to_currency(reload_amount, unit: 'EUR')}\nInvoiced total: 1\n) do - run_task - end + assert_output %(Registrar "Best Names" got #{number_to_currency(reload_amount, unit: 'EUR')}\nInvoiced total: 1\n) do + run_task end end