Мне пришлось изменить место admin_serializer
в моей конечной точке получения, и это вызывает необъяснимые проблемы со спецификациями.
получить конечную точку
get do
scoped_collection = admin_serialize(scope_admin_resource(filter(Campaign.all)))
paginate(filter(sort(scoped_collection)))
end
, которую я изменил с
get do
scoped_collection = scope_admin_resource(filter(Campaign.all))
admin_serialize paginate(filter(sort(scoped_collection))), include: %i[campaign_codes]
end
specs:
let(:parsed_body) { JSON.parse(response.body) }
describe 'GET /api/v1/admin/campaigns' do
subject(:call_endpoint) { get('/api/v1/admin/campaigns', params: params, headers: headers) }
let(:params) { {} }
context 'when request is authorized' do
let(:headers) { authorization_header }
it 'returns Campaign list' do
call_endpoint
expect(parsed_body['data'].first['type']).to eq('campaign')
expect(parsed_body['data'].size).to eq(2)
end
end
end
Странная вещь заключается в том, что моя спецификация не работает с ошибкой:
Failure / Error: paginate (filter (sort (scoped_collection)))
NoMethodError: неопределенный метод `model 'для #Hash: 0x00007fa7a4344c68
И, честно говоря, я не знаю, что происходит. Приложение прекрасно работает в локальной среде, только спецификации не работают.