ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/services/slack_notifier/formatter/transitioner.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class SlackNotifier
  class Formatter
    class Transitioner < Formatter
      ICONS = {
        nil => ':sign-roadworks:',
        pass: ':smile_cat:',
        fail: ':scream_cat:'
      }.freeze

      attr_reader :status

      def attachment(processed:, failed:)
        @status = failed.zero? ? :pass : :fail

        {
          fallback: message_text(processed, failed),
          color: message_colour,
          title: message_title(failed),
          text: message_text(processed, failed)
        }.compact
      end

      def message_icon
        ICONS[@status]
      end

      private

      def message_title(failed)
        return "[#{ENV.fetch('ENV', nil)}] Stale claim archiver completed" if failed.zero?

        "[#{ENV.fetch('ENV', nil)}] Stale claim archiver completed with failures"
      end

      def message_text(processed, failed)
        "#{processed} transitions processed (#{failed} failed)"
      end
    end
  end
end