import { ComponentFixture, TestBed } from '@angular/core/testing'; import { LangSwitchBtn } from './lang-switch-btn'; import { LanguageManager } from '../../services/language-manager'; import { By } from '@angular/platform-browser'; describe('LangSwitchBtn', () => { let component: LangSwitchBtn; let fixture: ComponentFixture; let languageManager: jasmine.SpyObj; beforeEach(async () => { languageManager = jasmine.createSpyObj(LanguageManager, ['selectedLanguage$', 'setLanguage']); await TestBed.configureTestingModule({ imports: [LangSwitchBtn], providers: [{ provide: LanguageManager, useValue: languageManager }], }).compileComponents(); fixture = TestBed.createComponent(LangSwitchBtn); component = fixture.componentInstance; }); it('should create', () => { fixture.detectChanges(); expect(component).toBeTruthy(); }); it('should show spanish flag', () => { languageManager.selectedLanguage$.and.returnValue('en'); fixture.detectChanges(); const img = fixture.debugElement.query(By.css('img')).attributes; expect(img['src']).toEqual('images/sp_flag.png'); }); it('should updateLanguage on click', () => { const updateLanguageSpy = spyOn(component, 'updateLanguage').and.callThrough(); languageManager.selectedLanguage$.and.returnValue('en'); fixture.detectChanges(); const container = fixture.debugElement.query(By.css('.container')); container.triggerEventHandler('click'); expect(updateLanguageSpy).toHaveBeenCalledTimes(1); }); });