Skip to content
This repository was archived by the owner on May 16, 2019. It is now read-only.

Commit 152b4d5

Browse files
akihikodakiGargron
authored andcommitted
Cover StatusesController more (mastodon#3259)
1 parent ea2ef16 commit 152b4d5

File tree

1 file changed

+74
-4
lines changed

1 file changed

+74
-4
lines changed

spec/controllers/statuses_controller_spec.rb

+74-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,81 @@
66
render_views
77

88
describe '#show' do
9-
it 'returns a success' do
10-
status = Fabricate(:status)
11-
get :show, params: { account_username: status.account.username, id: status.id }
9+
context 'account is suspended' do
10+
it 'returns gone' do
11+
account = Fabricate(:account, suspended: true)
12+
status = Fabricate(:status, account: account)
1213

13-
expect(response).to have_http_status(:success)
14+
get :show, params: { account_username: account.username, id: status.id }
15+
16+
expect(response).to have_http_status(410)
17+
end
18+
end
19+
20+
context 'status is not permitted' do
21+
it 'raises ActiveRecord::RecordNotFound' do
22+
user = Fabricate(:user)
23+
status = Fabricate(:status)
24+
status.account.block!(user.account)
25+
26+
sign_in(user)
27+
get :show, params: { account_username: status.account.username, id: status.id }
28+
29+
expect(response).to have_http_status(404)
30+
end
31+
end
32+
33+
context 'account is not suspended and status is permitted' do
34+
it 'assigns @account' do
35+
status = Fabricate(:status)
36+
get :show, params: { account_username: status.account.username, id: status.id }
37+
expect(assigns(:account)).to eq status.account
38+
end
39+
40+
it 'assigns @status' do
41+
status = Fabricate(:status)
42+
get :show, params: { account_username: status.account.username, id: status.id }
43+
expect(assigns(:status)).to eq status
44+
end
45+
46+
it 'assigns @stream_entry' do
47+
status = Fabricate(:status)
48+
get :show, params: { account_username: status.account.username, id: status.id }
49+
expect(assigns(:stream_entry)).to eq status.stream_entry
50+
end
51+
52+
it 'assigns @type' do
53+
status = Fabricate(:status)
54+
get :show, params: { account_username: status.account.username, id: status.id }
55+
expect(assigns(:type)).to eq 'status'
56+
end
57+
58+
it 'assigns @ancestors for ancestors of the status if it is a reply' do
59+
ancestor = Fabricate(:status)
60+
status = Fabricate(:status, in_reply_to_id: ancestor.id)
61+
62+
get :show, params: { account_username: status.account.username, id: status.id }
63+
64+
expect(assigns(:ancestors)).to match_array([ancestor])
65+
end
66+
67+
it 'assigns @ancestors for [] if it is not a reply' do
68+
status = Fabricate(:status)
69+
get :show, params: { account_username: status.account.username, id: status.id }
70+
expect(assigns(:ancestors)).to eq []
71+
end
72+
73+
it 'returns a success' do
74+
status = Fabricate(:status)
75+
get :show, params: { account_username: status.account.username, id: status.id }
76+
expect(response).to have_http_status(:success)
77+
end
78+
79+
it 'renders stream_entries/show' do
80+
status = Fabricate(:status)
81+
get :show, params: { account_username: status.account.username, id: status.id }
82+
expect(response).to render_template 'stream_entries/show'
83+
end
1484
end
1585
end
1686
end

0 commit comments

Comments
 (0)