From ed5bcf62ecac3da2eefdcc9b5189e23eafdc9390 Mon Sep 17 00:00:00 2001 From: Francisco de la Vega Date: Tue, 21 Jul 2026 11:23:36 +0200 Subject: [PATCH 1/2] Remove feedback modal from product spec creation --- .../seller-offerings.component.html | 7 ----- .../seller-offerings.component.spec.ts | 26 +++---------------- .../seller-offerings.component.ts | 18 ------------- 3 files changed, 3 insertions(+), 48 deletions(-) diff --git a/src/app/pages/seller-offerings/seller-offerings.component.html b/src/app/pages/seller-offerings/seller-offerings.component.html index d8af67da..eb22ce08 100644 --- a/src/app/pages/seller-offerings/seller-offerings.component.html +++ b/src/app/pages/seller-offerings/seller-offerings.component.html @@ -111,10 +111,3 @@

-} \ No newline at end of file diff --git a/src/app/pages/seller-offerings/seller-offerings.component.spec.ts b/src/app/pages/seller-offerings/seller-offerings.component.spec.ts index 8d87c4e4..900a4620 100644 --- a/src/app/pages/seller-offerings/seller-offerings.component.spec.ts +++ b/src/app/pages/seller-offerings/seller-offerings.component.spec.ts @@ -84,31 +84,11 @@ describe('SellerOfferingsComponent', () => { expect(goToUpdateOfferSpy).toHaveBeenCalled(); }); - it('event subscription should close feedback on CloseFeedback', () => { - component.feedback = true; - - eventMessage.emitCloseFeedback(false); - - expect(component.feedback).toBeFalse(); - }); - - it('event subscription should show feedback after product spec creation only for DOME theme', () => { - component.feedback = false; - component.isDomeTheme = true; - component.userInfo = { expire: 9999999999 }; - - eventMessage.emitSellerProductSpec(true); - - expect(component.feedback).toBeTrue(); - }); - - it('event subscription should not show feedback for non-DOME theme', () => { - component.feedback = false; - component.isDomeTheme = false; - component.userInfo = { expire: 9999999999 }; + it('event subscription should route to product specs after product spec creation', () => { + const goToProdSpecSpy = spyOn(component, 'goToProdSpec'); eventMessage.emitSellerProductSpec(true); - expect(component.feedback).toBeFalse(); + expect(goToProdSpecSpy).toHaveBeenCalled(); }); }); diff --git a/src/app/pages/seller-offerings/seller-offerings.component.ts b/src/app/pages/seller-offerings/seller-offerings.component.ts index 2a1421ad..efb962c9 100644 --- a/src/app/pages/seller-offerings/seller-offerings.component.ts +++ b/src/app/pages/seller-offerings/seller-offerings.component.ts @@ -6,11 +6,8 @@ import {components} from "src/app/models/product-catalog"; type Catalog = components["schemas"]["Catalog"]; import { environment } from 'src/environments/environment'; import { ApiServiceService } from 'src/app/services/product-service.service'; -import {LocalStorageService} from "src/app/services/local-storage.service"; -import { LoginInfo } from 'src/app/models/interfaces'; import { initFlowbite } from 'flowbite'; import {EventMessageService} from "../../services/event-message.service"; -import * as moment from 'moment'; import { firstValueFrom, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { QuoteService } from 'src/app/features/quotes/services/quote.service'; @@ -44,9 +41,6 @@ export class SellerOfferingsComponent implements OnInit, OnDestroy { offer_to_update:any; custom_offer_partyId:any=null; catalog_to_update:any; - feedback:boolean=false; - isDomeTheme: boolean = (environment.providerThemeName || '').toUpperCase() === 'DOME'; - userInfo:any; activeSection: string = 'catalogs'; // default sectionActions : Record void> = { catalogs: this.goToCatalogs, @@ -60,7 +54,6 @@ export class SellerOfferingsComponent implements OnInit, OnDestroy { private destroy$ = new Subject(); constructor( - private localStorage: LocalStorageService, private cdr: ChangeDetectorRef, private eventMessage: EventMessageService, private router: Router, @@ -71,13 +64,6 @@ export class SellerOfferingsComponent implements OnInit, OnDestroy { .pipe(takeUntil(this.destroy$)) .subscribe(ev => { if(ev.type === 'SellerProductSpec') { - if( - ev.value == true && - this.isDomeTheme && - (JSON.stringify(this.userInfo) != '{}' && (((this.userInfo.expire - moment().unix())-4) > 0)) - ) { - this.feedback=true; - } this.goToProdSpec(); } if(ev.type === 'SellerCreateProductSpec' && ev.value == true) { @@ -133,14 +119,10 @@ export class SellerOfferingsComponent implements OnInit, OnDestroy { this.catalog_to_update=ev.value; this.goToUpdateCatalog(); } - if(ev.type === 'CloseFeedback') { - this.feedback = false; - } }) } async ngOnInit() { - this.userInfo = this.localStorage.getObject('login_items') as LoginInfo; const saved = localStorage.getItem('activeSection'); console.log(saved) if (saved) this.activeSection = saved; From 5d2571a65f05f260dc1b05d87c379add86228a2b Mon Sep 17 00:00:00 2001 From: Francisco de la Vega Date: Tue, 21 Jul 2026 11:46:48 +0200 Subject: [PATCH 2/2] Fix GTM unit test --- src/app/services/google-tag-manager.service.spec.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/services/google-tag-manager.service.spec.ts b/src/app/services/google-tag-manager.service.spec.ts index f11ac82f..b935a26a 100644 --- a/src/app/services/google-tag-manager.service.spec.ts +++ b/src/app/services/google-tag-manager.service.spec.ts @@ -4,9 +4,11 @@ import { GoogleTagManagerService } from './google-tag-manager.service'; describe('GoogleTagManagerService', () => { let service: GoogleTagManagerService; let originalDataLayer: unknown; + let insertBeforeSpy: jasmine.Spy; beforeEach(() => { originalDataLayer = (window as any).dataLayer; + insertBeforeSpy = spyOn(document.head, 'insertBefore').and.callFake((newNode: T) => newNode); TestBed.configureTestingModule({}); service = TestBed.inject(GoogleTagManagerService); @@ -25,10 +27,11 @@ describe('GoogleTagManagerService', () => { it('inserts the Google Tag Manager script as the first head element', () => { service.init('GTM-WPKH4HCS'); - const firstHeadElement = document.head.firstElementChild as HTMLScriptElement; + const insertedScript = insertBeforeSpy.calls.mostRecent().args[0] as HTMLScriptElement; - expect(firstHeadElement.tagName).toBe('SCRIPT'); - expect(firstHeadElement.src).toBe('https://www.googletagmanager.com/gtm.js?id=GTM-WPKH4HCS'); + expect(insertBeforeSpy).toHaveBeenCalledOnceWith(insertedScript, document.head.firstChild); + expect(insertedScript.tagName).toBe('SCRIPT'); + expect(insertedScript.src).toBe('https://www.googletagmanager.com/gtm.js?id=GTM-WPKH4HCS'); expect((window as any).dataLayer[0].event).toBe('gtm.js'); }); @@ -37,5 +40,6 @@ describe('GoogleTagManagerService', () => { service.init('not-a-gtm-id'); expect(document.querySelector('script[src^="https://www.googletagmanager.com/gtm.js"]')).toBeNull(); + expect(insertBeforeSpy).not.toHaveBeenCalled(); }); });