Я хочу проверить, правильно ли работает метод фильтрации для закрытых bank_offers
.Если я изменяю статус в одной из ранее определенных спецификаций bank_offer
на :expired
, это работает хорошо, но я должен вложить новые bank_offer
в эту context 'filtering'
not_working_specs
describe 'filtering' do
subject(:call) do
get endpoint, headers: authorized_headers(token: token), params: params
end
context "when status 'closed' passed " do
let(:credit_5) { create :credit, company: company, details: details }
let(:credit_process_5) { create :credit_process, credit: credit_5 }
let(:suggestion_5) { create :bank_suggestion, bank: user.bank }
let(:some_user) { create :bank_advisor, bank: user.bank }
before do
create :bank_offer,
credit_process: credit_process_5,
bank_suggestion: suggestion_5,
bank_advisor: some_user,
status: :expired,
created_at: 5.days.ago,
closed_at: 2.days.ago
params[:filters][:general_status] = 'closed'
end
it 'returns only closed bank offers', :aggregate_failures do
call
data = json_response_body['data']
expect(data.count).to eq(1)
expect(data.first['id']).to eq(second.id.to_s)
end
end
end
В конце я получил 2 ошибки:
1.1) Ошибка / Ошибка: ожидаемо (data.count) .to eq (1)
expected: 1
got: 0
и второе, являющееся результатом первой ошибки:
1.2) Failure/Error: expect(data.first['id']).to eq(second.id.to_s)
NoMethodError:
undefined method `[]' for nil:NilClass
Как я уже говорил, метод работает правильно, потому что если я изменю статус ранее определенного bank_offer
на closed
, у меня не будет ошибки.К сожалению, он мне нужен в 20 других IT
тестах, поэтому я хочу вложить только один закрытый регистр.
Вот рабочие спецификации без вложенных банковских атрибутов:
describe 'filtering' do
subject(:call) do
get endpoint, headers: authorized_headers(token: token), params: params
end
context "when status 'closed' passed " do
before do
params[:filters][:general_status] = 'closed'
end
it 'returns only closed bank offers', :aggregate_failures do
call
data = json_response_body['data']
expect(data.count).to eq(1)
expect(data.first['id']).to eq(second.id.to_s)
end
end
end