diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/mailers/notification_mailer_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/setting_spec.rb | 13 | ||||
-rw-r--r-- | spec/presenters/instance_presenter_spec.rb | 12 | ||||
-rw-r--r-- | spec/rails_helper.rb | 2 | ||||
-rw-r--r-- | spec/services/fetch_remote_status_service_spec.rb | 31 |
5 files changed, 45 insertions, 15 deletions
diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 811435606..1be01e8ba 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -8,7 +8,7 @@ RSpec.describe NotificationMailer, type: :mailer do shared_examples 'localized subject' do |*args, **kwrest| it 'renders subject localized for the locale of the receiver' do - locale = I18n.available_locales.sample + locale = %i(de en).sample receiver.update!(locale: locale) expect(mail.subject).to eq I18n.t(*args, kwrest.merge(locale: locale)) end diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb index bbba5f98d..1cc528674 100644 --- a/spec/models/setting_spec.rb +++ b/spec/models/setting_spec.rb @@ -42,11 +42,6 @@ RSpec.describe Setting, type: :model do described_class[key] end - it 'calls Rails.cache.fetch' do - expect(Rails).to receive_message_chain(:cache, :fetch).with(cache_key) - described_class[key] - end - context 'Rails.cache does not exists' do before do allow(RailsSettings::Settings).to receive(:object).with(key).and_return(object) @@ -103,6 +98,14 @@ RSpec.describe Setting, type: :model do Rails.cache.write(cache_key, cache_value) end + it 'does not query the database' do + expect do |callback| + ActiveSupport::Notifications.subscribed callback, 'sql.active_record' do + described_class[key] + end + end.not_to yield_control + end + it 'returns the cached value' do expect(described_class[key]).to eq cache_value end diff --git a/spec/presenters/instance_presenter_spec.rb b/spec/presenters/instance_presenter_spec.rb index 7c47aed61..006403925 100644 --- a/spec/presenters/instance_presenter_spec.rb +++ b/spec/presenters/instance_presenter_spec.rb @@ -90,9 +90,7 @@ describe InstancePresenter do describe "user_count" do it "returns the number of site users" do - cache = double - allow(Rails).to receive(:cache).and_return(cache) - allow(cache).to receive(:fetch).with("user_count").and_return(123) + Rails.cache.write 'user_count', 123 expect(instance_presenter.user_count).to eq(123) end @@ -100,9 +98,7 @@ describe InstancePresenter do describe "status_count" do it "returns the number of local statuses" do - cache = double - allow(Rails).to receive(:cache).and_return(cache) - allow(cache).to receive(:fetch).with("local_status_count").and_return(234) + Rails.cache.write 'local_status_count', 234 expect(instance_presenter.status_count).to eq(234) end @@ -110,9 +106,7 @@ describe InstancePresenter do describe "domain_count" do it "returns the number of known domains" do - cache = double - allow(Rails).to receive(:cache).and_return(cache) - allow(cache).to receive(:fetch).with("distinct_domain_count").and_return(345) + Rails.cache.write 'distinct_domain_count', 345 expect(instance_presenter.domain_count).to eq(345) end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 4f7399505..dc1f32e08 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -51,6 +51,8 @@ RSpec.configure do |config| end config.after :each do + Rails.cache.clear + keys = Redis.current.keys Redis.current.del(keys) if keys.any? end diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb index cbdecbf25..fa5782b94 100644 --- a/spec/services/fetch_remote_status_service_spec.rb +++ b/spec/services/fetch_remote_status_service_spec.rb @@ -1,4 +1,35 @@ require 'rails_helper' RSpec.describe FetchRemoteStatusService do + let(:account) { Fabricate(:account) } + let(:prefetched_body) { nil } + let(:valid_domain) { Rails.configuration.x.local_domain } + + let(:note) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: "https://#{valid_domain}/@foo/1234", + type: 'Note', + content: 'Lorem ipsum', + attributedTo: ActivityPub::TagManager.instance.uri_for(account), + } + end + + context 'protocol is :activitypub' do + subject { described_class.new.call(note[:id], prefetched_body, protocol) } + let(:prefetched_body) { Oj.dump(note) } + let(:protocol) { :activitypub } + + before do + account.update(uri: ActivityPub::TagManager.instance.uri_for(account)) + subject + end + + it 'creates status' do + status = account.statuses.first + + expect(status).to_not be_nil + expect(status.text).to eq 'Lorem ipsum' + end + end end |