mongodb_ecto icon indicating copy to clipboard operation
mongodb_ecto copied to clipboard

Integrate with in-memory db in test suites

Open KoushikDasika opened this issue 3 years ago • 1 comments

The current challenge I am facing is that I want to write integration tests that add and remove data from the database and I miss the safety of the Ecto.SQL.Sandbox. I would like my test suite to spin up a local database (possibly per testfile), run its test, and then shut it down once the suite is complete. I find myself thinking about how i need to configure my CI (docker with one container? docker with multiple containers? native runner?)

In other ecosystems like NodeJS, there are adapters to the test suites that can spin up an ephemeral in-memory database just for the tests.

https://github.com/shelfio/jest-mongodb https://github.com/nodkz/mongodb-memory-server

I can spin up a unique database per test file, I can configure a ReplSet for Multi-doc transactions, etc.

  1. Am I doing it wrong? Is there a better way that I haven't thought of for mongo_ecto?
  2. Is there interest in adding either this plugin or porting this functionality to an optional addon?

KoushikDasika avatar Jun 04 '22 15:06 KoushikDasika

H @KoushikDasika ! Great question. An memory option would be great, but I don't know how we'd do it.

For our app, we're using Github actions and use a github actions steps:

      - name: Start MongoDB
        uses: supercharge/[email protected]
        with:
          mongodb-version: 4.2
          mongodb-replica-set: "replica-set"

Let me know if that helps!

scottmessinger avatar Jun 08 '22 16:06 scottmessinger