diff options
| -rw-r--r-- | lib/license/management/repository.rb | 9 | ||||
| -rw-r--r-- | spec/unit/license/management/repository_spec.rb | 16 |
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/license/management/repository.rb b/lib/license/management/repository.rb index 4b6e8a5..3d16b78 100644 --- a/lib/license/management/repository.rb +++ b/lib/license/management/repository.rb @@ -64,7 +64,7 @@ module License { 'id' => name.downcase, 'name' => name, - 'url' => present?(license.url) ? license.url : '' + 'url' => normalized_url(license.url) } end @@ -90,6 +90,13 @@ module License logger.error(e) nil end + + def normalized_url(url) + return '' unless present?(url) + return 'http://en.wikipedia.org/wiki/BSD_licenses' if url.match?('BSD_licenses#4-clause_license') + + url + end end end end diff --git a/spec/unit/license/management/repository_spec.rb b/spec/unit/license/management/repository_spec.rb index 04eb469..c54af77 100644 --- a/spec/unit/license/management/repository_spec.rb +++ b/spec/unit/license/management/repository_spec.rb @@ -60,5 +60,21 @@ RSpec.describe License::Management::Repository do it { expect(subject.item_for(license)['id']).to eql(spdx_id) } end end + + context 'with BSD license' do + subject(:item_license) { described_class.new.item_for(license) } + + let(:license) do + LicenseFinder::License.new( + short_name: 'BSD', + other_names: ['BSD4', 'bsd-old', '4-clause BSD', 'BSD-4-Clause', 'BSD 4-Clause', 'BSD License'], + url: 'http://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_.28original_.22BSD_License.22.29' + ) + end + + it 'returns general url' do + expect(item_license['url']).to eq('http://en.wikipedia.org/wiki/BSD_licenses') + end + end end end |
