import { Component, Input } from '@angular/core'; import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { MetadataFieldWrapperComponent } from './metadata-field-wrapper.component'; /* tslint:disable:max-classes-per-file */ @Component({ selector: 'ds-component-without-content', template: '\n' + '' }) class NoContentComponent { public hideIfNoTextContent = true; } @Component({ selector: 'ds-component-with-empty-spans', template: '\n' + ' \n' + ' \n' + '' }) class SpanContentComponent { @Input() hideIfNoTextContent = true; } @Component({ selector: 'ds-component-with-text', template: '\n' + ' The quick brown fox jumps over the lazy dog\n' + '' }) class TextContentComponent { @Input() hideIfNoTextContent = true; } /* tslint:enable:max-classes-per-file */ describe('MetadataFieldWrapperComponent', () => { let component: MetadataFieldWrapperComponent; let fixture: ComponentFixture; beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [MetadataFieldWrapperComponent, NoContentComponent, SpanContentComponent, TextContentComponent] }).compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(MetadataFieldWrapperComponent); component = fixture.componentInstance; }); const wrapperSelector = '.simple-view-element'; it('should create', () => { expect(component).toBeDefined(); }); describe('with hideIfNoTextContent=true', () => { it('should not show the component when there is no content', () => { const parentFixture = TestBed.createComponent(NoContentComponent); parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); expect(nativeWrapper.classList.contains('d-none')).toBe(true); }); it('should not show the component when there is no text content', () => { const parentFixture = TestBed.createComponent(SpanContentComponent); parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); expect(nativeWrapper.classList.contains('d-none')).toBe(true); }); it('should show the component when there is text content', () => { const parentFixture = TestBed.createComponent(TextContentComponent); parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); parentFixture.detectChanges(); expect(nativeWrapper.classList.contains('d-none')).toBe(false); }); }); describe('with hideIfNoTextContent=false', () => { it('should show the component when there is no content', () => { const parentFixture = TestBed.createComponent(NoContentComponent); parentFixture.componentInstance.hideIfNoTextContent = false; parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); expect(nativeWrapper.classList.contains('d-none')).toBe(false); }); it('should show the component when there is no text content', () => { const parentFixture = TestBed.createComponent(SpanContentComponent); parentFixture.componentInstance.hideIfNoTextContent = false; parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); expect(nativeWrapper.classList.contains('d-none')).toBe(false); }); it('should show the component when there is text content', () => { const parentFixture = TestBed.createComponent(TextContentComponent); parentFixture.componentInstance.hideIfNoTextContent = false; parentFixture.detectChanges(); const parentNative = parentFixture.nativeElement; const nativeWrapper = parentNative.querySelector(wrapperSelector); parentFixture.detectChanges(); expect(nativeWrapper.classList.contains('d-none')).toBe(false); }); }); });