118 lines
3.0 KiB
Ruby
118 lines
3.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Hanami::Mailer::Configuration do
|
|
subject { described_class.new }
|
|
|
|
describe '#root=' do
|
|
describe 'when a value is given' do
|
|
describe 'and it is a string' do
|
|
it 'sets it as a Pathname' do
|
|
subject.root = 'spec'
|
|
expect(subject.root).to eq(Pathname.new('spec').realpath)
|
|
end
|
|
end
|
|
|
|
describe 'and it is a pathname' do
|
|
it 'sets it' do
|
|
subject.root = Pathname.new('spec')
|
|
expect(subject.root).to eq(Pathname.new('spec').realpath)
|
|
end
|
|
end
|
|
|
|
describe 'and it implements #to_pathname' do
|
|
before do
|
|
RootPath = Struct.new(:path) do
|
|
def to_pathname
|
|
Pathname(path)
|
|
end
|
|
end
|
|
end
|
|
|
|
after do
|
|
Object.send(:remove_const, :RootPath)
|
|
end
|
|
|
|
it 'sets the converted value' do
|
|
subject.root = RootPath.new('spec')
|
|
expect(subject.root).to eq(Pathname.new('spec').realpath)
|
|
end
|
|
end
|
|
|
|
describe 'and it is an unexisting path' do
|
|
it 'raises an error' do
|
|
expect do
|
|
subject.root = '/path/to/unknown'
|
|
end.to raise_error(Errno::ENOENT)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'when a value is not given' do
|
|
it 'defaults to the current path' do
|
|
expect(subject.root).to eq(Pathname.new('.').realpath)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#delivery_method' do
|
|
describe 'when not previously set' do
|
|
it 'defaults to SMTP' do
|
|
expect(subject.delivery_method).to eq(:smtp)
|
|
end
|
|
end
|
|
|
|
describe 'set with a symbol' do
|
|
before do
|
|
subject.delivery_method = :exim, { location: '/path/to/exim' }
|
|
end
|
|
|
|
it 'saves the delivery method in the configuration' do
|
|
expect(subject.delivery_method).to eq([:exim, { location: '/path/to/exim' }])
|
|
end
|
|
end
|
|
|
|
describe 'set with a class' do
|
|
before do
|
|
subject.delivery_method = MandrillDeliveryMethod,
|
|
{ username: 'mandrill-username', password: 'mandrill-api-key' }
|
|
end
|
|
|
|
it 'saves the delivery method in the configuration' do
|
|
expect(subject.delivery_method).to eq([MandrillDeliveryMethod, username: 'mandrill-username', password: 'mandrill-api-key'])
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#default_charset' do
|
|
describe 'when not previously set' do
|
|
it 'defaults to UTF-8' do
|
|
expect(subject.default_charset).to eq('UTF-8')
|
|
end
|
|
end
|
|
|
|
describe 'when set' do
|
|
before do
|
|
subject.default_charset = 'iso-8859-1'
|
|
end
|
|
|
|
it 'saves the delivery method in the configuration' do
|
|
expect(subject.default_charset).to eq('iso-8859-1')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#freeze" do
|
|
before do
|
|
subject.freeze
|
|
end
|
|
|
|
it "is frozen" do
|
|
expect(subject).to be_frozen
|
|
end
|
|
|
|
it "raises error if trying to add a mailer" do
|
|
expect { subject.add_mailer(WelcomeMailer) }.to raise_error(RuntimeError)
|
|
end
|
|
end
|
|
end
|