Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - `app/controllers/statuses_controller.rb`: Minor conflict due to theming system
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Api::V1::Announcements::ReactionsController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:scopes) { 'write:favourites' }
|
||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
|
||||
let!(:announcement) { Fabricate(:announcement) }
|
||||
|
||||
describe 'PUT #update' do
|
||||
context 'without token' do
|
||||
it 'returns http unauthorized' do
|
||||
put :update, params: { announcement_id: announcement.id, id: '😂' }
|
||||
expect(response).to have_http_status :unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
context 'with token' do
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
put :update, params: { announcement_id: announcement.id, id: '😂' }
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
|
||||
it 'creates reaction' do
|
||||
expect(announcement.announcement_reactions.find_by(name: '😂', account: user.account)).to_not be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
before do
|
||||
announcement.announcement_reactions.create!(account: user.account, name: '😂')
|
||||
end
|
||||
|
||||
context 'without token' do
|
||||
it 'returns http unauthorized' do
|
||||
delete :destroy, params: { announcement_id: announcement.id, id: '😂' }
|
||||
expect(response).to have_http_status :unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
context 'with token' do
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
delete :destroy, params: { announcement_id: announcement.id, id: '😂' }
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
|
||||
it 'creates reaction' do
|
||||
expect(announcement.announcement_reactions.find_by(name: '😂', account: user.account)).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
59
spec/controllers/api/v1/announcements_controller_spec.rb
Normal file
59
spec/controllers/api/v1/announcements_controller_spec.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Api::V1::AnnouncementsController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:scopes) { 'read' }
|
||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
|
||||
let!(:announcement) { Fabricate(:announcement) }
|
||||
|
||||
describe 'GET #index' do
|
||||
context 'without token' do
|
||||
it 'returns http unprocessable entity' do
|
||||
get :index
|
||||
expect(response).to have_http_status :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
context 'with token' do
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
get :index
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #dismiss' do
|
||||
context 'without token' do
|
||||
it 'returns http unauthorized' do
|
||||
post :dismiss, params: { id: announcement.id }
|
||||
expect(response).to have_http_status :unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
context 'with token' do
|
||||
let(:scopes) { 'write:accounts' }
|
||||
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
post :dismiss, params: { id: announcement.id }
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
|
||||
it 'dismisses announcement' do
|
||||
expect(announcement.announcement_mutes.find_by(account: user.account)).to_not be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
18
spec/controllers/api/v1/trends_controller_spec.rb
Normal file
18
spec/controllers/api/v1/trends_controller_spec.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Api::V1::TrendsController, type: :controller do
|
||||
render_views
|
||||
|
||||
describe 'GET #index' do
|
||||
before do
|
||||
allow(TrendingTags).to receive(:get).and_return(Fabricate.times(10, :tag))
|
||||
get :index
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
end
|
||||
end
|
6
spec/fabricators/announcement_fabricator.rb
Normal file
6
spec/fabricators/announcement_fabricator.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
Fabricator(:announcement) do
|
||||
text { Faker::Lorem.paragraph(sentence_count: 2) }
|
||||
published true
|
||||
starts_at nil
|
||||
ends_at nil
|
||||
end
|
4
spec/fabricators/announcement_mute_fabricator.rb
Normal file
4
spec/fabricators/announcement_mute_fabricator.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
Fabricator(:announcement_mute) do
|
||||
account
|
||||
announcement
|
||||
end
|
5
spec/fabricators/announcement_reaction_fabricator.rb
Normal file
5
spec/fabricators/announcement_reaction_fabricator.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
Fabricator(:announcement_reaction) do
|
||||
account
|
||||
announcement
|
||||
name '🌿'
|
||||
end
|
@@ -1,16 +1,12 @@
|
||||
Fabricator(:media_attachment) do
|
||||
account
|
||||
|
||||
file do |attrs|
|
||||
[
|
||||
case attrs[:type]
|
||||
when :gifv
|
||||
attachment_fixture ['attachment.gif', 'attachment.webm'].sample
|
||||
when :image
|
||||
attachment_fixture 'attachment.jpg'
|
||||
when nil
|
||||
attachment_fixture ['attachment.gif', 'attachment.jpg', 'attachment.webm'].sample
|
||||
end,
|
||||
nil
|
||||
].sample
|
||||
case attrs[:type]
|
||||
when :gifv, :video
|
||||
attachment_fixture('attachment.webm')
|
||||
else
|
||||
attachment_fixture('attachment.jpg')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -258,6 +258,14 @@ RSpec.describe Formatter do
|
||||
is_expected.to include 'href="xmpp:muc@instance.com?join"'
|
||||
end
|
||||
end
|
||||
|
||||
context 'given text containing a magnet: URI' do
|
||||
let(:text) { 'wikipedia gives this example of a magnet uri: magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a' }
|
||||
|
||||
it 'matches the full URI' do
|
||||
is_expected.to include 'href="magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a"'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#format_spoiler' do
|
||||
|
@@ -1,21 +0,0 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe HandleBadEncodingMiddleware do
|
||||
let(:app) { double() }
|
||||
let(:middleware) { HandleBadEncodingMiddleware.new(app) }
|
||||
|
||||
it "request with query string is unchanged" do
|
||||
expect(app).to receive(:call).with("PATH" => "/some/path", "QUERY_STRING" => "name=fred")
|
||||
middleware.call("PATH" => "/some/path", "QUERY_STRING" => "name=fred")
|
||||
end
|
||||
|
||||
it "request with no query string is unchanged" do
|
||||
expect(app).to receive(:call).with("PATH" => "/some/path")
|
||||
middleware.call("PATH" => "/some/path")
|
||||
end
|
||||
|
||||
it "request with invalid encoding in query string drops query string" do
|
||||
expect(app).to receive(:call).with("QUERY_STRING" => "", "PATH" => "/some/path")
|
||||
middleware.call("QUERY_STRING" => "q=%2Fsearch%2Fall%Forder%3Ddescending%26page%3D5%26sort%3Dcreated_at", "PATH" => "/some/path")
|
||||
end
|
||||
end
|
4
spec/models/announcement_mute_spec.rb
Normal file
4
spec/models/announcement_mute_spec.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AnnouncementMute, type: :model do
|
||||
end
|
4
spec/models/announcement_reaction_spec.rb
Normal file
4
spec/models/announcement_reaction_spec.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AnnouncementReaction, type: :model do
|
||||
end
|
4
spec/models/announcement_spec.rb
Normal file
4
spec/models/announcement_spec.rb
Normal file
@@ -0,0 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Announcement, type: :model do
|
||||
end
|
@@ -31,14 +31,6 @@ RSpec.describe MediaAttachment, type: :model do
|
||||
context 'file is blank' do
|
||||
let(:file) { nil }
|
||||
|
||||
context 'remote_url is blank' do
|
||||
let(:remote_url) { '' }
|
||||
|
||||
it 'returns false' do
|
||||
is_expected.to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'remote_url is present' do
|
||||
let(:remote_url) { 'remote_url' }
|
||||
|
||||
@@ -153,6 +145,11 @@ RSpec.describe MediaAttachment, type: :model do
|
||||
end
|
||||
end
|
||||
|
||||
it 'is invalid without file' do
|
||||
media = MediaAttachment.new(account: Fabricate(:account))
|
||||
expect(media.valid?).to be false
|
||||
end
|
||||
|
||||
describe 'descriptions for remote attachments' do
|
||||
it 'are cut off at 1500 characters' do
|
||||
media = Fabricate(:media_attachment, description: 'foo' * 1000, remote_url: 'http://example.com/blah.jpg')
|
||||
|
@@ -212,14 +212,18 @@ RSpec.describe PostStatusService, type: :service do
|
||||
|
||||
it 'does not allow attaching both videos and images' do
|
||||
account = Fabricate(:account)
|
||||
video = Fabricate(:media_attachment, type: :video, account: account)
|
||||
image = Fabricate(:media_attachment, type: :image, account: account)
|
||||
|
||||
video.update(type: :video)
|
||||
|
||||
expect do
|
||||
subject.call(
|
||||
account,
|
||||
text: "test status update",
|
||||
media_ids: [
|
||||
Fabricate(:media_attachment, type: :video, account: account),
|
||||
Fabricate(:media_attachment, type: :image, account: account),
|
||||
video,
|
||||
image,
|
||||
].map(&:id),
|
||||
)
|
||||
end.to raise_error(
|
||||
|
Reference in New Issue
Block a user