Add coverage for TagManager#normalize_domain (#35994)

This commit is contained in:
Matt Jankowski 2026-01-21 11:11:38 -05:00 committed by GitHub
parent 3219373d56
commit 562ea656f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 38 additions and 6 deletions

View File

@ -18,7 +18,7 @@ class TagManager
return if domain.nil? return if domain.nil?
uri = Addressable::URI.new uri = Addressable::URI.new
uri.host = domain.delete_suffix('/') uri.host = domain.strip.delete_suffix('/')
uri.normalized_host uri.normalized_host
end end

View File

@ -54,12 +54,44 @@ RSpec.describe TagManager do
end end
describe '#normalize_domain' do describe '#normalize_domain' do
it 'returns nil if the given parameter is nil' do subject { described_class.instance.normalize_domain(domain) }
expect(described_class.instance.normalize_domain(nil)).to be_nil
context 'with a nil value' do
let(:domain) { nil }
it { is_expected.to be_nil }
end end
it 'returns normalized domain' do context 'with a blank value' do
expect(described_class.instance.normalize_domain('DoMaIn.Example.com/')).to eq 'domain.example.com' let(:domain) { '' }
it { is_expected.to be_blank }
end
context 'with a mixed case string' do
let(:domain) { 'DoMaIn.Example.com' }
it { is_expected.to eq('domain.example.com') }
end
context 'with a trailing slash string' do
let(:domain) { 'domain.example.com/' }
it { is_expected.to eq('domain.example.com') }
end
context 'with a space padded string' do
let(:domain) { ' domain.example.com ' }
it { is_expected.to eq('domain.example.com') }
end
context 'with an invalid domain string' do
let(:domain) { ' !@#$@#$@$@# ' }
it 'raises invalid uri error' do
expect { subject }.to raise_error(Addressable::URI::InvalidURIError)
end
end end
end end

View File

@ -5,7 +5,7 @@ require 'rails_helper'
RSpec.describe InstanceModerationNote do RSpec.describe InstanceModerationNote do
describe 'chronological' do describe 'chronological' do
it 'returns the instance notes sorted by oldest first' do it 'returns the instance notes sorted by oldest first' do
instance = Instance.find_or_initialize_by(domain: TagManager.instance.normalize_domain('mastodon.example')) instance = Instance.find_or_initialize_by(domain: 'mastodon.example')
note1 = Fabricate(:instance_moderation_note, domain: instance.domain) note1 = Fabricate(:instance_moderation_note, domain: instance.domain)
note2 = Fabricate(:instance_moderation_note, domain: instance.domain) note2 = Fabricate(:instance_moderation_note, domain: instance.domain)