Fix /api/v1/accounts/update_credentials tests (#1357)

lolsob-rspec
Eugen 2017-04-09 20:23:14 +02:00 committed by GitHub
parent b54a75e183
commit 47a3702db4
3 changed files with 35 additions and 29 deletions

View File

@ -17,10 +17,8 @@ class Api::V1::AccountsController < ApiController
end end
def update_credentials def update_credentials
@account = current_user.account current_account.update!(account_params)
@account = current_account
@account.update_attributes!(account_params)
render action: :show render action: :show
end end
@ -146,6 +144,6 @@ class Api::V1::AccountsController < ApiController
end end
def account_params def account_params
@account_params ||= params.permit(:display_name, :note, :avatar, :header) params.permit(:display_name, :note, :avatar, :header)
end end
end end

View File

@ -25,35 +25,41 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
end end
describe 'PATCH #update_credentials' do describe 'PATCH #update_credentials' do
it 'returns http success' do describe 'with valid data' do
expect(user.account.avatar).not_to exist before do
expect(user.account.header).not_to exist
avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png')) avatar = File.read(Rails.root.join('app', 'assets', 'images', 'logo.png'))
header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png')) header = File.read(Rails.root.join('app', 'assets', 'images', 'mastodon-getting-started.png'))
params = {
patch :update_credentials, params: {
display_name: "Alice Isn't Dead", display_name: "Alice Isn't Dead",
note: "Hi!\n\nToot toot!", note: "Hi!\n\nToot toot!",
avatar: "data:image/png;base64,#{Base64.encode64(avatar)}", avatar: "data:image/png;base64,#{Base64.encode64(avatar)}",
header: "data:image/png;base64,#{Base64.encode64(header)}" header: "data:image/png;base64,#{Base64.encode64(header)}",
} }
patch :update_credentials, params: params end
expect(response).to have_http_status(:success)
user.reload it 'returns http success' do
expect(response).to have_http_status(:success)
end
it 'updates account info' do
user.account.reload
expect(user.account.display_name).to eq("Alice Isn't Dead") expect(user.account.display_name).to eq("Alice Isn't Dead")
expect(user.account.note).to eq("Hi!\n\nToot toot!") expect(user.account.note).to eq("Hi!\n\nToot toot!")
expect(user.account.avatar).to exist expect(user.account.avatar).to exist
expect(user.account.header).to exist expect(user.account.header).to exist
end end
end
it 'respects Account validations' do describe 'with invalid data' do
note = "This is too long. " * 10 before do
error = { error: 'The account could not be updated: Note is too long (maximum is 160 characters)' }.to_json patch :update_credentials, params: { note: 'This is too long. ' * 10 }
patch :update_credentials, params: { note: note } end
it 'returns http unprocessable entity' do
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(response.body).to eq(error) end
end end
end end

View File

@ -5,6 +5,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
describe 'GET #new' do describe 'GET #new' do
before do before do
Setting.open_registrations = true
request.env["devise.mapping"] = Devise.mappings[:user] request.env["devise.mapping"] = Devise.mappings[:user]
end end
@ -16,6 +17,7 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
describe 'POST #create' do describe 'POST #create' do
before do before do
Setting.open_registrations = true
request.env["devise.mapping"] = Devise.mappings[:user] request.env["devise.mapping"] = Devise.mappings[:user]
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678' } } post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678' } }
end end