holderdeord/hdo-storting-importer

View on GitHub
lib/hdo/storting_importer/party_membership.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Hdo
  module StortingImporter
    class PartyMembership

      include HasJsonSchema
      include IvarEquality

      schema_path StortingImporter.lib.join('hdo/storting_importer/schema/party_membership.json')

      def self.example(overrides = nil)
        obj = new 'A', Date.parse("2009-09-01"), Date.parse("2013-08-01")

        if overrides
          obj = from_hash(obj.to_hash.merge(overrides))
        end

        obj
      end

      def self.from_hash(hash)
        new hash['external_id'],
            (Date.parse(hash['start_date']) if hash['start_date']),
            (Date.parse(hash['end_date']) if hash['end_date'])
      end

      attr_reader :external_id, :start_date, :end_date

      def initialize(external_id, start_date, end_date)
        @external_id = external_id
        @start_date  = start_date
        @end_date    = end_date
      end

      def to_hash
        {
          'kind'       => self.class.kind,
          'external_id' => external_id,
          'start_date'  => (start_date.strftime("%Y-%m-%d") if start_date),
          'end_date'    => (end_date.strftime("%Y-%m-%d") if end_date)
        }
      end

    end # PartyMembership
  end
end