discourse/spec/jobs/jobs_base_spec.rb
Luciano Sousa b3d769ff4f Update rspec syntax to v3
update rspec syntax to v3

change syntax to rspec v3

oops. fix typo

mailers classes with rspec3 syntax

helpers with rspec3 syntax

jobs with rspec3 syntax

serializers with rspec3 syntax

views with rspec3 syntax

support to rspec3 syntax

category spec with rspec3 syntax
2015-01-05 11:59:30 -03:00

50 lines
1.2 KiB
Ruby

require 'spec_helper'
require_dependency 'jobs/base'
describe Jobs::Base do
class GoodJob < Jobs::Base
attr_accessor :count
def execute(args)
self.count ||= 0
self.count += 1
end
end
class BadJob < Jobs::Base
attr_accessor :fail_count
def execute(args)
@fail_count ||= 0
@fail_count += 1
raise StandardError
end
end
it 'handles correct jobs' do
job = GoodJob.new
job.perform({})
expect(job.count).to eq(1)
end
it 'handles errors in multisite' do
RailsMultisite::ConnectionManagement.expects(:all_dbs).returns(['default','default','default'])
# one exception per database
Discourse.expects(:handle_exception).times(3)
bad = BadJob.new
expect{bad.perform({})}.to raise_error
expect(bad.fail_count).to eq(3)
end
it 'delegates the process call to execute' do
Jobs::Base.any_instance.expects(:execute).with('hello' => 'world')
Jobs::Base.new.perform('hello' => 'world', 'sync_exec' => true)
end
it 'converts to an indifferent access hash' do
Jobs::Base.any_instance.expects(:execute).with(instance_of(HashWithIndifferentAccess))
Jobs::Base.new.perform('hello' => 'world', 'sync_exec' => true)
end
end