import { dispatchEventFromFixture, MockEvent } from '@alfa-client/test-utils';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { expect } from '@jest/globals';
import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
import { AdminUserLogoutButtonComponent } from './admin-user-logout-button.component';

describe('AdminUserLogoutButtonComponent', () => {
  let component: AdminUserLogoutButtonComponent;
  let fixture: ComponentFixture<AdminUserLogoutButtonComponent>;

  const logoutButtonTestId: string = getDataTestIdOf('popup-logout-button');

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      imports: [AdminUserLogoutButtonComponent],
    }).compileComponents();

    fixture = TestBed.createComponent(AdminUserLogoutButtonComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  describe('template', () => {
    describe('menu button item', () => {
      describe('output', () => {
        describe('clickEmitter', () => {
          it('should emit', () => {
            component.logout.emit = jest.fn();

            dispatchEventFromFixture(fixture, logoutButtonTestId, MockEvent.CLICK);

            expect(component.logout.emit).toHaveBeenCalled();
          });
        });
      });
    });
  });
});