ministryofjustice/Claim-for-Crown-Court-Defence

View on GitHub
app/services/cclf/mapping_bill_adapter.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
83%
module CCLF
  class MappingBillAdapter < SimpleDelegator
    KEYS = %i[bill_type bill_subtype].freeze

    attr_reader :object, :mappings

    delegate :bill_type, :bill_subtype, to: :@bill_types

    def self.zip(bill_types = [])
      KEYS.zip(bill_types).to_h
    end

    def initialize(object)
      @object = object
      @mappings = bill_mappings
      @bill_types = OpenStruct.new(mappings[bill_key])
    end

    def maps?
      bill_type.present?
    end

    private

    def bill_mappings
      raise 'Implement in sub-class'
    end

    def bill_key
      raise 'Implement in sub-class'
    end
  end
end