From a1757df51af1b86b1e8c47c9617c8c2fa9d15245 Mon Sep 17 00:00:00 2001 From: Florent Letendre Date: Fri, 25 Oct 2024 16:09:58 -0400 Subject: [PATCH] fix unit tests --- .../opf-resource-loader.service.spec.ts | 34 ++++++++++++++++--- .../services/opf-resource-loader.service.ts | 6 ---- .../opf-global-functions.service.spec.ts | 28 +++++++++++++++ 3 files changed, 58 insertions(+), 10 deletions(-) diff --git a/integration-libs/opf/base/root/services/opf-resource-loader.service.spec.ts b/integration-libs/opf/base/root/services/opf-resource-loader.service.spec.ts index 0a9d7d59456..08a4d7093b3 100644 --- a/integration-libs/opf/base/root/services/opf-resource-loader.service.spec.ts +++ b/integration-libs/opf/base/root/services/opf-resource-loader.service.spec.ts @@ -321,17 +321,25 @@ describe('OpfResourceLoaderService', () => { opfResourceLoaderService = TestBed.inject(OpfResourceLoaderService); }); - it('should embed styles with SSR when platform is set to server', fakeAsync(() => { + it('should not loadStyles with SSR when platform is set to server', fakeAsync(() => { const mockStyleResource = { url: 'style-url', type: OpfDynamicScriptResourceType.STYLES, }; - spyOn(opfResourceLoaderService, 'embedStyles').and.callThrough(); - + spyOn(opfResourceLoaderService, 'loadStyles').and.callThrough(); opfResourceLoaderService.loadProviderResources([], [mockStyleResource]); + expect(opfResourceLoaderService['loadStyles']).not.toHaveBeenCalled(); + })); - expect(opfResourceLoaderService['embedStyles']).toHaveBeenCalled(); + it('should not loadScript with SSR when platform is set to server', fakeAsync(() => { + const mockScriptResource = { + url: 'script-url', + type: OpfDynamicScriptResourceType.SCRIPT, + }; + spyOn(opfResourceLoaderService, 'loadScript').and.callThrough(); + opfResourceLoaderService.loadProviderResources([], [mockScriptResource]); + expect(opfResourceLoaderService['loadScript']).not.toHaveBeenCalled(); })); }); @@ -369,4 +377,22 @@ describe('OpfResourceLoaderService', () => { expect(console.log).toHaveBeenCalledWith('Script executed'); }); }); + + describe('executeHtml in SSR', () => { + it('should not execute script with SSR when platform is set to server', () => { + TestBed.overrideProvider(PLATFORM_ID, { useValue: 'server' }); + opfResourceLoaderService = TestBed.inject(OpfResourceLoaderService); + + const mockScript = document.createElement('script'); + mockScript.innerText = 'console.log("Script executed");'; + spyOn(document, 'createElement').and.returnValue(mockScript); + spyOn(console, 'log'); + + opfResourceLoaderService.executeScriptFromHtml( + '' + ); + + expect(console.log).not.toHaveBeenCalledWith('Script executed'); + }); + }); }); diff --git a/integration-libs/opf/base/root/services/opf-resource-loader.service.ts b/integration-libs/opf/base/root/services/opf-resource-loader.service.ts index 9184db9084d..11a4471b87f 100644 --- a/integration-libs/opf/base/root/services/opf-resource-loader.service.ts +++ b/integration-libs/opf/base/root/services/opf-resource-loader.service.ts @@ -35,12 +35,6 @@ export class OpfResourceLoaderService extends ScriptLoader { }): void { const { src, callback, errorCallback } = embedOptions; - const isSSR = isPlatformServer(this.platformId); - - if (isSSR) { - return; - } - const link: HTMLLinkElement = this.document.createElement('link'); link.href = src; link.rel = 'stylesheet'; diff --git a/integration-libs/opf/global-functions/core/facade/opf-global-functions.service.spec.ts b/integration-libs/opf/global-functions/core/facade/opf-global-functions.service.spec.ts index 8d0ea60bc50..34834eba3e6 100644 --- a/integration-libs/opf/global-functions/core/facade/opf-global-functions.service.spec.ts +++ b/integration-libs/opf/global-functions/core/facade/opf-global-functions.service.spec.ts @@ -73,6 +73,34 @@ describe('OpfGlobalFunctionsService', () => { expect(service).toBeTruthy(); }); + describe('Global Functions in SSR', () => { + const mockPaymentSessionId = 'mockSessionId'; + let windowOpf: any; + + it('should not register global functions for CHECKOUT in SSR', () => { + spyOn(service, 'registerSubmit').and.callThrough(); + spyOn(windowRef, 'isBrowser').and.returnValue(false); + service.registerGlobalFunctions({ + domain: GlobalFunctionsDomain.CHECKOUT, + paymentSessionId: mockPaymentSessionId, + vcr: {} as ViewContainerRef, + }); + expect(service['registerSubmit']).not.toHaveBeenCalled(); + }); + + it('should not remove global functions for CHECKOUT in SSR', () => { + service.registerGlobalFunctions({ + domain: GlobalFunctionsDomain.CHECKOUT, + paymentSessionId: mockPaymentSessionId, + vcr: {} as ViewContainerRef, + }); + windowOpf = windowRef.nativeWindow['Opf']; + spyOn(windowRef, 'isBrowser').and.returnValue(false); + service.removeGlobalFunctions(GlobalFunctionsDomain.CHECKOUT); + expect(windowOpf['payments']['checkout']['submit']).toBeDefined(); + }); + }); + describe('should register global functions for CHECKOUT domain', () => { const mockPaymentSessionId = 'mockSessionId'; let windowOpf: any;