jest.config.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@pm.me>
  3. *
  4. * @author Marco Ambrosini <marcoambrosini@pm.me>
  5. *
  6. * @license GNU AGPL version 3 or any later version
  7. *
  8. * This program is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU Affero General Public License as
  10. * published by the Free Software Foundation, either version 3 of the
  11. * License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU Affero General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Affero General Public License
  19. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. *
  21. */
  22. import type { Config } from 'jest'
  23. // TODO: find a way to consolidate this in one place, with webpack.common.js
  24. const ignorePatterns = [
  25. '@buttercup/fetch',
  26. '@juliushaertl',
  27. '@mdi/svg',
  28. '@nextcloud/files',
  29. '@nextcloud/upload',
  30. '@nextcloud/vue',
  31. 'ansi-regex',
  32. 'camelcase',
  33. 'char-regex',
  34. 'hot-patcher',
  35. 'is-svg',
  36. 'layerr',
  37. 'mime',
  38. 'p-cancelable',
  39. 'p-limit',
  40. 'p-queue',
  41. 'p-timeout',
  42. 'splitpanes',
  43. 'string-length',
  44. 'strip-ansi',
  45. 'tributejs',
  46. 'unist-.+',
  47. 'url-join',
  48. 'vue-material-design-icons',
  49. 'webdav',
  50. 'yocto-queue',
  51. ]
  52. const config: Config = {
  53. testMatch: ['<rootDir>/**/*.(spec|test).(ts|js)'],
  54. clearMocks: true,
  55. setupFilesAfterEnv: ['<rootDir>/__tests__/jest-setup.ts'],
  56. testEnvironment: 'jest-environment-jsdom',
  57. preset: 'ts-jest/presets/js-with-ts',
  58. roots: [
  59. '<rootDir>/__mocks__',
  60. '<rootDir>/__tests__',
  61. '<rootDir>/apps',
  62. '<rootDir>/core',
  63. ],
  64. transform: {
  65. // process `*.js` files with `babel-jest`
  66. '^.+\\.c?js$': 'babel-jest',
  67. '^.+\\.vue$': '@vue/vue2-jest',
  68. '^.+\\.ts$': ['ts-jest', {
  69. // @see https://github.com/kulshekhar/ts-jest/issues/4081
  70. tsconfig: './__tests__/tsconfig.json',
  71. }],
  72. },
  73. transformIgnorePatterns: [
  74. 'node_modules/(?!(' + ignorePatterns.join('|') + ')/)',
  75. ],
  76. // Allow mocking svg files
  77. moduleNameMapper: {
  78. '^.+\\.svg(\\?raw)?$': '<rootDir>/__mocks__/svg.js',
  79. '\\.s?css$': '<rootDir>/__mocks__/css.js',
  80. },
  81. modulePathIgnorePatterns: [
  82. '<rootDir>/apps2/',
  83. '<rootDir>/apps-extra/',
  84. ],
  85. }
  86. export default config