/*
 * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
 * Ministerpräsidenten des Landes Schleswig-Holstein
 * Staatskanzlei
 * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
 *
 * Lizenziert unter der EUPL, Version 1.2 oder - sobald
 * diese von der Europäischen Kommission genehmigt wurden -
 * Folgeversionen der EUPL ("Lizenz");
 * Sie dürfen dieses Werk ausschließlich gemäß
 * dieser Lizenz nutzen.
 * Eine Kopie der Lizenz finden Sie hier:
 *
 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
 *
 * Sofern nicht durch anwendbare Rechtsvorschriften
 * gefordert oder in schriftlicher Form vereinbart, wird
 * die unter der Lizenz verbreitete Software "so wie sie
 * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
 * ausdrücklich oder stillschweigend - verbreitet.
 * Die sprachspezifischen Genehmigungen und Beschränkungen
 * unter der Lizenz sind dem Lizenztext zu entnehmen.
 */
import { Type } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { expect } from '@jest/globals';
import { TooltipDirective } from '@ods/system';
import { getDebugElementFromFixtureByCss, getElementFromFixture, getElementFromFixtureByType } from './helper';

export function notExistsAsHtmlElement(fixture: ComponentFixture<any>, domElement: string): void {
  expect(getElementFromFixture(fixture, domElement)).not.toBeInstanceOf(HTMLElement);
}

export function existsAsHtmlElement(fixture: ComponentFixture<any>, domElement: string): void {
  expect(getElementFromFixture(fixture, domElement)).toBeInstanceOf(HTMLElement);
}

export function expectComponentExistsInTemplate<T>(fixture: ComponentFixture<any>, component: Type<T>): void {
  expect(getElementFromFixtureByType(fixture, component)).toBeInstanceOf(component);
}

export function tooltipExistsWithText(fixture: ComponentFixture<any>, domElement: string, tooltipText: string) {
  const tooltipInstance = getDebugElementFromFixtureByCss(fixture, domElement).injector.get(TooltipDirective);
  expect(tooltipInstance.componentRef.instance.text).toBe(tooltipText);
}