Convert `api/web/settings` controller spec to request spec (#31606)

shrike
Matt Jankowski 2024-08-27 03:42:35 -04:00 committed by GitHub
parent 14d7fe05d0
commit c09d232ee3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 24 deletions

View File

@ -1,24 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe Api::Web::SettingsController do
render_views
let!(:user) { Fabricate(:user) }
describe 'PATCH #update' do
it 'redirects to about page' do
sign_in(user)
patch :update, format: :json, params: { data: { 'onboarded' => true } }
user.reload
expect(response).to have_http_status(200)
expect(user_web_setting.data['onboarded']).to eq('true')
end
def user_web_setting
Web::Setting.where(user: user).first
end
end
end

View File

@ -0,0 +1,41 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe '/api/web/settings' do
describe 'PATCH /api/web/settings' do
let(:user) { Fabricate :user }
context 'when signed in' do
before { sign_in(user) }
it 'updates setting and responds with success' do
patch '/api/web/settings', params: { data: { 'onboarded' => true } }
expect(user_web_setting.data)
.to include('onboarded' => 'true')
expect(response)
.to have_http_status(200)
end
end
context 'when not signed in' do
it 'responds with unprocessable and does not modify setting' do
patch '/api/web/settings', params: { data: { 'onboarded' => true } }
expect(user_web_setting)
.to be_nil
expect(response)
.to have_http_status(422)
end
end
def user_web_setting
Web::Setting
.where(user: user)
.first
end
end
end