How do I rollback adonisjs database before running functional tests with japa?

441 views Asked by At

I set up my bootstrap file to run a few TestUtil commands so that I can migrate and seed my test database before running my full functional test suite. The problem that I'm running in to is when my seeder for creating Admin user runs it fails because the user is still in the database and will not let me recreate the account.

I'd like to clear out the database of all of it's data before the seeders run. Is there an easy way to do this in the bootstrap file ?

Here is what my current bootstrap file looks like.

export const runnerHooks: Required<Pick<Config, 'setup' | 'teardown'>> = {
  setup: [
    () => TestUtils.ace().loadCommands(),
    () => TestUtils.db().migrate(),
    () => TestUtils.db().seed(),
  ],

  teardown: [],
}```
1

There are 1 answers

0
Jannie Theunissen On

I am not sure about how to do it in the bootstrap file, but this works very well for me in a test group:

test.group('Content API', (group) => {
  group.each.setup(async () => {
    await Database.beginGlobalTransaction();
    return () => Database.rollbackGlobalTransaction();
  });

// your tests each starting with a squeeky clean database here
});