# frozen_string_literal: true require 'rails_helper' RSpec.describe 'Artifacts API', type: :request do describe 'GET /api/v1/artifacts' do let!(:standard_artifact) { create(:artifact, proficiency: :sabre) } let!(:quirk_artifact) { create(:artifact, :quirk) } it 'returns all artifacts' do get '/api/v1/artifacts' expect(response).to have_http_status(:ok) json = JSON.parse(response.body) expect(json['artifacts'].length).to eq(2) end it 'filters by rarity' do get '/api/v1/artifacts', params: { rarity: 'standard' } expect(response).to have_http_status(:ok) json = JSON.parse(response.body) expect(json['artifacts'].length).to eq(1) expect(json['artifacts'].first['rarity']).to eq('standard') end it 'filters by proficiency' do create(:artifact, proficiency: :dagger) get '/api/v1/artifacts', params: { proficiency: 'sabre' } expect(response).to have_http_status(:ok) json = JSON.parse(response.body) expect(json['artifacts'].all? { |a| a['proficiency'] == 'sabre' }).to be true end end describe 'GET /api/v1/artifacts/:id' do let!(:artifact) { create(:artifact) } it 'returns the artifact' do get "/api/v1/artifacts/#{artifact.id}" expect(response).to have_http_status(:ok) json = JSON.parse(response.body) expect(json['id']).to eq(artifact.id) expect(json['name']['en']).to eq(artifact.name_en) end it 'returns not found for non-existent artifact' do get "/api/v1/artifacts/#{SecureRandom.uuid}" expect(response).to have_http_status(:not_found) end end end