Skip to content

Commit

Permalink
Merge pull request #218 from mberlanda/job-cc
Browse files Browse the repository at this point in the history
test: increase jobs code coverage
  • Loading branch information
mberlanda committed Dec 14, 2021
2 parents 1e5f305 + c115b33 commit cdcdecc
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
7 changes: 5 additions & 2 deletions app/jobs/mailchimp_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ class MailchimpJob < ApplicationJob
queue_as :default

def perform(*users_to_add)
gibbon = Gibbon::Request.new
users_to_add.each do |u|
gibbon.lists(Mailchimp.list_id).members(calculate_id(u)).upsert(
gibbon_request.lists(Mailchimp.list_id).members(calculate_id(u)).upsert(
**format_user_body(u)
)
u.update(mailing_listed: true)
Expand All @@ -15,6 +14,10 @@ def perform(*users_to_add)
end
end

def gibbon_request
@gibbon_request ||= Gibbon::Request.new
end

private

def calculate_id(u)
Expand Down
34 changes: 34 additions & 0 deletions spec/jobs/mailchimp_job_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# frozen_string_literal: true

require 'rails_helper'

RSpec.describe MailchimpJob do
let(:job) { described_class.new }
let(:user) { FactoryBot.create(:user) }

before do
allow(Mailchimp).to receive(:calculate_id).and_return(123_456)
end

context 'when response successfull' do
it 'updates user mailing_listed attribute' do
expect(user.mailing_listed).to eq(false)

allow(job.gibbon_request).to receive(:upsert).and_return(true)
job.perform(user)

expect(user.mailing_listed).to eq(true)
end
end

context 'when response is an error' do
it 'does not update user mailing_listed attribute' do
expect(user.mailing_listed).to eq(false)

allow(job.gibbon_request).to receive(:upsert).and_raise(Gibbon::MailChimpError)
job.perform(user)

expect(user.mailing_listed).to eq(false)
end
end
end

0 comments on commit cdcdecc

Please sign in to comment.