@into-cps-association/libms 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +1 -0
  2. package/config/http.json +1 -0
  3. package/dist/src/app.module.js +5 -6
  4. package/dist/src/app.module.js.map +1 -1
  5. package/dist/src/bootstrap.js +11 -21
  6. package/dist/src/bootstrap.js.map +1 -1
  7. package/dist/src/config/config.interface.d.ts +14 -0
  8. package/dist/src/config/config.interface.js +2 -0
  9. package/dist/src/config/config.interface.js.map +1 -0
  10. package/dist/src/config/config.model.d.ts +14 -0
  11. package/dist/src/config/config.model.js +2 -0
  12. package/dist/src/config/config.model.js.map +1 -0
  13. package/dist/src/config/config.module.d.ts +2 -0
  14. package/dist/src/config/config.module.js +33 -0
  15. package/dist/src/config/config.module.js.map +1 -0
  16. package/dist/src/config/config.service.d.ts +17 -0
  17. package/dist/src/config/config.service.js +61 -0
  18. package/dist/src/config/config.service.js.map +1 -0
  19. package/dist/src/config/util.d.ts +1 -0
  20. package/dist/src/config/util.js +5 -0
  21. package/dist/src/config/util.js.map +1 -0
  22. package/dist/src/files/files-service.factory.d.ts +2 -2
  23. package/dist/src/files/files-service.factory.js +4 -1
  24. package/dist/src/files/files-service.factory.js.map +1 -1
  25. package/dist/src/files/files.module.js +2 -2
  26. package/dist/src/files/files.module.js.map +1 -1
  27. package/dist/src/files/git/git-files.service.d.ts +4 -2
  28. package/dist/src/files/git/git-files.service.js +31 -20
  29. package/dist/src/files/git/git-files.service.js.map +1 -1
  30. package/dist/src/files/interfaces/files.service.interface.d.ts +1 -0
  31. package/dist/src/files/local/local-files.service.d.ts +3 -2
  32. package/dist/src/files/local/local-files.service.js +12 -4
  33. package/dist/src/files/local/local-files.service.js.map +1 -1
  34. package/dist/src/main.d.ts +4 -1
  35. package/dist/test/cloudcmd/cloudcmd.spec.js +3 -3
  36. package/dist/test/cloudcmd/cloudcmd.spec.js.map +1 -1
  37. package/dist/test/e2e/app.e2e.spec.js +18 -12
  38. package/dist/test/e2e/app.e2e.spec.js.map +1 -1
  39. package/dist/test/integration/files.service.integration.spec.js +6 -6
  40. package/dist/test/integration/files.service.integration.spec.js.map +1 -1
  41. package/dist/test/testUtil.d.ts +7 -1
  42. package/dist/test/testUtil.js +20 -17
  43. package/dist/test/testUtil.js.map +1 -1
  44. package/dist/test/unit/files-service.factory.unit.spec.js +20 -8
  45. package/dist/test/unit/files-service.factory.unit.spec.js.map +1 -1
  46. package/dist/test/unit/files.resolver.unit.spec.js +1 -0
  47. package/dist/test/unit/files.resolver.unit.spec.js.map +1 -1
  48. package/dist/test/unit/git-files.service.unit.spec.js +6 -5
  49. package/dist/test/unit/git-files.service.unit.spec.js.map +1 -1
  50. package/dist/test/unit/local-files.service.unit.spec.js +36 -21
  51. package/dist/test/unit/local-files.service.unit.spec.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/eslint.config.js +5 -0
  54. package/libms.yaml.sample +12 -0
  55. package/package.json +9 -7
  56. package/src/app.module.ts +6 -7
  57. package/src/bootstrap.ts +14 -21
  58. package/src/config/config.interface.ts +14 -0
  59. package/src/config/config.model.ts +13 -0
  60. package/src/config/config.module.ts +23 -0
  61. package/src/config/config.service.ts +54 -0
  62. package/src/config/util.ts +5 -0
  63. package/src/files/files-service.factory.ts +5 -3
  64. package/src/files/files.module.ts +3 -3
  65. package/src/files/git/git-files.service.ts +28 -21
  66. package/src/files/interfaces/files.service.interface.ts +1 -0
  67. package/src/files/local/local-files.service.ts +13 -4
  68. package/src/main.ts +1 -1
  69. package/test/cloudcmd/cloudcmd.spec.ts +4 -4
  70. package/test/data/user2/tools/large_file.md +1 -0
  71. package/test/e2e/app.e2e.spec.ts +23 -13
  72. package/test/integration/files.service.integration.spec.ts +9 -10
  73. package/test/jest-e2e.json +3 -0
  74. package/test/libms.test.yaml +6 -0
  75. package/test/testUtil.ts +23 -19
  76. package/test/unit/files-service.factory.unit.spec.ts +22 -11
  77. package/test/unit/files.resolver.unit.spec.ts +1 -0
  78. package/test/unit/git-files.service.unit.spec.ts +6 -5
  79. package/test/unit/local-files.service.unit.spec.ts +41 -25
  80. package/test/update-config.js +25 -0
@@ -6,30 +6,36 @@ import { ApolloClient, InMemoryCache, gql, } from '@apollo/client/core/core.cjs'
6
6
  import { HttpLink } from '@apollo/client/link/http/http.cjs';
7
7
  import AppModule from '../../src/app.module';
8
8
  import { e2eReadFile, e2elistDirectory, expectedFileContentResponse, expectedListDirectoryResponse, } from '../testUtil';
9
- const client = new ApolloClient({
10
- link: new HttpLink({
11
- uri: `http://localhost:${process.env.PORT}${process.env.APOLLO_PATH}`,
12
- fetch,
13
- }),
14
- cache: new InMemoryCache({ addTypename: false }),
15
- });
9
+ import { CONFIG_SERVICE } from 'src/config/config.interface';
10
+ let client;
11
+ let configService;
16
12
  describe('End to End test for the application', () => {
17
13
  let app;
18
14
  beforeAll(async () => {
19
15
  const moduleFixture = await Test.createTestingModule({
20
16
  imports: [AppModule],
21
17
  }).compile();
18
+ configService = moduleFixture.get(CONFIG_SERVICE);
22
19
  app = moduleFixture.createNestApplication();
20
+ client = new ApolloClient({
21
+ link: new HttpLink({
22
+ uri: `http://localhost:${configService.getPort()}${configService.getApolloPath()}`,
23
+ fetch,
24
+ }),
25
+ cache: new InMemoryCache({ addTypename: false }),
26
+ });
23
27
  await app.init();
24
- await app.listen(process.env.PORT);
25
- await new Promise((resolve) => setTimeout(resolve, 4000));
26
- }, 10000);
28
+ await app.listen(configService.getPort());
29
+ while (!app.getHttpServer().listening) {
30
+ await new Promise((resolve) => setTimeout(resolve, 100));
31
+ }
32
+ }, 15000);
27
33
  afterAll(async () => {
28
34
  await app.close();
29
35
  }, 10000);
30
36
  async function HTTPQuery(query, expectedResponse) {
31
- const response = await request(`http://localhost:${process.env.PORT}`)
32
- .post(process.env.APOLLO_PATH)
37
+ const response = await request(`http://localhost:${configService.getPort()}`)
38
+ .post(configService.getApolloPath())
33
39
  .send({ query });
34
40
  expect(response.body).toEqual(expectedResponse);
35
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app.e2e.spec.js","sourceRoot":"","sources":["../../../test/e2e/app.e2e.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.e2e.spec.js","sourceRoot":"","sources":["../../../test/e2e/app.e2e.spec.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import { describe, it, expect, jest } from '@jest/globals';
2
2
  import { Test } from '@nestjs/testing';
3
- import { ConfigService } from '@nestjs/config';
4
3
  import FilesResolver from '../../src/files/files.resolver';
5
4
  import LocalFilesService from '../../src/files/local/local-files.service';
6
- import { pathToTestDirectory, pathToTestFileContent, testDirectory, testFileContent, MockConfigService, } from '../testUtil';
5
+ import { jestMockConfigService, pathToTestDirectory, pathToTestFileContent, testDirectory, testFileContent, } from '../testUtil';
7
6
  import GitFilesService from '../../src/files/git/git-files.service';
8
7
  import { FILE_SERVICE } from '../../src/files/interfaces/files.service.interface';
9
8
  import FilesServiceFactory from '../../src/files/files-service.factory';
9
+ import { CONFIG_SERVICE } from 'src/config/config.interface';
10
10
  describe('Integration tests for FilesResolver', () => {
11
11
  let filesResolver;
12
12
  let mockConfigService;
13
13
  beforeEach(async () => {
14
- mockConfigService = new MockConfigService();
14
+ mockConfigService = jestMockConfigService();
15
15
  const module = await Test.createTestingModule({
16
16
  providers: [
17
17
  FilesResolver,
@@ -21,11 +21,11 @@ describe('Integration tests for FilesResolver', () => {
21
21
  const fileServices = [localFilesService, gitFilesService];
22
22
  return FilesServiceFactory.create(configService, fileServices);
23
23
  },
24
- inject: [ConfigService, LocalFilesService, GitFilesService],
24
+ inject: [CONFIG_SERVICE, LocalFilesService, GitFilesService],
25
25
  },
26
26
  LocalFilesService,
27
27
  GitFilesService,
28
- { provide: ConfigService, useClass: MockConfigService },
28
+ { provide: CONFIG_SERVICE, useValue: mockConfigService },
29
29
  ],
30
30
  }).compile();
31
31
  filesResolver = module.get(FilesResolver);
@@ -37,7 +37,7 @@ describe('Integration tests for FilesResolver', () => {
37
37
  for (const mode of modes) {
38
38
  describe(`when MODE is ${mode}`, () => {
39
39
  beforeEach(() => {
40
- jest.spyOn(mockConfigService, 'get').mockReturnValue(mode);
40
+ jest.spyOn(mockConfigService, 'getMode').mockImplementation(() => mode);
41
41
  });
42
42
  it('should be defined', () => {
43
43
  expect(filesResolver).toBeDefined();
@@ -1 +1 @@
1
- {"version":3,"file":"files.service.integration.spec.js","sourceRoot":"","sources":["../../../test/integration/files.service.integration.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.service.integration.spec.js","sourceRoot":"","sources":["../../../test/integration/files.service.integration.spec.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { IConfig } from 'src/config/config.interface';
1
2
  export declare const readFileActualContent: string[];
2
3
  export declare const pathToTestDirectory = "user2";
3
4
  export declare const testDirectory: {
@@ -19,7 +20,10 @@ export declare const testDirectory: {
19
20
  };
20
21
  export declare const testFileName = "README.md";
21
22
  export declare const fstestFileContent = "content123";
23
+ export declare const largeTestFileName = "large_file.md";
24
+ export declare const largeFstestFileContent: string;
22
25
  export declare const pathToTestFileContent = "user2/tools/README.md";
26
+ export declare const pathToLargeTestFileContent = "user2/tools/large_file.md";
23
27
  export declare const testFileArray: string[];
24
28
  export declare const testFileContent: {
25
29
  repository: {
@@ -34,8 +38,10 @@ export declare const testFileContent: {
34
38
  };
35
39
  export declare function sleep(ms: any): void;
36
40
  export declare class MockConfigService {
37
- get(key: string): string;
41
+ getMode(): string;
42
+ getLocalPath(): string;
38
43
  }
44
+ export declare const jestMockConfigService: () => IConfig;
39
45
  export declare const mockReadFileResponseData: {
40
46
  project: {
41
47
  __typename: string;
@@ -1,6 +1,6 @@
1
- import * as dotenv from 'dotenv';
2
1
  import { setTimeout } from 'timers/promises';
3
- dotenv.config({ path: '.env' });
2
+ import { jest } from '@jest/globals';
3
+ import { CONFIG_MODE } from 'src/enums/config-mode.enum';
4
4
  export const readFileActualContent = ['content123'];
5
5
  export const pathToTestDirectory = 'user2';
6
6
  export const testDirectory = {
@@ -21,7 +21,10 @@ export const testDirectory = {
21
21
  };
22
22
  export const testFileName = 'README.md';
23
23
  export const fstestFileContent = 'content123';
24
+ export const largeTestFileName = 'large_file.md';
25
+ export const largeFstestFileContent = 'a'.repeat(500 * 1000);
24
26
  export const pathToTestFileContent = 'user2/tools/README.md';
27
+ export const pathToLargeTestFileContent = 'user2/tools/large_file.md';
25
28
  export const testFileArray = [
26
29
  'data',
27
30
  'digital_twins',
@@ -47,23 +50,23 @@ export function sleep(ms) {
47
50
  Promise.resolve(timer);
48
51
  }
49
52
  export class MockConfigService {
50
- get(key) {
51
- switch (key) {
52
- case 'LOCAL_PATH':
53
- return process.env.LOCAL_PATH;
54
- case 'MODE':
55
- if (process.env.MODE === 'local') {
56
- return 'local';
57
- }
58
- if (process.env.MODE === 'git') {
59
- return 'git';
60
- }
61
- return 'unknown';
62
- default:
63
- return undefined;
64
- }
53
+ getMode() {
54
+ return '';
55
+ }
56
+ getLocalPath() {
57
+ return 'test/data';
65
58
  }
66
59
  }
60
+ export const jestMockConfigService = () => ({
61
+ getMode: jest.fn().mockReturnValue(CONFIG_MODE.LOCAL),
62
+ getLocalPath: jest.fn().mockReturnValue('test/data'),
63
+ getApolloPath: jest.fn(),
64
+ getGitRepos: jest.fn(),
65
+ getGraphqlPlayground: jest.fn(),
66
+ getLogLevel: jest.fn(),
67
+ getPort: jest.fn(),
68
+ loadConfig: jest.fn(),
69
+ });
67
70
  export const mockReadFileResponseData = {
68
71
  project: {
69
72
  __typename: 'Project',
@@ -1 +1 @@
1
- {"version":3,"file":"testUtil.js","sourceRoot":"","sources":["../../test/testUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtil.js","sourceRoot":"","sources":["../../test/testUtil.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,50 @@
1
1
  import { describe, it, expect, jest } from '@jest/globals';
2
2
  import { Test } from '@nestjs/testing';
3
- import { ConfigService } from '@nestjs/config';
4
3
  import FilesServiceFactory from '../../src/files/files-service.factory';
5
4
  import LocalFilesService from '../../src/files/local/local-files.service';
6
5
  import GitFilesService from '../../src/files/git/git-files.service';
6
+ import { CONFIG_SERVICE } from 'src/config/config.interface';
7
+ import { jestMockConfigService } from 'test/testUtil';
8
+ import { CONFIG_MODE } from 'src/enums/config-mode.enum';
7
9
  describe('FilesServiceFactory', () => {
8
10
  let configService;
9
11
  let localFilesService;
10
12
  let gitFilesService;
11
13
  let fileServices;
12
14
  beforeEach(async () => {
15
+ configService = jestMockConfigService();
16
+ gitFilesService = {
17
+ getMode: jest.fn().mockReturnValue(CONFIG_MODE.GIT),
18
+ init: jest.fn(),
19
+ };
13
20
  const module = await Test.createTestingModule({
14
21
  providers: [
15
- GitFilesService,
16
- { provide: ConfigService, useValue: { get: jest.fn() } },
22
+ { provide: GitFilesService, useValue: gitFilesService },
23
+ {
24
+ provide: CONFIG_SERVICE,
25
+ useValue: configService,
26
+ },
17
27
  LocalFilesService,
18
28
  ],
19
29
  }).compile();
20
- configService = module.get(ConfigService);
21
30
  localFilesService = module.get(LocalFilesService);
22
31
  gitFilesService = module.get(GitFilesService);
23
32
  fileServices = [gitFilesService, localFilesService];
24
33
  });
25
34
  it('should create a local files service when MODE is local', () => {
26
- jest.spyOn(configService, 'get').mockReturnValue('local');
35
+ jest.spyOn(configService, 'getMode').mockReturnValue('local');
27
36
  expect(FilesServiceFactory.create(configService, fileServices)).toBe(localFilesService);
28
37
  });
29
38
  it('should create a git files service when MODE is git', () => {
30
- jest.spyOn(configService, 'get').mockReturnValue('git');
39
+ jest.spyOn(configService, 'getMode').mockReturnValue(CONFIG_MODE.GIT);
31
40
  expect(FilesServiceFactory.create(configService, fileServices)).toBe(gitFilesService);
32
41
  });
33
42
  it('should throw an error when MODE is invalid', () => {
34
- jest.spyOn(configService, 'get').mockReturnValue('invalid');
35
- expect(() => FilesServiceFactory.create(configService, fileServices)).toThrow(`Invalid MODE: invalid`);
43
+ const invalidMode = 'invalid';
44
+ jest.spyOn(configService, 'getMode').mockReturnValue(invalidMode);
45
+ expect(() => {
46
+ FilesServiceFactory.create(configService, fileServices);
47
+ }).toThrow(`Invalid MODE: ${invalidMode}`);
36
48
  });
37
49
  });
38
50
  //# sourceMappingURL=files-service.factory.unit.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"files-service.factory.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files-service.factory.unit.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,mBAAmB,MAAM,uCAAuC,CAAC;AACxE,OAAO,iBAAiB,MAAM,2CAA2C,CAAC;AAE1E,OAAO,eAAe,MAAM,uCAAuC,CAAC;AAEpE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,aAA4B,CAAC;IACjC,IAAI,iBAAgC,CAAC;IACrC,IAAI,eAA8B,CAAC;IACnC,IAAI,YAA6B,CAAC;IAElC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,eAAe;gBACf,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;gBACxD,iBAAiB;aAClB;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,aAAa,GAAG,MAAM,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACzD,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAoB,iBAAiB,CAAC,CAAC;QACrE,eAAe,GAAG,MAAM,CAAC,GAAG,CAAkB,eAAe,CAAC,CAAC;QAC/D,YAAY,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAClE,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAClE,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,EAAE,CACV,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CACxD,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"files-service.factory.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files-service.factory.unit.spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,mBAAmB,MAAM,uCAAuC,CAAC;AACxE,OAAO,iBAAiB,MAAM,2CAA2C,CAAC;AAE1E,OAAO,eAAe,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAW,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,aAAsB,CAAC;IAC3B,IAAI,iBAAgC,CAAC;IACrC,IAAI,eAA8B,CAAC;IACnC,IAAI,YAA6B,CAAC;IAElC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,aAAa,GAAG,qBAAqB,EAAE,CAAC;QACxC,eAAe,GAAG;YAChB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC;YACtE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAuB;SACT,CAAC;QAE9B,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE;gBACvD;oBACE,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,aAAa;iBACxB;gBACD,iBAAiB;aAClB;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAoB,iBAAiB,CAAC,CAAC;QACrE,eAAe,GAAG,MAAM,CAAC,GAAG,CAAkB,eAAe,CAAC,CAAC;QAC/D,YAAY,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAClE,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAClE,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,WAAW,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,EAAE;YACV,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -16,6 +16,7 @@ describe('Unit tests for FilesResolver', () => {
16
16
  .fn()
17
17
  .mockImplementation(() => Promise.resolve(testFileContent)),
18
18
  getMode: jest.fn().mockReturnValue(CONFIG_MODE.LOCAL),
19
+ init: jest.fn(),
19
20
  };
20
21
  const module = await Test.createTestingModule({
21
22
  providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"files.resolver.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files.resolver.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,GAEb,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,aAA4B,CAAC;IACjC,IAAI,YAA2B,CAAC;IAEhC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,gBAAgB,GAAkB;YACtC,aAAa,EAAE,IAAI;iBAChB,EAAE,EAA0B;iBAC5B,iBAAiB,CAAC,aAAa,CAAC;YACnC,QAAQ,EAAE,IAAI;iBACX,EAAE,EAA0B;iBAC5B,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC7D,OAAO,EAAE,IAAI,CAAC,EAAE,EAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;SACzE,CAAC;QAEF,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,aAAa;gBACb;oBACE,OAAO,EAAE,YAAY;oBACrB,UAAU,EAAE,GAAG,EAAE;wBACf,OAAO,gBAAgB,CAAC;oBAC1B,CAAC;iBACF;aACF;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,aAAa,GAAG,MAAM,CAAC,GAAG,CAAgB,aAAa,CAAC,CAAC;QACzD,YAAY,GAAG,MAAM,CAAC,GAAG,CAAgB,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACrD,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACxC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"files.resolver.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/files.resolver.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { describe, it, expect, jest } from '@jest/globals';
2
2
  import { Test } from '@nestjs/testing';
3
- import { ConfigService } from '@nestjs/config';
4
3
  import LocalFileService from 'src/files/local/local-files.service';
5
- import { MockConfigService, testDirectory, testFileContent, } from 'test/testUtil';
4
+ import { jestMockConfigService, testDirectory, testFileContent, } from 'test/testUtil';
6
5
  import GitFilesService from 'src/files/git/git-files.service';
7
6
  import { CONFIG_MODE } from 'src/enums/config-mode.enum';
7
+ import { CONFIG_SERVICE } from 'src/config/config.interface';
8
8
  jest.mock('fs', () => ({
9
9
  promises: {
10
10
  readdir: jest.fn(),
@@ -14,7 +14,7 @@ jest.mock('fs', () => ({
14
14
  }));
15
15
  describe('GitFilesService', () => {
16
16
  let service;
17
- const mockConfigService = new MockConfigService();
17
+ const mockConfigService = jestMockConfigService();
18
18
  const mockLocalFilesService = {
19
19
  listDirectory: jest
20
20
  .fn()
@@ -23,12 +23,13 @@ describe('GitFilesService', () => {
23
23
  .fn()
24
24
  .mockImplementation(() => Promise.resolve(testFileContent)),
25
25
  getMode: jest.fn().mockReturnValue(CONFIG_MODE.LOCAL),
26
+ init: jest.fn(),
26
27
  };
27
28
  beforeEach(async () => {
28
29
  const module = await Test.createTestingModule({
29
30
  providers: [
30
31
  GitFilesService,
31
- { provide: ConfigService, useValue: mockConfigService },
32
+ { provide: CONFIG_SERVICE, useValue: mockConfigService },
32
33
  { provide: LocalFileService, useValue: mockLocalFilesService },
33
34
  ],
34
35
  }).compile();
@@ -49,7 +50,7 @@ describe('GitFilesService', () => {
49
50
  it('should call read file in localService', async () => {
50
51
  const mockReadFile = jest.spyOn(mockLocalFilesService, 'readFile');
51
52
  await service.readFile('/some/path/file.txt');
52
- expect(mockReadFile).toBeCalledTimes(1);
53
+ expect(mockReadFile).toHaveBeenCalledTimes(1);
53
54
  });
54
55
  });
55
56
  //# sourceMappingURL=git-files.service.unit.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-files.service.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/git-files.service.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACrB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;KACpB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAwB,CAAC;IAC7B,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAClD,MAAM,qBAAqB,GAAkB;QAC3C,aAAa,EAAE,IAAI;aAChB,EAAE,EAA0B;aAC5B,iBAAiB,CAAC,aAAa,CAAC;QACnC,QAAQ,EAAE,IAAI;aACX,EAAE,EAA0B;aAC5B,kBAAkB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,EAAE,IAAI,CAAC,EAAE,EAAqB,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;KACzE,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,eAAe;gBACf,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE;gBACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE;aAC/D;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,GAAG,MAAM,CAAC,GAAG,CAAkB,eAAe,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAE1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAClC,qBAAqB,EACrB,eAAe,CAChB,CAAC;QAGF,MAAM,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAG1C,MAAM,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QAErD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QAGnE,MAAM,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAG9C,MAAM,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"git-files.service.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/git-files.service.unit.spec.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { describe, it, expect, jest } from '@jest/globals';
2
2
  import { Test } from '@nestjs/testing';
3
- import { ConfigService } from '@nestjs/config';
4
3
  import * as fs from 'fs';
5
4
  import { join } from 'path';
6
5
  import LocalFilesService from '../../src/files/local/local-files.service';
7
- import { fstestFileContent, pathToTestDirectory, pathToTestFileContent, testFileArray, MockConfigService, testFileName, } from '../testUtil';
6
+ import { fstestFileContent, pathToTestDirectory, pathToTestFileContent, testFileName, pathToLargeTestFileContent, largeFstestFileContent, largeTestFileName, jestMockConfigService, testFileArray, } from '../testUtil';
7
+ import { CONFIG_SERVICE } from 'src/config/config.interface';
8
8
  jest.mock('fs', () => ({
9
9
  promises: {
10
10
  readdir: jest.fn(),
@@ -14,12 +14,13 @@ jest.mock('fs', () => ({
14
14
  }));
15
15
  describe('LocalFilesService', () => {
16
16
  let service;
17
- const mockConfigService = new MockConfigService();
17
+ let mockConfigService;
18
18
  beforeEach(async () => {
19
+ mockConfigService = jestMockConfigService();
19
20
  const module = await Test.createTestingModule({
20
21
  providers: [
21
22
  LocalFilesService,
22
- { provide: ConfigService, useValue: mockConfigService },
23
+ { provide: CONFIG_SERVICE, useValue: mockConfigService },
23
24
  ],
24
25
  }).compile();
25
26
  service = module.get(LocalFilesService);
@@ -31,7 +32,7 @@ describe('LocalFilesService', () => {
31
32
  expect(service).toBeDefined();
32
33
  });
33
34
  it('should list directory', async () => {
34
- const fullPath = join(mockConfigService.get('LOCAL_PATH'), pathToTestDirectory);
35
+ const fullPath = join(mockConfigService.getLocalPath(), pathToTestDirectory);
35
36
  const statsMock = {
36
37
  isDirectory: () => true,
37
38
  };
@@ -60,24 +61,38 @@ describe('LocalFilesService', () => {
60
61
  expect(fs.promises.readdir).toHaveBeenCalledWith(fullPath);
61
62
  expect(fs.promises.lstat).toHaveBeenCalledTimes(testFileArray.length);
62
63
  });
63
- it('should read file', async () => {
64
- const fullPath = join(mockConfigService.get('LOCAL_PATH'), pathToTestFileContent);
65
- jest.spyOn(fs.promises, 'readFile').mockResolvedValue(fstestFileContent);
66
- const result = await service.readFile(pathToTestFileContent);
67
- expect(result).toEqual({
68
- repository: {
69
- blobs: {
70
- nodes: [
71
- {
72
- name: testFileName,
73
- rawBlob: fstestFileContent,
74
- rawTextBlob: fstestFileContent,
75
- },
76
- ],
64
+ const readTestFile = [
65
+ {
66
+ name: largeTestFileName,
67
+ filePath: pathToLargeTestFileContent,
68
+ expectedContent: largeFstestFileContent,
69
+ },
70
+ {
71
+ name: testFileName,
72
+ filePath: pathToTestFileContent,
73
+ expectedContent: fstestFileContent,
74
+ },
75
+ ];
76
+ readTestFile.forEach(({ name, filePath, expectedContent }) => {
77
+ it(`should read file ${name}`, async () => {
78
+ const fullPath = join(mockConfigService.getLocalPath(), filePath);
79
+ jest.spyOn(fs.promises, 'readFile').mockResolvedValue(expectedContent);
80
+ const result = await service.readFile(filePath);
81
+ expect(result).toEqual({
82
+ repository: {
83
+ blobs: {
84
+ nodes: [
85
+ {
86
+ name: name,
87
+ rawBlob: expectedContent,
88
+ rawTextBlob: expectedContent,
89
+ },
90
+ ],
91
+ },
77
92
  },
78
- },
93
+ });
94
+ expect(fs.promises.readFile).toHaveBeenCalledWith(fullPath, 'utf8');
79
95
  });
80
- expect(fs.promises.readFile).toHaveBeenCalledWith(fullPath, 'utf8');
81
96
  });
82
97
  });
83
98
  //# sourceMappingURL=local-files.service.unit.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-files.service.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/local-files.service.unit.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAiB,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,iBAAiB,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACrB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;KACpB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,OAA0B,CAAC;IAC/B,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAElD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE;gBACT,iBAAiB;gBACjB,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE;aACxD;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,GAAG,MAAM,CAAC,GAAG,CAAoB,iBAAiB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAI,CACnB,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EACnC,mBAAmB,CACpB,CAAC;QAGF,MAAM,SAAS,GAAsB;YACnC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;SACxB,CAAC;QAEF,IAAI;aACD,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAC7B,iBAAiB,CAAC,aAAoC,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,eAAe,EAAE,EAAE;YACtE,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAqB,CAAC,CAAC;YAChD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,eAAe,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BAClC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;yBACnC,CAAC,CAAC;qBACJ;oBACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;iBACrB;aACF;SACF,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,QAAQ,GAAG,IAAI,CACnB,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EACnC,qBAAqB,CACtB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,YAAY;4BAClB,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,iBAAiB;yBAC/B;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"local-files.service.unit.spec.js","sourceRoot":"","sources":["../../../test/unit/local-files.service.unit.spec.ts"],"names":[],"mappings":"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"}