import { CommunitySearchResultListElementComponent } from './community-search-result-list-element.component'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { of as observableOf } from 'rxjs'; import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { By } from '@angular/platform-browser'; import { TruncatePipe } from '../../../utils/truncate.pipe'; import { Community } from '../../../../core/shared/community.model'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { APP_CONFIG } from '../../../../../config/app-config.interface'; let communitySearchResultListElementComponent: CommunitySearchResultListElementComponent; let fixture: ComponentFixture; const truncatableServiceStub: any = { isCollapsed: (id: number) => observableOf(true), }; const mockCommunityWithAbstract: CommunitySearchResult = new CommunitySearchResult(); mockCommunityWithAbstract.hitHighlights = {}; mockCommunityWithAbstract.indexableObject = Object.assign(new Community(), { metadata: { 'dc.description.abstract': [ { language: 'en_US', value: 'Short description' } ] } }); const mockCommunityWithoutAbstract: CommunitySearchResult = new CommunitySearchResult(); mockCommunityWithoutAbstract.hitHighlights = {}; mockCommunityWithoutAbstract.indexableObject = Object.assign(new Community(), { metadata: { 'dc.title': [ { language: 'en_US', value: 'Test title' } ] } }); const environmentUseThumbs = { browseBy: { showThumbnails: true } }; describe('CommunitySearchResultListElementComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [CommunitySearchResultListElementComponent, TruncatePipe], providers: [ { provide: TruncatableService, useValue: truncatableServiceStub }, { provide: DSONameService, useClass: DSONameServiceMock }, { provide: APP_CONFIG, useValue: environmentUseThumbs } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(CommunitySearchResultListElementComponent, { set: { changeDetection: ChangeDetectionStrategy.Default } }).compileComponents(); })); beforeEach(waitForAsync(() => { fixture = TestBed.createComponent(CommunitySearchResultListElementComponent); communitySearchResultListElementComponent = fixture.componentInstance; communitySearchResultListElementComponent.object = mockCommunityWithAbstract; fixture.detectChanges(); })); describe('When the community has an abstract', () => { beforeEach(() => { communitySearchResultListElementComponent.dso = mockCommunityWithAbstract.indexableObject; fixture.detectChanges(); }); it('should show the description paragraph', () => { const communityAbstractField = fixture.debugElement.query(By.css('div.abstract-text')); expect(communityAbstractField).not.toBeNull(); }); }); describe('When the community has no abstract', () => { beforeEach(() => { communitySearchResultListElementComponent.dso = mockCommunityWithoutAbstract.indexableObject; fixture.detectChanges(); }); it('should not show the description paragraph', () => { const communityAbstractField = fixture.debugElement.query(By.css('div.abstract-text')); expect(communityAbstractField).toBeNull(); }); }); describe('when environment is set to show thumbnail images', () => { it('should offset content', () => { const offset: DebugElement = fixture.debugElement.query(By.css('.offset-md-2')); expect(offset).not.toBeNull(); }); }); });