diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 21fdc1ad1..3fb79a9a2 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -6,6 +6,7 @@ name: Publish NPM on Release on: release: types: [published] + workflow_dispatch: jobs: build: @@ -22,13 +23,22 @@ jobs: publish-npm: needs: build runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: ./package.json - registry-url: https://registry.npmjs.org/ + registry-url: 'https://npm.pkg.github.com/' + scope: '@gearset' - run: npm ci + - name: Set version to release tag + run: | + if [ ${{github.event_name == 'release'}} ]; then + npm --no-git-tag-version version ${{ github.event.release.tag_name }} + fi - run: npm publish env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js index e4f43cd3e..87acf7fe7 100644 --- a/lib/metadataTypes/Folder.js +++ b/lib/metadataTypes/Folder.js @@ -714,7 +714,7 @@ class Folder extends MetadataType { ), options ); - return response.Results; + return response.Results ?? []; } /** diff --git a/package.json b/package.json index 73f34e17a..0f4725e10 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { - "name": "mcdev", + "name": "@gearset/mcdev", "version": "8.1.0", "description": "Accenture Salesforce Marketing Cloud DevTools", "author": "Accenture: joern.berkefeld, douglas.midgley, robert.zimmermann, maciej.barnas", "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/Accenture/sfmc-devtools.git" + "url": "https://github.com/Gearset/sfmc-devtools.git" }, "homepage": "https://github.com/Accenture/sfmc-devtools/wiki", "bugs": { @@ -121,9 +121,7 @@ "fsevents": "*" }, "lint-staged": { - "*.js": [ - "eslint --fix" - ] + "*.js": ["eslint --fix"] }, "type": "module" } diff --git a/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml b/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml new file mode 100644 index 000000000..c2d830483 --- /dev/null +++ b/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml @@ -0,0 +1,26 @@ + + + + RetrieveResponse + urn:uuid:998a6923-b781-40be-abad-0506f0f97477 + urn:uuid:a5d518cc-9bfb-45f1-a4a7-5d11cc1a8d44 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2025-09-05T16:29:03Z + 2025-09-05T16:34:03Z + + + + + + OK + ac40bccd-e8cd-4232-b1ee-e3cfbbfd0b89 + + + diff --git a/test/type.dataExtension.test.js b/test/type.dataExtension.test.js index 10802e197..7fd95951a 100644 --- a/test/type.dataExtension.test.js +++ b/test/type.dataExtension.test.js @@ -91,6 +91,47 @@ describe('type: dataExtension', () => { ); return; }); + + it('Should not fail if shared dataExtension cannot be retrieved', async () => { + // WHEN + await handler.retrieve('testInstance/_ParentBU_', ['dataExtension', 'query']); + // THEN + assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error'); + // get results from cache + const result = cache.getCache(); + assert.equal( + result.dataExtension ? Object.keys(result.dataExtension).length : 0, + 1, + 'only one dataExtension expected' + ); + assert.deepEqual( + await testUtils.getActualJson( + 'testExisting_dataExtensionShared', + 'dataExtension', + '_ParentBU_' + ), + await testUtils.getExpectedJson('1111111', 'dataExtension', 'retrieve'), + + 'returned metadata was not equal expected' + ); + // check if MD file was created and equals expectations + expect( + await testUtils.getActualDoc( + 'testExisting_dataExtensionShared', + 'dataExtension', + '_ParentBU_' + ) + ).to.equal( + await testUtils.getExpectedFile('1111111', 'dataExtension', 'retrieve', 'md') + ); + + assert.equal( + testUtils.getAPIHistoryLength(), + 7, + 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' + ); + return; + }); }); describe('Deploy ================', () => {