I am sorry my problem maybe difficult to explain and I am not sure I understand how things are working.
My app uses some GenStage and GenServers to process data and sometimes write this data to the database as a side effect.
I wrote some tests to assert that the side effects are happening. I learned about the
start_link so I can start a separate GetStage or GenServer for a test. I am using
Ecto.Adapters.SQL.Sandbox in my test env. All this is normal I think.
However what I see is that I can run individual tests (like
mix test test/some/module.exs) and they pass, but when I do a full test run with
mix test, sometimes tests fail. The first time works, but I notice that some data stays in the database. I can drop/create the database and run
mix test (and they pass) but then when I look in the database I see some records got created.
How is this possible? I thought Sandbox used a transaction to wrap the database operations? Maybe I forgot
Sandbox.checkout(Repo) somewhere? Or is there some other reason why records are staying in the database?
Thanks for any assistance!