const defaultOptions = {
  coverageThreshold: {
    global: {
      statements: 100,
      branches: 100,
      lines: 100,
      functions: 100,
    },
  },
};

module.exports = (pkg, options) => {
  options = options || {};

  return {
    name: pkg.name,
    displayName: pkg.name,
    collectCoverage: false,
    coverageReporters: ['json', 'text'],
    coverageDirectory: '<rootDir>/../../coverage',
    collectCoverageFrom: [
      '<rootDir>/src/**/*.ts',
      '!<rootDir>/src/**/*.d.ts',
      '!<rootDir>/src/**/*.test.ts',
      '!<rootDir>/src/**/index.ts',
      '!<rootDir>/src/**/prints/**/*.ts',
    ],
    setupFiles: ['<rootDir>/../../jest.setup.js'],
    setupFilesAfterEnv: ['<rootDir>/../flex-plugin-utils-jest'],
    preset: 'ts-jest',
    testEnvironment: 'jsdom',
    testMatch: ['<rootDir>/src/**/*.test.ts'],
    transform: {
      '^.+\\.js?$': '<rootDir>/../../node_modules/babel-jest',
    },
    transformIgnorePatterns: ['/node_modules/(?!(axios|@twilio/cli-core)/)'],
    testPathIgnorePatterns: ['/node_modules/', '<rootDir>/packages/flex-plugin-e2e-tests'],
    coveragePathIgnorePatterns: ['/node_modules/', 'jestTransforms'],
    globals: {
      'ts-jest': {
        tsconfig: 'tsconfig.test.json',
      },
    },
    ...defaultOptions,
    ...options,
  };
};