Sha256: 39f168393491d28aa0cf388d58de1593005f442cce1fd7606ede3d26bc912770

Contents?: true

Size: 1.9 KB

Versions: 62

Compression:

Stored size: 1.9 KB

Contents

require 'test_helper'

module Workarea
  class MailInterceptorTest < TestCase
    setup :persist_config
    setup :temporary_config
    teardown :restore_config

    def test_delivering_email_with_lambda_config
      create_user(email: 'admin@workarea.com', super_admin: true)

      message = create_message(%w(test@workarea.com))
      MailInterceptor.delivering_email(message)
      refute(message.perform_deliveries)

      message = create_message(%w(admin@workarea.com))
      MailInterceptor.delivering_email(message)
      assert(message.perform_deliveries)
    end

    def test_delivering_email_with_boolean_config
      Workarea.config.send_email = false
      message = create_message(%w(test@workarea.com))
      MailInterceptor.delivering_email(message)
      refute(message.perform_deliveries)

      Workarea.config.send_email = true
      message = create_message(%w(test@workarea.com))
      MailInterceptor.delivering_email(message)
      assert(message.perform_deliveries)
    end

    def test_delivering_email_with_no_to_recipients
      admin = create_user(email: 'admin@workarea.com', super_admin: true)
      message = OpenStruct.new(
        to: nil,
        cc: nil,
        bcc: [admin.email],
        perform_deliveries: true
      )
      MailInterceptor.delivering_email(message)
      assert(message.perform_deliveries)
    end

    private

    def persist_config
      @send_email_config = Workarea.config.send_email
    end

    def temporary_config
      Workarea.config.send_email = lambda { |message|
        recipients = (Array(message.to) + Array(message.cc) + Array(message.bcc)).compact
        recipients.any? do |email|
          email.in?(Workarea::User.admins.pluck(:email))
        end
      }
    end

    def restore_config
      Workarea.config.send_email = @send_email_config
    end

    def create_message(emails)
      OpenStruct.new(to: emails, perform_deliveries: true)
    end

  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.27 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.26 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.45 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.25 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.23 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.44 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.22 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.43 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.21 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.42 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.20 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.41 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.19 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.40 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.18 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.39 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.17 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.38 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.5.16 test/lib/workarea/mail_interceptor_test.rb
workarea-core-3.4.37 test/lib/workarea/mail_interceptor_test.rb