Skip to content

Commit 1f163fd

Browse files
committed
Always show source code on sidebar, even if duplicate link
1 parent bb5e82b commit 1f163fd

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

app/models/links.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,18 @@ def links
3535
delegate :keys, to: :links
3636

3737
def unique_links
38-
links.uniq do |_short, long|
39-
send(long)
38+
seen_urls = {}
39+
links.select do |short, long|
40+
url = send(long)
41+
# always include 'code' (source_code_uri) even if URL is duplicate
42+
if short == "code"
43+
true
44+
elsif seen_urls[url]
45+
false
46+
else
47+
seen_urls[url] = true
48+
true
49+
end
4050
end
4151
end
4252

test/models/links_test.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,19 @@ class LinksTest < ActiveSupport::TestCase
6969
assert_equal([["home", "https://example.code"], ["download", "/downloads/.gem"]], enumerated)
7070
end
7171

72+
should "always include source code even when duplicate" do
73+
metadata = { "homepage_uri" => "https://example.com", "source_code_uri" => "https://example.com" }
74+
version = build(:version, indexed: true, metadata: metadata)
75+
rubygem = build(:rubygem, linkset: build(:linkset), versions: [version])
76+
links = rubygem.links(version)
77+
78+
enumerated = links.map do |short, value|
79+
[short, value]
80+
end
81+
82+
assert_equal([["home", "https://example.code"], ["code", "https://example.code"], ["download", "/downloads/.gem"]], enumerated)
83+
end
84+
7285
context "metadata includes unknown uri key" do
7386
setup do
7487
metadata = {

0 commit comments

Comments
 (0)