# src/lib/commands/generate/generate-seeder.test.js

    import test from 'ava';
    import sinon from 'sinon';

    import { mockImports, resetImports } from '../../utils/test-helpers';

    import generateSeeder, {
      __RewireAPI__ as moduleRewireAPI,
    } from './generate-seeder';

    const helpData = {
      name: 'name',
      seederTemplate: 'template',
      userSeedersFolderPath: 'path/to/seeders',
    };

    test.beforeEach('mock imports', t => {
      const { seederTemplate, userSeedersFolderPath } = helpData;

      const mocks = {
        validateUserConfig: sinon.stub(),
        SeederGenerator: sinon.stub(),
        config: { seederTemplate, userSeedersFolderPath },
      };

      mocks.SeederGenerator.prototype.generate = sinon
        .stub()
        .resolves('some.seeder.js');

      t.context = { mocks };

      mockImports({ moduleRewireAPI, mocks });

      sinon.stub(console, 'log');
    });

    test.afterEach.always('unmock imports', t => {
      const imports = Object.keys(t.context.mocks);

      resetImports({ moduleRewireAPI, imports });

      console.log.restore();
    });

    test('should generate a seeder', async t => {
      const { validateUserConfig, SeederGenerator } = t.context.mocks;
      await generateSeeder(helpData.name);

      t.true(validateUserConfig.called);
      t.true(SeederGenerator.calledWith(helpData));
      t.true(SeederGenerator.prototype.generate.called);
      t.true(console.log.called);
    });