summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Jankowski <matt@jankowski.online>2023-11-09 11:21:11 -0500
committerGitHub <noreply@github.com>2023-11-09 16:21:11 +0000
commite79bf1b1e736d908a90f68f03f1783d27e28c7a8 (patch)
tree625110c427acf7574e4fd9be65d6e2c2e38f4247
parent9429e30d75190e82c7aefd71422637a3c9381815 (diff)
Minor speed improvement on `controllers/accounts` spec (#27679)
-rw-r--r--spec/controllers/accounts_controller_spec.rb72
1 files changed, 23 insertions, 49 deletions
diff --git a/spec/controllers/accounts_controller_spec.rb b/spec/controllers/accounts_controller_spec.rb
index cc9e3198b6f..542a748784a 100644
--- a/spec/controllers/accounts_controller_spec.rb
+++ b/spec/controllers/accounts_controller_spec.rb
@@ -7,66 +7,44 @@ RSpec.describe AccountsController do
let(:account) { Fabricate(:account) }
- shared_examples 'unapproved account check' do
+ describe 'unapproved account check' do
before { account.user.update(approved: false) }
it 'returns http not found' do
- get :show, params: { username: account.username, format: format }
-
- expect(response).to have_http_status(404)
+ %w(html json rss).each do |format|
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(404)
+ end
end
end
- shared_examples 'permanently suspended account check' do
+ describe 'permanently suspended account check' do
before do
account.suspend!
account.deletion_request.destroy
end
it 'returns http gone' do
- get :show, params: { username: account.username, format: format }
-
- expect(response).to have_http_status(410)
+ %w(html json rss).each do |format|
+ get :show, params: { username: account.username, format: format }
+ expect(response).to have_http_status(410)
+ end
end
end
- shared_examples 'temporarily suspended account check' do |code: 403|
+ describe 'temporarily suspended account check' do
before { account.suspend! }
it 'returns appropriate http response code' do
- get :show, params: { username: account.username, format: format }
+ { html: 403, json: 200, rss: 403 }.each do |format, code|
+ get :show, params: { username: account.username, format: format }
- expect(response).to have_http_status(code)
+ expect(response).to have_http_status(code)
+ end
end
end
describe 'GET #show' do
- context 'with basic account status checks' do
- context 'with HTML' do
- let(:format) { 'html' }
-
- it_behaves_like 'unapproved account check'
- it_behaves_like 'permanently suspended account check'
- it_behaves_like 'temporarily suspended account check'
- end
-
- context 'with JSON' do
- let(:format) { 'json' }
-
- it_behaves_like 'unapproved account check'
- it_behaves_like 'permanently suspended account check'
- it_behaves_like 'temporarily suspended account check', code: 200
- end
-
- context 'with RSS' do
- let(:format) { 'rss' }
-
- it_behaves_like 'unapproved account check'
- it_behaves_like 'permanently suspended account check'
- it_behaves_like 'temporarily suspended account check'
- end
- end
-
context 'with existing statuses' do
let!(:status) { Fabricate(:status, account: account) }
let!(:status_reply) { Fabricate(:status, account: account, thread: Fabricate(:status)) }
@@ -227,22 +205,15 @@ RSpec.describe AccountsController do
context 'with RSS' do
let(:format) { 'rss' }
- shared_examples 'common RSS response' do
- it 'returns http success' do
- expect(response).to have_http_status(200)
- end
-
- it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
- end
-
context 'with a normal account in an RSS request' do
before do
get :show, params: { username: account.username, format: format }
end
- it_behaves_like 'common RSS response'
+ it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'responds with correct statuses', :aggregate_failures do
+ expect(response).to have_http_status(200)
expect(response.body).to include_status_tag(status_media)
expect(response.body).to include_status_tag(status_self_reply)
expect(response.body).to include_status_tag(status)
@@ -259,9 +230,10 @@ RSpec.describe AccountsController do
get :show, params: { username: account.username, format: format }
end
- it_behaves_like 'common RSS response'
+ it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'responds with correct statuses with replies', :aggregate_failures do
+ expect(response).to have_http_status(200)
expect(response.body).to include_status_tag(status_media)
expect(response.body).to include_status_tag(status_reply)
expect(response.body).to include_status_tag(status_self_reply)
@@ -278,9 +250,10 @@ RSpec.describe AccountsController do
get :show, params: { username: account.username, format: format }
end
- it_behaves_like 'common RSS response'
+ it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'responds with correct statuses with media', :aggregate_failures do
+ expect(response).to have_http_status(200)
expect(response.body).to include_status_tag(status_media)
expect(response.body).to_not include_status_tag(status_direct)
expect(response.body).to_not include_status_tag(status_private)
@@ -302,9 +275,10 @@ RSpec.describe AccountsController do
get :show, params: { username: account.username, format: format, tag: tag.to_param }
end
- it_behaves_like 'common RSS response'
+ it_behaves_like 'cacheable response', expects_vary: 'Accept, Accept-Language, Cookie'
it 'responds with correct statuses with a tag', :aggregate_failures do
+ expect(response).to have_http_status(200)
expect(response.body).to include_status_tag(status_tag)
expect(response.body).to_not include_status_tag(status_direct)
expect(response.body).to_not include_status_tag(status_media)