import { convertRelationshipSlugs } from '../../requests/config-as-code-requests/helpers/yamlConfigTransforms'; import { MOCK_COMPONENT_ID, MOCK_COMPONENT_ID_2, MOCK_COMPONENT_SLUG_1, MOCK_COMPONENT_SLUG_2, } from '../fixtures/mocks'; import { YamlRelationships } from '../../types'; describe('yamlConfigTransforms', () => { describe('convertRelationshipSlugs', () => { it('converts slugs to ARIs', async () => { const relationships: YamlRelationships = { DEPENDS_ON: [MOCK_COMPONENT_SLUG_1, MOCK_COMPONENT_SLUG_2], }; const dependenciesBySlugs = { [MOCK_COMPONENT_SLUG_1]: MOCK_COMPONENT_ID, [MOCK_COMPONENT_SLUG_2]: MOCK_COMPONENT_ID_2, }; const result = convertRelationshipSlugs( relationships, dependenciesBySlugs, ); expect(result).toMatchObject({ DEPENDS_ON: [MOCK_COMPONENT_ID, MOCK_COMPONENT_ID_2], }); }); it('can combine relationships containing both aris and slugs in the same array', async () => { // Dependencies include both slugs and ARIs const relationships: YamlRelationships = { DEPENDS_ON: [MOCK_COMPONENT_ID, MOCK_COMPONENT_SLUG_2], }; const dependenciesBySlugs = { [MOCK_COMPONENT_SLUG_2]: MOCK_COMPONENT_ID_2, }; const result = convertRelationshipSlugs( relationships, dependenciesBySlugs, ); expect(result).toMatchObject({ DEPENDS_ON: [MOCK_COMPONENT_ID, MOCK_COMPONENT_ID_2], }); }); it('removes slugs that did not fetch a corresponding ARI', async () => { const relationships: YamlRelationships = { DEPENDS_ON: [MOCK_COMPONENT_SLUG_1, MOCK_COMPONENT_SLUG_2], }; const dependenciesBySlugs = { [MOCK_COMPONENT_SLUG_1]: MOCK_COMPONENT_ID, }; const result = convertRelationshipSlugs( relationships, dependenciesBySlugs, ); expect(result).toMatchObject({ DEPENDS_ON: [MOCK_COMPONENT_ID], }); }); it('deletes slugs if dependenciesBySlugs was empty/the feature was not enabled', async () => { const relationships: YamlRelationships = { DEPENDS_ON: [MOCK_COMPONENT_ID, MOCK_COMPONENT_SLUG_2], }; const dependenciesBySlugs = {}; const result = convertRelationshipSlugs( relationships, dependenciesBySlugs, ); expect(result).toMatchObject({ DEPENDS_ON: [MOCK_COMPONENT_ID], }); }); }); });