import path from 'node:path'; import { expect } from '../../../../test-utils'; import { readCollectionModuleDefinition } from '../../../helpers/collection-modules/read-collection-module-definition'; import { readAuthAndConfig } from '../../../helpers/read-auth-and-config'; import { CollectionModuleConfig } from '../collection-module-config'; import { CollectionModuleDefinitionRequest, CollectionModuleDefinitionResponse, collectionModuleDefinitionFromNetwork, collectionModuleDefinitionToNetwork, } from '../collection-module-definition'; describe('Conversion to and from network collection module definition', function () { let originalDefinition: CollectionModuleDefinitionRequest; let transformedDefinition: CollectionModuleDefinitionResponse; before('Transform the definition both ways', async function () { const exampleDefinitionDirectory = path.join('.', 'test-modules', 'collection-modules', 'example_module'); const result = readAuthAndConfig(exampleDefinitionDirectory); const config = result.config as CollectionModuleConfig; originalDefinition = await readCollectionModuleDefinition({ collectionModuleConfig: config, directory: exampleDefinitionDirectory, }); const lambdaPackageS3Key = 'collection-module-code/code-123/lambda-package.zip'; const networkDefinition = collectionModuleDefinitionToNetwork(originalDefinition, lambdaPackageS3Key); transformedDefinition = collectionModuleDefinitionFromNetwork({ ...networkDefinition, collection_module_definition_id: config.collectionModuleKey, organization_id: config.organizationId, collection_module_name: config.collectionModuleName, collection_module_key: config.collectionModuleKey, code: originalDefinition.code, paths: originalDefinition.codeFiles.map((codeFile) => ({ path_segments: codeFile.pathSegments, })), }); }); it('the collection module code should remain unchanged', function () { expect(originalDefinition.code).to.equal(transformedDefinition.code); }); it('the settings should remain unchanged', function () { expect(originalDefinition.rootConfig.settings).to.deep.equal(transformedDefinition.rootConfig.settings); }); it('the code file path segments should remain unchanged', function () { expect(originalDefinition.codeFiles.map((file) => file.pathSegments)).to.deep.equal( transformedDefinition.codeFiles.map((file) => file.pathSegments), ); }); });