Test email through resque queue #11692

pull/11911/head
Juan Ignacio Sánchez Lara 8 years ago
parent f858216be4
commit ca818a9dc2

@ -0,0 +1,12 @@
module CartoGearsApi
module Mailer
class TestMail < ActionMailer::Base
def test_mail(from, to, subject)
@from = from
@to = to
@subject = subject
mail(to: to, from: from, subject: subject).deliver
end
end
end
end

@ -0,0 +1,5 @@
<h1><%= @subject %></h1>
<h2>from: <%= @from %></h2>
<h2>to: <%= @to %></h2>
This is a test email

@ -0,0 +1,13 @@
# encoding: utf-8
module CartoGearsApi
module Queue
class GenericJob
@queue = :gears
def self.perform(class_name, method, *args)
Object.const_get(class_name).send(method, *args)
end
end
end
end

@ -0,0 +1,9 @@
module CartoGearsApi
module Queue
class JobsService
def send_job(class_name, method, *args)
::Resque.enqueue(CartoGearsApi::Queue::GenericJob, class_name, method, *args)
end
end
end
end

@ -0,0 +1,16 @@
require 'spec_helper'
require 'carto_gears_api/queue/generic_job'
require 'carto_gears_api/test_mail'
describe CartoGearsApi::Queue::GenericJob do
describe '#perform' do
it 'instantiates the class, and invokes the method with random parameters' do
CartoGearsApi::TestMail.any_instance.should_receive(:test_mail).with('param1', 2)
CartoGearsApi::Queue::GenericJob.new.perform(CartoGearsApi::Mailer::TestMail,
:test_mail,
'support@carto.com',
'support@carto.com',
'Test email')
end
end
end

@ -0,0 +1,21 @@
require 'spec_helper'
require 'carto_gears_api/queue/jobs_service'
require 'carto_gears_api/queue/generic_job'
require 'carto_gears_api/test_mail'
describe CartoGearsApi::Queue::JobsService do
let(:service) { CartoGearsApi::Queue::JobsService.new }
module Resque; end
describe '#send_job' do
it 'enqueues a Resque::CartoGearsJobs::GenericJob#perform with the class, method and random parameters' do
::Resque.should_receive(:enqueue).with(CartoGearsApi::Queue::GenericJob,
CartoGearsApi::TestMail,
:test_mail,
'param1',
2)
service.send_job('CartoGearsApi::Mailer::TestMail', :test_mail, 'param1', 2)
end
end
end

@ -1,2 +1,2 @@
#!/bin/sh
VVERBOSE=true QUEUE=imports,exports,users,user_dbs,geocodings,synchronizations,tracker,user_migrations rake environment resque:work
VVERBOSE=true QUEUE=imports,exports,users,user_dbs,geocodings,synchronizations,tracker,user_migrations,gears rake environment resque:work

@ -61,7 +61,7 @@ class CustomPlan < Zeus::Rails
def carto_resque
ENV['VVERBOSE'] = 'true'
ENV['QUEUE'] = 'imports,exports,users,user_dbs,geocodings,synchronizations,tracker,user_migrations'
ENV['QUEUE'] = 'imports,exports,users,user_dbs,geocodings,synchronizations,tracker,user_migrations,gears'
ARGV.replace(['resque:work'])
Rake.application.run
end

Loading…
Cancel
Save