Improve code style and docs of job

This commit is contained in:
Pau Perez
2018-01-29 15:34:35 +01:00
parent be07996656
commit aa4bd7f397
3 changed files with 21 additions and 13 deletions

View File

@@ -1,6 +1,9 @@
# Deliers an email with a report of the order cycle to each of its suppliers
OrderCycleNotificationJob = Struct.new(:order_cycle_id) do
def perform
order_cycle = OrderCycle.find order_cycle_id
order_cycle.suppliers.each { |supplier| ProducerMailer.order_cycle_report(supplier, order_cycle).deliver }
order_cycle = OrderCycle.find(order_cycle_id)
order_cycle.suppliers.each do |supplier|
ProducerMailer.order_cycle_report(supplier, order_cycle).deliver
end
end
end

View File

@@ -12,12 +12,14 @@ class ProducerMailer < Spree::BaseMailer
subject = "[#{Spree::Config.site_name}] #{I18n.t('producer_mailer.order_cycle.subject', producer: producer.name)}"
if has_orders? order_cycle, producer
mail(to: @producer.contact.email,
from: from_address,
subject: subject,
reply_to: @coordinator.contact.email,
cc: @coordinator.contact.email)
if has_orders?(order_cycle, producer)
mail(
to: @producer.contact.email,
from: from_address,
subject: subject,
reply_to: @coordinator.contact.email,
cc: @coordinator.contact.email
)
end
end
@@ -30,7 +32,7 @@ class ProducerMailer < Spree::BaseMailer
def line_items_from(order_cycle, producer)
Spree::LineItem.
joins(:order => :order_cycle, :variant => :product).
joins(order: :order_cycle, variant: :product).
where('order_cycles.id = ?', order_cycle).
merge(Spree::Product.in_supplier(producer)).
merge(Spree::Order.by_state('complete'))

View File

@@ -2,11 +2,14 @@ require 'spec_helper'
describe OrderCycleNotificationJob do
let(:order_cycle) { create(:order_cycle) }
let(:mail) { double(:mail, deliver: true) }
it "sends a mail to each supplier" do
mail = double(:mail)
allow(mail).to receive(:deliver)
expect(ProducerMailer).to receive(:order_cycle_report).twice.and_return(mail)
before do
allow(ProducerMailer).to receive(:order_cycle_report).twice.and_return(mail)
end
it 'sends a mail to each supplier' do
run_job OrderCycleNotificationJob.new(order_cycle.id)
expect(ProducerMailer).to have_received(:order_cycle_report).twice
end
end