utils.test.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. const { prependLoader } = require("./utils");
  2. describe("prependLoader", () => {
  3. const expectedMappings = [
  4. {
  5. name: "single loader",
  6. from: {
  7. test: /\.jsx?$/,
  8. loader: "babel-loader",
  9. },
  10. to: {
  11. test: /\.jsx?$/,
  12. use: ["speed-measure-webpack-plugin/loader", "babel-loader"],
  13. },
  14. },
  15. {
  16. name: "single use",
  17. from: {
  18. test: /\.jsx?$/,
  19. use: ["babel-loader"],
  20. },
  21. to: {
  22. test: /\.jsx?$/,
  23. use: ["speed-measure-webpack-plugin/loader", "babel-loader"],
  24. },
  25. },
  26. {
  27. name: "single complex use",
  28. from: {
  29. test: /\.jsx?$/,
  30. use: [{ loader: "babel-loader", options: {} }],
  31. },
  32. to: {
  33. test: /\.jsx?$/,
  34. use: [
  35. "speed-measure-webpack-plugin/loader",
  36. { loader: "babel-loader", options: {} },
  37. ],
  38. },
  39. },
  40. {
  41. name: "multiple uses",
  42. from: {
  43. test: /\.jsx?$/,
  44. use: [{ loader: "babel-loader", options: {} }, "thread-loader"],
  45. },
  46. to: {
  47. test: /\.jsx?$/,
  48. use: [
  49. "speed-measure-webpack-plugin/loader",
  50. { loader: "babel-loader", options: {} },
  51. "thread-loader",
  52. ],
  53. },
  54. },
  55. {
  56. name: "oneOf",
  57. from: {
  58. test: /\.jsx?$/,
  59. oneOf: [{ use: ["babel-loader"] }, { use: ["thread-loader"] }],
  60. },
  61. to: {
  62. test: /\.jsx?$/,
  63. oneOf: [
  64. {
  65. use: ["speed-measure-webpack-plugin/loader", "babel-loader"],
  66. },
  67. {
  68. use: ["speed-measure-webpack-plugin/loader", "thread-loader"],
  69. },
  70. ],
  71. },
  72. },
  73. {
  74. name: "array",
  75. from: [
  76. {
  77. test: /\.jsx?$/,
  78. loader: "babel-loader",
  79. },
  80. {
  81. test: /\.css$/,
  82. loader: "css-loader",
  83. },
  84. ],
  85. to: [
  86. {
  87. test: /\.jsx?$/,
  88. use: ["speed-measure-webpack-plugin/loader", "babel-loader"],
  89. },
  90. {
  91. test: /\.css$/,
  92. use: ["speed-measure-webpack-plugin/loader", "css-loader"],
  93. },
  94. ],
  95. },
  96. ];
  97. expectedMappings.forEach(mapping => {
  98. it('should create the expected mapping for "' + mapping.name + '"', () => {
  99. expect(prependLoader(mapping.from)).toEqual(mapping.to);
  100. });
  101. });
  102. });