Skip to content

Commit

Permalink
fix: download site bundle correctly if site name has special chars (#262
Browse files Browse the repository at this point in the history
)

* fix: updated special chars in site name

* fix: minor fix

* fix: refactored code

* chore: change test naming

---------

Co-authored-by: Nicolas Kruk <[email protected]>
Co-authored-by: Nicolas Kruk <[email protected]>
  • Loading branch information
3 people authored Nov 22, 2024
1 parent f6c0206 commit fd52cec
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/shared/experience/expSite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ export class ExperienceSite {
this.org = org;
this.siteDisplayName = siteName.trim();
this.siteName = this.siteDisplayName.replace(' ', '_');
// Replace any special characters in site name with underscore
this.siteName = this.siteName.replace(/[^a-zA-Z0-9]/g, '_');
}

/**
Expand Down
49 changes: 49 additions & 0 deletions test/spec/expSite.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Copyright (c) 2023, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import { expect } from 'chai';
import { Connection, Org } from '@salesforce/core';
import sinon from 'sinon';
import { ExperienceSite } from '../../src/shared/experience/expSite.js';

describe('getRemoteMetadata', () => {
it('should return remote metadata when it exists', async () => {
const org = new Org();
const siteName = 'site@with#special-chars';
const experienceSite = new ExperienceSite(org, siteName);

// Create a mock Connection instance using sinon
const mockConnection = sinon.createStubInstance(Connection);

// Configure the mock to return the desired result when calling query
mockConnection.query.resolves({
done: true,
totalSize: 1,
records: [
{
Name: 'MRT_experience_00DSG00000ECBfZ_0DMSG000001CfA6_site_with_special_chars_10-30_12-47',
LastModifiedDate: '2024-11-12',
},
],
});

// Replace the original connection with the mocked connection
org.getConnection = () => mockConnection;

const remoteMetadata = await experienceSite.getRemoteMetadata();

// Check if the called query matches the expected pattern
const calledQuery = mockConnection.query.args[0][0];
const expectedPattern =
/SELECT Name, LastModifiedDate FROM StaticResource WHERE Name LIKE 'MRT_experience_%_site_with_special_chars/;
expect(calledQuery).to.match(expectedPattern);

expect(remoteMetadata).to.deep.equal({
bundleName: 'MRT_experience_00DSG00000ECBfZ_0DMSG000001CfA6_site_with_special_chars_10-30_12-47',
bundleLastModified: '2024-11-12',
});
});
});

0 comments on commit fd52cec

Please sign in to comment.