import { basename, join } from 'path';
import { beforeAll, describe, expect, it } from 'vitest';
import { getGithubSamplesGroups, defaultHelpers as helpers, runResult } from 'generator-jhipster/testing';

const generator = basename(import.meta.dirname);

describe(`generator - ${generator}`, async () => {
  const groups = await getGithubSamplesGroups(join(import.meta.dirname, '../generate-sample/templates/'));
  for (const workflow of groups.map(sample => sample.split('.')[0])) {
    describe(`with ${workflow}`, () => {
      beforeAll(async () => {
        await helpers.runJHipster(join(import.meta.dirname, 'index.mjs'), { prepareEnvironment: true }).withArguments(workflow);
      });

      it('should match matrix value', () => {
        expect(runResult.generator.matrix).toMatchSnapshot();
      });
    });
  }
});
