Skip to content

Instantly share code, notes, and snippets.

@paderinandrey
Created August 4, 2024 14:55
Show Gist options
  • Save paderinandrey/bd76b1454edd6228bae53a9ee3d6c0c9 to your computer and use it in GitHub Desktop.
Save paderinandrey/bd76b1454edd6228bae53a9ee3d6c0c9 to your computer and use it in GitHub Desktop.
# frozen_string_literal: true
require 'test_prof/recipes/rspec/any_fixture'
require 'test_prof/any_fixture/dsl'
using TestProf::AnyFixture::DSL
require 'test_prof/ext/active_record_refind'
using TestProf::Ext::ActiveRecordRefind
RSpec.shared_context 'request:user', :user_request do
let(:user_attributes) { {} }
let(:user) { fixture(:request_user).refind }
let(:scopes) { '' }
let(:token) { fixture(:request_token).refind.tap { _1.update!(scopes:) } }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
before do
user.update(**user_attributes) if user_attributes.present?
end
end
RSpec.shared_context 'request:admin', :admin_request do
let(:role) { UserRole.find_by(name: 'Admin') }
let(:user) { fixture(:request_user).refind }
let(:scopes) { '' }
let(:token) { fixture(:request_token).refind.tap { _1.update!(scopes:) } }
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
before { user.update(role:) }
end
RSpec.configure do |config|
config.define_derived_metadata(file_path: %r{/spec/requests/api/v1/admin}) do |metadata|
metadata[:admin_request] = :admin_request
end
config.define_derived_metadata(file_path: %r{/spec/requests/api/v(1|2)}) do |metadata|
metadata[:user_request] = :user_request
end
config.before(:suite) do
fixture(:request_user) { Fabricate(:user) }
fixture(:request_token) do
Fabricate(:accessible_access_token, resource_owner_id: fixture(:request_user).id)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment