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

Commit

Permalink
Merge 3ecb998 into 130de11
Browse files Browse the repository at this point in the history
  • Loading branch information
jcoyne committed Jan 14, 2019
2 parents 130de11 + 3ecb998 commit 068d220
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 11 deletions.
8 changes: 8 additions & 0 deletions lib/dor/models/concerns/releaseable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ def released_for(skip_live_purl = false)
delegate :release_tags, to: :releases
deprecation_deprecate release_tags: 'use ReleaseTagService#release_tags instead'

# Take a hash of tags as obtained via Dor::Item.release_tags and returns the newest tag for each namespace
# @param tags [Hash] a hash of tags obtained via Dor::Item.release_tags or matching format
# @return [Hash] a hash of latest tags for each to value
def get_newest_release_tag(tags)
releases.newest_release_tag(tags)
end
deprecation_deprecate get_newest_release_tag: 'use ReleaseTagService#newest_release_tag instead'

def releases
@releases ||= ReleaseTagService.for(self)
end
Expand Down
14 changes: 7 additions & 7 deletions lib/dor/services/release_tag_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@ def release_tags
return_hash
end

# Take a hash of tags as obtained via Dor::Item.release_tags and returns the newest tag for each namespace
# @param tags [Hash] a hash of tags obtained via Dor::Item.release_tags or matching format
# @return [Hash] a hash of latest tags for each to value
def newest_release_tag(tags)
Hash[tags.map { |key, val| [key, newest_release_tag_in_an_array(val)] }]
end

private

# Convert one release element into a Hash
Expand Down Expand Up @@ -129,13 +136,6 @@ def combine_two_release_tag_hashes(hash_one, hash_two)
hash_one
end

# Take a hash of tags as obtained via Dor::Item.release_tags and returns the newest tag for each namespace
# @param tags [Hash] a hash of tags obtained via Dor::Item.release_tags or matching format
# @return [Hash] a hash of latest tags for each to value
def newest_release_tag(tags)
Hash[tags.map { |key, val| [key, newest_release_tag_in_an_array(val)] }]
end

# Takes an array of release tags and returns the most recent one
# @param array_of_tags [Array] an array of hashes, each hash a release tag
# @return [Hash] the most recent tag
Expand Down
14 changes: 14 additions & 0 deletions spec/models/concerns/releaseable_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,20 @@ class ReleaseableItem < ActiveFedora::Base
end
end

describe '#get_newest_release_tag' do
subject(:get_newest_release_tag) { item.get_newest_release_tag('Revs' => %w[foo bar], 'FRDA' => %w[quax qwerk]) }
let(:service) { instance_double(Dor::ReleaseTagService, newest_release_tag: { 'Revs' => 'foo', 'FRDA' => 'qwerk' }) }

before do
allow(Dor::ReleaseTagService).to receive(:for).with(item).and_return(service)
end

it 'delegates to the service' do
expect(Deprecation).to receive(:warn)
expect(get_newest_release_tag).to eq('FRDA' => 'qwerk', 'Revs' => 'foo')
end
end

describe 'Adding tags and workflows' do
before do
expect(Deprecation).to receive(:warn)
Expand Down
10 changes: 6 additions & 4 deletions spec/services/release_tag_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@
describe '#newest_release_tag_in_an_array' do
subject { releases.send(:newest_release_tag_in_an_array, dummy_tags) }
it { is_expected.to eq dummy_tags[1] }
end

it 'returns the latest tag for each key/target in a hash' do
dummy_hash = { 'Revs' => dummy_tags, 'FRDA' => dummy_tags }
expect(releases.send(:newest_release_tag, dummy_hash)).to eq('Revs' => dummy_tags[1], 'FRDA' => dummy_tags[1])
end
describe '#newest_release_tag' do
subject { releases.newest_release_tag(dummy_hash) }
let(:dummy_hash) { { 'Revs' => dummy_tags, 'FRDA' => dummy_tags } }

it { is_expected.to eq('Revs' => dummy_tags[1], 'FRDA' => dummy_tags[1]) }
end

describe '#latest_applicable_release_tag_in_array' do
Expand Down

0 comments on commit 068d220

Please sign in to comment.