I've got issue during controller testing in rspec. I created an entity (stored in postgres) and passed the entity.id as HTTP request parameter. I can see that the entity was stored into DB within the test, but controller did not see it.
All DB request happened within one transaction, so I thought it will be the problem.
I've got bunch of similar tests, so there is no problem with the DB connection and anything like that.
I tried to move create :entity to before block, and loaded it to request as Entity.all.first.id.
Using let!(:entity) {create :entity} was also useless. Taking it out from contexts too.
// notifications_controller_spec.rb
context 'with an entity' do
it 'renders the list of notifications' do
entity = create :entity
pp Entity.all // returns array with stored entity
get :index, entity: entity.id
expect(response.status).to eq 200
expect(response).to render_template 'index'
end
end
//notifications_controller.rb
def index
pp Entity.all // returns empty array
defaults_entity
return render 'welcome_no_entity' if @entity.nil?
@notifications = NotificationDecorator.decorate_collection(
Notification::EntityScopedQuery.
new(@entity.id, { order: { created_at: :desc } }).
all
)
end
I would expect to see stored the same entity as in the test.
There will be probably some stupid mistake. Thx for help.
EDIT1:
// create entity
INSERT INTO "entities" ("name", "type", "customer_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "test"], ["type", "complex"], ["customer_id", 514911], ["created_at", "2019-01-24 08:43:00.145471"], ["updated_at", "2019-01-24 08:43:00.145471"]]
// select in test
SELECT "entities".* FROM "entities"
There is no other log like SELECT "entities".* FROM "entities", even when there should be. I can also say, select is from the test.
entity.valid? && entity.persisted?defaults_entity:@entity = params.deep_symbolize_keys[:entity]. But it is just an ID. Using that ID, entity is loaded from DB. And that is the problem. There is not entity stored in the DB on controllers site.pp entity.valid? && entity.persisted? // true