Skip to content
This repository has been archived by the owner on May 11, 2022. It is now read-only.

Commit

Permalink
Merge pull request #466 from sul-dlss/ontology-map
Browse files Browse the repository at this point in the history
Add missing #map method to Ontology subclasses
  • Loading branch information
mjgiarlo committed Jan 7, 2019
2 parents a78e7ab + 33e09e9 commit a30968a
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 15 deletions.
45 changes: 30 additions & 15 deletions lib/dor/services/ontology.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,46 @@ class Ontology
extend Deprecation
self.deprecation_horizon = 'dor-services version 7.0.0'

def self.[](key)
@data[key]
end
deprecation_deprecate :[] => 'Use property() instead'
class << self
def [](key)
Deprecation.warn(self, "#{self}.[] is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `property' instead.")
@data[key]
end

def self.key?(key)
@data.key?(key)
end
def key?(key)
@data.key?(key)
end

def self.include?(key)
@data.include?(key)
end
deprecation_deprecate include?: 'Use key? instead'
def include?(key)
Deprecation.warn(self, "#{self}.include? is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `key?' instead.")
@data.include?(key)
end

def self.property(key)
Term.new(@data[key])
def map(&block)
Deprecation.warn(self, "#{self}.map is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `options' instead.")
@data.map(&block)
end

# Yields each term to the block provided
def options
@data.map do |k, _v|
yield property(k)
end
end

def property(key)
Term.new(@data[key])
end
end

class Term
def initialize(uri:, human_readable:)
def initialize(uri:, human_readable:, deprecation_warning: nil)
@label = human_readable
@uri = uri
@deprecation_warning = deprecation_warning
end

attr_reader :label, :uri
attr_reader :label, :uri, :deprecation_warning
end
end
end
25 changes: 25 additions & 0 deletions spec/services/creative_commons_license_service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Dor::CreativeCommonsLicenseService do
describe '#map' do
it 'maps stuff' do
expect(Deprecation).to receive(:warn)
expect(described_class.map { 1 }.sum).to eq 8
end
end

describe '#include?' do
it 'is true when the data has something' do
expect(Deprecation).to receive(:warn)
expect(described_class.include?('by-sa')).to be true
end
end

describe '#property' do
it 'returns terms' do
expect(described_class.property('by_sa').deprecation_warning).to match(/typo/)
end
end
end

0 comments on commit a30968a

Please sign in to comment.