merge-route-modules.test.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import type { RouteRecordRaw } from 'vue-router';
  2. import type { RouteModuleType } from './merge-route-modules';
  3. import { describe, expect, it } from 'vitest';
  4. import { mergeRouteModules } from './merge-route-modules';
  5. describe('mergeRouteModules', () => {
  6. it('should merge route modules correctly', () => {
  7. const routeModules: Record<string, RouteModuleType> = {
  8. './dynamic-routes/about.ts': {
  9. default: [
  10. {
  11. component: () => Promise.resolve({ template: '<div>About</div>' }),
  12. name: 'About',
  13. path: '/about',
  14. },
  15. ],
  16. },
  17. './dynamic-routes/home.ts': {
  18. default: [
  19. {
  20. component: () => Promise.resolve({ template: '<div>Home</div>' }),
  21. name: 'Home',
  22. path: '/',
  23. },
  24. ],
  25. },
  26. };
  27. const expectedRoutes: RouteRecordRaw[] = [
  28. {
  29. component: expect.any(Function),
  30. name: 'About',
  31. path: '/about',
  32. },
  33. {
  34. component: expect.any(Function),
  35. name: 'Home',
  36. path: '/',
  37. },
  38. ];
  39. const mergedRoutes = mergeRouteModules(routeModules);
  40. expect(mergedRoutes).toEqual(expectedRoutes);
  41. });
  42. it('should handle empty modules', () => {
  43. const routeModules: Record<string, RouteModuleType> = {};
  44. const expectedRoutes: RouteRecordRaw[] = [];
  45. const mergedRoutes = mergeRouteModules(routeModules);
  46. expect(mergedRoutes).toEqual(expectedRoutes);
  47. });
  48. it('should handle modules with no default export', () => {
  49. const routeModules: Record<string, RouteModuleType> = {
  50. './dynamic-routes/empty.ts': {
  51. default: [],
  52. },
  53. };
  54. const expectedRoutes: RouteRecordRaw[] = [];
  55. const mergedRoutes = mergeRouteModules(routeModules);
  56. expect(mergedRoutes).toEqual(expectedRoutes);
  57. });
  58. });