require 'spec_helper'

describe MailConfiguration do
  describe 'entries=' do
    let(:mail_settings) { instance_double(Spree::Core::MailSettings) }
    let(:entries) do
      { smtp_username: "smtp_username", mail_auth_type: "login" }
    end

    before do
      allow(Spree::Core::MailSettings).to receive(:init) { mail_settings }
    end

    # keeps spree_config unchanged
    around do |example|
      original_smtp_username = Spree::Config[:smtp_username]
      original_mail_auth_type = Spree::Config[:mail_auth_type]
      example.run
      Spree::Config[:smtp_username] = original_smtp_username
      Spree::Config[:mail_auth_type] = original_mail_auth_type
    end

    it 'sets config entries in the Spree Config' do
      described_class.entries = entries
      expect(Spree::Config[:smtp_username]).to eq("smtp_username")
      expect(Spree::Config[:mail_auth_type]).to eq("login")
    end

    it 'initializes the mail settings' do
      described_class.entries = entries
      expect(Spree::Core::MailSettings).to have_received(:init)
    end
  end
end
