From 7666826fe202a306347319e0eb075a7ce07d707a Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Sun, 7 Jun 2020 19:57:07 +0100 Subject: [PATCH 1/2] Add funding links to sidebar --- app/models/concerns/rubygem_searchable.rb | 1 + app/models/links.rb | 3 ++- app/models/rubygem.rb | 1 + config/locales/de.yml | 1 + config/locales/en.yml | 1 + config/locales/es.yml | 1 + config/locales/fr.yml | 1 + config/locales/ja.yml | 1 + config/locales/nl.yml | 1 + config/locales/pt-BR.yml | 1 + config/locales/zh-CN.yml | 1 + config/locales/zh-TW.yml | 1 + lib/elastic_searcher.rb | 1 + test/unit/pusher_test.rb | 1 + test/unit/rubygem_searchable_test.rb | 19 +++++++++++++++++-- test/unit/rubygem_test.rb | 4 +++- 16 files changed, 35 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/rubygem_searchable.rb b/app/models/concerns/rubygem_searchable.rb index 5dfc1b7400e..7c09d586e96 100644 --- a/app/models/concerns/rubygem_searchable.rb +++ b/app/models/concerns/rubygem_searchable.rb @@ -35,6 +35,7 @@ def as_indexed_json(_options = {}) # rubocop:disable Metrics/MethodLength source_code_uri: versioned_links&.source_code_uri, bug_tracker_uri: versioned_links&.bug_tracker_uri, changelog_uri: versioned_links&.changelog_uri, + funding_uri: versioned_links&.funding_uri, yanked: versions.none?(&:indexed?), summary: latest_version&.summary, description: latest_version&.description, diff --git a/app/models/links.rb b/app/models/links.rb index 0d9630a100f..21f3fce97c2 100644 --- a/app/models/links.rb +++ b/app/models/links.rb @@ -8,7 +8,8 @@ class Links "wiki" => "wiki_uri", "mail" => "mailing_list_uri", "bugs" => "bug_tracker_uri", - "download" => "download_uri" + "download" => "download_uri", + "funding" => "funding_uri" }.freeze # Links available for non-indexed gems diff --git a/app/models/rubygem.rb b/app/models/rubygem.rb index 02c9e0e294b..4e8b28f782f 100644 --- a/app/models/rubygem.rb +++ b/app/models/rubygem.rb @@ -187,6 +187,7 @@ def payload(version = versions.most_recent, protocol = Gemcutter::PROTOCOL, host "source_code_uri" => versioned_links.source_code_uri, "bug_tracker_uri" => versioned_links.bug_tracker_uri, "changelog_uri" => versioned_links.changelog_uri, + "funding_uri" => versioned_links.funding_uri, "dependencies" => { "development" => deps.select { |r| r.rubygem && r.scope == "development" }, "runtime" => deps.select { |r| r.rubygem && r.scope == "runtime" } diff --git a/config/locales/de.yml b/config/locales/de.yml index a33f713c75f..8c872e0baef 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -36,6 +36,7 @@ de: docs: Dokumentation URL mail: Mailingliste URL wiki: Wiki URL + funding: session: password: Passwort who: E-Mail oder Benutzername diff --git a/config/locales/en.yml b/config/locales/en.yml index ae99347fb05..20f8ae1932b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -44,6 +44,7 @@ en: docs: Documentation URL mail: Mailing List URL wiki: Wiki URL + funding: Funding URL session: password: Password who: Email or Username diff --git a/config/locales/es.yml b/config/locales/es.yml index 4e39aaff3f2..f6c65ef6348 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -44,6 +44,7 @@ es: docs: URL de la documentación mail: URL de la lista de correo wiki: URL de la Wiki + funding: session: password: Contraseña who: Correo electrónico o usuario diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 4248ebbcaaa..84f32ba1c55 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -36,6 +36,7 @@ fr: docs: URL de la documentation mail: URL de la liste de diffusion wiki: URL du wiki + funding: session: password: Mot de passe who: Email ou pseudonyme diff --git a/config/locales/ja.yml b/config/locales/ja.yml index d384e0437a3..4b8df2af238 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -36,6 +36,7 @@ ja: docs: ドキュメントのURL mail: メーリングリストのURL wiki: WikiのURL + funding: session: password: パスワード who: Email又はユーザー名 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 6a3fb4b2902..057a4c8b1a5 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -36,6 +36,7 @@ nl: docs: Documentatie-URL mail: Mailing-list-URL wiki: Wiki URL + funding: session: password: Wachtwoord who: E-mail of Gebruikersnaam diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 2487e35347e..59f4f86a774 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -36,6 +36,7 @@ pt-BR: docs: URL da Documentação mail: URL da Lista de Emails wiki: URL da Wiki + funding: session: password: Senha who: Email ou Usuário diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 3cc708e3adc..4588b09b434 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -36,6 +36,7 @@ zh-CN: docs: 文档 URL mail: 邮件列表 URL wiki: Wiki URL + funding: session: password: 密码 who: Email / 账号 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index f75c48d240e..0e57c8afbe1 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -36,6 +36,7 @@ zh-TW: docs: 文件 URL mail: 郵件群組 URL wiki: Wiki URL + funding: session: password: 密碼 who: Email / 帳號 diff --git a/lib/elastic_searcher.rb b/lib/elastic_searcher.rb index dba8d94245c..51b93a52993 100644 --- a/lib/elastic_searcher.rb +++ b/lib/elastic_searcher.rb @@ -99,6 +99,7 @@ def api_source wiki_uri documentation_uri mailing_list_uri + funding_uri source_code_uri bug_tracker_uri changelog_uri] diff --git a/test/unit/pusher_test.rb b/test/unit/pusher_test.rb index d8d94a63e87..0eaaccfefde 100644 --- a/test/unit/pusher_test.rb +++ b/test/unit/pusher_test.rb @@ -317,6 +317,7 @@ class PusherTest < ActiveSupport::TestCase "source_code_uri" => "http://example.com", "bug_tracker_uri" => "http://example.com", "changelog_uri" => nil, + "funding_uri" => nil, "yanked" => false, "summary" => "old summary", "description" => "Some awesome gem", diff --git a/test/unit/rubygem_searchable_test.rb b/test/unit/rubygem_searchable_test.rb index 003c40daf31..cc8cf57bed8 100644 --- a/test/unit/rubygem_searchable_test.rb +++ b/test/unit/rubygem_searchable_test.rb @@ -15,7 +15,15 @@ class RubygemSearchableTest < ActiveSupport::TestCase number: "1.0.1", rubygem: @rubygem, summary: "some summary", - description: "some description") + description: "some description", + metadata: { + "homepage_uri" => "http://example.com", + "source_code_uri" => "http://example.com", + "wiki_uri" => "http://example.com", + "mailing_list_uri" => "http://example.com", + "bug_tracker_uri" => "http://example.com", + "funding_uri" => "http://example.com" + }) end should "return a hash" do @@ -35,7 +43,14 @@ class RubygemSearchableTest < ActiveSupport::TestCase authors: "Joe User", info: "some description", licenses: "MIT", - metadata: { "foo" => "bar" }, + metadata: { + "homepage_uri" => "http://example.com", + "source_code_uri" => "http://example.com", + "wiki_uri" => "http://example.com", + "mailing_list_uri" => "http://example.com", + "bug_tracker_uri" => "http://example.com", + "funding_uri" => "http://example.com" + }, sha: "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78", project_uri: "http://localhost/gems/example_gem", gem_uri: "http://localhost/gems/example_gem-1.0.1.gem", diff --git a/test/unit/rubygem_test.rb b/test/unit/rubygem_test.rb index db90509d79f..a3da7e42057 100644 --- a/test/unit/rubygem_test.rb +++ b/test/unit/rubygem_test.rb @@ -458,7 +458,8 @@ class RubygemTest < ActiveSupport::TestCase "mailing_list_uri" => "http://example.com/mail", "source_code_uri" => "http://example.com/code", "bug_tracker_uri" => "http://example.com/bugs", - "changelog_uri" => "http://example.com/change" + "changelog_uri" => "http://example.com/change", + "funding_uri" => "http://example.com/funding" } ) @@ -471,6 +472,7 @@ class RubygemTest < ActiveSupport::TestCase assert_equal "http://example.com/code", hash["source_code_uri"] assert_equal "http://example.com/bugs", hash["bug_tracker_uri"] assert_equal "http://example.com/change", hash["changelog_uri"] + assert_equal "http://example.com/funding", hash["funding_uri"] end should "return version documentation url if metadata and linkset docs is empty" do From c4ca9d3c3608fbd87cb9fb4391cf7a81528b2fb6 Mon Sep 17 00:00:00 2001 From: Aditya Prakash Date: Fri, 2 Oct 2020 21:27:45 +0530 Subject: [PATCH 2/2] Add documentation_uri to searchable test metadata Also, adds test to ensure funding_uri method exists on Links. --- test/unit/links_test.rb | 31 ++++++++++++++++++++++++++++ test/unit/rubygem_searchable_test.rb | 29 ++++++++++++++------------ 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/test/unit/links_test.rb b/test/unit/links_test.rb index db629078b9f..f985475e602 100644 --- a/test/unit/links_test.rb +++ b/test/unit/links_test.rb @@ -55,4 +55,35 @@ class LinksTest < ActiveSupport::TestCase assert links.homepage_uri end + + context "metadata includes non whitelisted uri key" do + setup do + metadata = { + "homepage_uri" => "https://example.com", + "source_code_uri" => "https://example.com", + "wiki_uri" => "https://example.com", + "mailing_list_uri" => "https://example.com", + "bug_tracker_uri" => "https://example.com", + "funding_uri" => "https://example.com", + "documentation_uri" => "https://example.com", + "changelog_uri" => "https://example.com", + "non_whitelisted_uri" => "https://example.com" + } + + version = build(:version, metadata: metadata) + rubygem = build(:rubygem, versions: [version]) + @links = rubygem.links(version) + end + + should "create method for whitelisted keys" do + whitelisted_keys = Links::LINKS.values.reject! { |k| k == "download_uri" } + whitelisted_keys.each do |key| + assert_equal "https://example.com", @links.send(key), "value doesn't match for method: #{key}" + end + end + + should "not create method for non whitelisted key" do + refute @links.respond_to?("non_whitelisted_uri") + end + end end diff --git a/test/unit/rubygem_searchable_test.rb b/test/unit/rubygem_searchable_test.rb index cc8cf57bed8..c41fb7232b9 100644 --- a/test/unit/rubygem_searchable_test.rb +++ b/test/unit/rubygem_searchable_test.rb @@ -17,12 +17,13 @@ class RubygemSearchableTest < ActiveSupport::TestCase summary: "some summary", description: "some description", metadata: { - "homepage_uri" => "http://example.com", - "source_code_uri" => "http://example.com", - "wiki_uri" => "http://example.com", - "mailing_list_uri" => "http://example.com", - "bug_tracker_uri" => "http://example.com", - "funding_uri" => "http://example.com" + "homepage_uri" => "http://example.com", + "source_code_uri" => "http://example.com", + "wiki_uri" => "http://example.com", + "mailing_list_uri" => "http://example.com", + "bug_tracker_uri" => "http://example.com", + "funding_uri" => "http://example.com", + "documentation_uri" => "http://example.com" }) end @@ -44,12 +45,13 @@ class RubygemSearchableTest < ActiveSupport::TestCase info: "some description", licenses: "MIT", metadata: { - "homepage_uri" => "http://example.com", - "source_code_uri" => "http://example.com", - "wiki_uri" => "http://example.com", - "mailing_list_uri" => "http://example.com", - "bug_tracker_uri" => "http://example.com", - "funding_uri" => "http://example.com" + "homepage_uri" => "http://example.com", + "source_code_uri" => "http://example.com", + "wiki_uri" => "http://example.com", + "mailing_list_uri" => "http://example.com", + "bug_tracker_uri" => "http://example.com", + "funding_uri" => "http://example.com", + "documentation_uri" => "http://example.com" }, sha: "b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78", project_uri: "http://localhost/gems/example_gem", @@ -60,6 +62,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase mailing_list_uri: "http://example.com", source_code_uri: "http://example.com", bug_tracker_uri: "http://example.com", + funding_uri: "http://example.com", yanked: false, summary: "some summary", description: "some description", @@ -68,7 +71,7 @@ class RubygemSearchableTest < ActiveSupport::TestCase } expected_hash.each do |k, v| - assert_equal v, json[k] + assert_equal v, json[k], "value doesn't match for key: #{k}" end end end