Merge branch 'origin/master' into sync/upstream

Conflicts:
	app/javascript/mastodon/components/status_list.js
	app/javascript/mastodon/features/notifications/index.js
	app/javascript/mastodon/features/ui/components/modal_root.js
	app/javascript/mastodon/features/ui/components/onboarding_modal.js
	app/javascript/mastodon/features/ui/index.js
	app/javascript/styles/about.scss
	app/javascript/styles/accounts.scss
	app/javascript/styles/components.scss
	app/presenters/instance_presenter.rb
	app/services/post_status_service.rb
	app/services/reblog_service.rb
	app/views/about/more.html.haml
	app/views/about/show.html.haml
	app/views/accounts/_header.html.haml
	config/webpack/loaders/babel.js
	spec/controllers/api/v1/accounts/credentials_controller_spec.rb
This commit is contained in:
David Yip
2017-09-09 14:27:47 -05:00
352 changed files with 8629 additions and 2380 deletions

View File

@@ -642,7 +642,6 @@ RSpec.describe Account, type: :model do
it 'returns remote accounts with followers whose subscription expiration date is past or not given' do
local = Fabricate(:account, domain: nil)
matches = [
{ domain: 'remote', subscription_expires_at: nil },
{ domain: 'remote', subscription_expires_at: '2000-01-01T00:00:00Z' },
].map(&method(:Fabricate).curry(2).call(:account))
matches.each(&local.method(:follow!))

View File

@@ -1,5 +1,24 @@
require 'rails_helper'
RSpec.describe Import, type: :model do
let (:account) { Fabricate(:account) }
let (:type) { 'following' }
let (:data) { attachment_fixture('imports.txt') }
describe 'validations' do
it 'has a valid parameters' do
import = Import.create(account: account, type: type, data: data)
expect(import).to be_valid
end
it 'is invalid without an type' do
import = Import.create(account: account, data: data)
expect(import).to model_have_error_on_field(:type)
end
it 'is invalid without a data' do
import = Import.create(account: account, type: type)
expect(import).to model_have_error_on_field(:data)
end
end
end

View File

@@ -0,0 +1,41 @@
require 'rails_helper'
RSpec.describe StatusPin, type: :model do
describe 'validations' do
it 'allows pins of own statuses' do
account = Fabricate(:account)
status = Fabricate(:status, account: account)
expect(StatusPin.new(account: account, status: status).save).to be true
end
it 'does not allow pins of statuses by someone else' do
account = Fabricate(:account)
status = Fabricate(:status)
expect(StatusPin.new(account: account, status: status).save).to be false
end
it 'does not allow pins of reblogs' do
account = Fabricate(:account)
status = Fabricate(:status, account: account)
reblog = Fabricate(:status, reblog: status)
expect(StatusPin.new(account: account, status: reblog).save).to be false
end
it 'does not allow pins of private statuses' do
account = Fabricate(:account)
status = Fabricate(:status, account: account, visibility: :private)
expect(StatusPin.new(account: account, status: status).save).to be false
end
it 'does not allow pins of direct statuses' do
account = Fabricate(:account)
status = Fabricate(:status, account: account, visibility: :direct)
expect(StatusPin.new(account: account, status: status).save).to be false
end
end
end

View File

@@ -286,4 +286,24 @@ RSpec.describe User, type: :model do
Fabricate(:user)
end
end
describe 'token_for_app' do
let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, owner: user) }
it 'returns a token' do
expect(user.token_for_app(app)).to be_a(Doorkeeper::AccessToken)
end
it 'persists a token' do
t = user.token_for_app(app)
expect(user.token_for_app(app)).to eql(t)
end
it 'is nil if user does not own app' do
app.update!(owner: nil)
expect(user.token_for_app(app)).to be_nil
end
end
end