diff --git a/app/controllers/spree/admin/invoices_controller.rb b/app/controllers/spree/admin/invoices_controller.rb index 61ab99eb44..81f79a299e 100644 --- a/app/controllers/spree/admin/invoices_controller.rb +++ b/app/controllers/spree/admin/invoices_controller.rb @@ -12,21 +12,11 @@ module Spree def show invoice_id = params[:id] - invoice_pdf = BulkInvoiceService.new.filepath(invoice_id) + invoice_pdf = filepath(invoice_id) send_file(invoice_pdf, type: 'application/pdf', disposition: :inline) end - def create - Spree::Order.where(id: params[:order_ids]).find_each do |order| - authorize! :invoice, order - end - invoice_service = BulkInvoiceService.new - invoice_service.start_pdf_job(params[:order_ids]) - - render json: invoice_service.id, status: :ok - end - def generate @order = Order.find_by(number: params[:order_id]) authorize! :invoice, @order @@ -34,14 +24,10 @@ module Spree redirect_back(fallback_location: spree.admin_dashboard_path) end - def poll - invoice_id = params[:invoice_id] + private - if BulkInvoiceService.new.invoice_created? invoice_id - render json: { created: true }, status: :ok - else - render json: { created: false }, status: :unprocessable_entity - end + def filepath(invoice_id) + "tmp/invoices/#{invoice_id}.pdf" end end end diff --git a/app/services/bulk_invoice_service.rb b/app/services/bulk_invoice_service.rb deleted file mode 100644 index dc1b31f17d..0000000000 --- a/app/services/bulk_invoice_service.rb +++ /dev/null @@ -1,36 +0,0 @@ -# frozen_string_literal: true - -class BulkInvoiceService - attr_reader :id - - def initialize - @id = new_invoice_id - end - - def start_pdf_job(order_ids) - BulkInvoiceJob.perform_later order_ids, "#{file_directory}/#{@id}.pdf" - end - - def invoice_created?(invoice_id) - File.exist? filepath(invoice_id) - end - - def filepath(invoice_id) - "#{directory}/#{invoice_id}.pdf" - end - - private - - def new_invoice_id - Time.zone.now.to_i.to_s - end - - def directory - 'tmp/invoices' - end - - def file_directory - Dir.mkdir(directory) unless File.exist?(directory) - directory - end -end diff --git a/spec/controllers/spree/admin/invoices_controller_spec.rb b/spec/controllers/spree/admin/invoices_controller_spec.rb deleted file mode 100644 index 474b110c10..0000000000 --- a/spec/controllers/spree/admin/invoices_controller_spec.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe Spree::Admin::InvoicesController, type: :controller do - let(:order) { create(:order_with_totals_and_distribution) } - let(:enterprise_user) { create(:user) } - let!(:enterprise) { create(:enterprise, owner: enterprise_user) } - - before do - allow(controller).to receive(:spree_current_user) { enterprise_user } - end - - describe "#create" do - it "enqueues a job to create a bulk invoice and returns the filename" do - expect do - spree_post :create, order_ids: [order.id] - end.to enqueue_job BulkInvoiceJob - end - end - - describe "#poll" do - let(:invoice_id) { '479186263' } - - context "when the file is available" do - it "returns true" do - allow(File).to receive(:exist?) - allow(File).to receive(:exist?).with("tmp/invoices/#{invoice_id}.pdf").and_return(true) - - spree_get :poll, invoice_id: invoice_id - - expect(response.body).to eq({ created: true }.to_json) - expect(response.status).to eq 200 - end - end - - context "when the file is not available" do - it "returns false" do - spree_get :poll, invoice_id: invoice_id - - expect(response.body).to eq({ created: false }.to_json) - expect(response.status).to eq 422 - end - end - end -end diff --git a/spec/services/bulk_invoice_service_spec.rb b/spec/services/bulk_invoice_service_spec.rb deleted file mode 100644 index c2142d15b6..0000000000 --- a/spec/services/bulk_invoice_service_spec.rb +++ /dev/null @@ -1,56 +0,0 @@ -# frozen_string_literal: false - -require 'spec_helper' -require 'spree/payment_methods_helper' - -describe BulkInvoiceService do - include ActiveJob::TestHelper - include Spree::PaymentMethodsHelper - - let(:service) { BulkInvoiceService.new } - - describe "#start_pdf_job" do - it "starts a background process to create a pdf with multiple invoices" do - expect do - service.start_pdf_job [1, 2] - end.to enqueue_job BulkInvoiceJob - end - - it "creates a PDF invoice" do - order = create(:completed_order_with_fees) - order.bill_address = order.ship_address - order.save! - - perform_enqueued_jobs do - service.start_pdf_job([order.id]) - end - - expect(service.invoice_created?(service.id)).to be_truthy - end - end - - describe "#invoice_created?" do - context "when the invoice has been created" do - it "returns true" do - allow(File).to receive(:exist?).and_return(true) - - created = service.invoice_created? '45891723' - expect(created).to be_truthy - end - end - - context "when the invoice has not been created" do - it "returns false" do - created = service.invoice_created? '1234567' - expect(created).to_not be_truthy - end - end - end - - describe "#filepath" do - it "returns the filepath of a given invoice" do - filepath = service.filepath '1234567' - expect(filepath).to eq 'tmp/invoices/1234567.pdf' - end - end -end