diff --git a/src/app/shared/browse-by/browse-by.component.html b/src/app/shared/browse-by/browse-by.component.html
index a047363194..bad9f3fe8c 100644
--- a/src/app/shared/browse-by/browse-by.component.html
+++ b/src/app/shared/browse-by/browse-by.component.html
@@ -16,9 +16,9 @@
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/src/app/shared/browse-by/browse-by.component.spec.ts b/src/app/shared/browse-by/browse-by.component.spec.ts
index 83c07daf34..bae345d009 100644
--- a/src/app/shared/browse-by/browse-by.component.spec.ts
+++ b/src/app/shared/browse-by/browse-by.component.spec.ts
@@ -1,27 +1,68 @@
import { BrowseByComponent } from './browse-by.component';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { TranslateModule } from '@ngx-translate/core';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { By } from '@angular/platform-browser';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { of as observableOf } from 'rxjs';
import { SharedModule } from '../shared.module';
import { CommonModule } from '@angular/common';
-import { ActivatedRoute, Router } from '@angular/router';
-import { ActivatedRouteStub } from '../testing/active-router-stub';
-import { MockRouter } from '../mocks/mock-router';
+import { Item } from '../../core/shared/item.model';
+import { RemoteData } from '../../core/data/remote-data';
+import { PaginatedList } from '../../core/data/paginated-list';
+import { PageInfo } from '../../core/shared/page-info.model';
+import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
+import { StoreModule } from '@ngrx/store';
+import { MockTranslateLoader } from '../mocks/mock-translate-loader';
+import { RouterTestingModule } from '@angular/router/testing';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
+import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
describe('BrowseByComponent', () => {
let comp: BrowseByComponent;
let fixture: ComponentFixture;
+ const mockItems = [
+ Object.assign(new Item(), {
+ id: 'fakeId-1',
+ metadata: [
+ {
+ key: 'dc.title',
+ value: 'First Fake Title'
+ }
+ ]
+ }),
+ Object.assign(new Item(), {
+ id: 'fakeId-2',
+ metadata: [
+ {
+ key: 'dc.title',
+ value: 'Second Fake Title'
+ }
+ ]
+ })
+ ];
+ const mockItemsRD$ = observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), mockItems)));
+
beforeEach(async(() => {
TestBed.configureTestingModule({
- imports: [CommonModule, TranslateModule.forRoot(), SharedModule],
- declarations: [],
- providers: [
- { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
- { provide: Router, useValue: new MockRouter() }
+ imports: [
+ CommonModule,
+ TranslateModule.forRoot(),
+ SharedModule,
+ NgbModule.forRoot(),
+ StoreModule.forRoot({}),
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ }
+ }),
+ RouterTestingModule,
+ BrowserAnimationsModule
],
+ declarations: [],
+ providers: [],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
@@ -49,4 +90,67 @@ describe('BrowseByComponent', () => {
expect(fixture.debugElement.query(By.css('ds-viewable-collection'))).toBeDefined();
});
+ describe('when enableArrows is true and objects are defined', () => {
+ beforeEach(() => {
+ comp.enableArrows = true;
+ comp.objects$ = mockItemsRD$;
+ comp.paginationConfig = Object.assign(new PaginationComponentOptions(), {
+ id: 'test-pagination',
+ currentPage: 1,
+ pageSizeOptions: [5,10,15,20],
+ pageSize: 15
+ });
+ comp.sortConfig = Object.assign(new SortOptions('dc.title', SortDirection.ASC));
+ fixture.detectChanges();
+ });
+
+ describe('when clicking the previous arrow button', () => {
+ beforeEach(() => {
+ spyOn(comp.prev, 'emit');
+ fixture.debugElement.query(By.css('#nav-prev')).triggerEventHandler('click', null);
+ fixture.detectChanges();
+ });
+
+ it('should emit a signal to the EventEmitter',() => {
+ expect(comp.prev.emit).toHaveBeenCalled();
+ });
+ });
+
+ describe('when clicking the next arrow button', () => {
+ beforeEach(() => {
+ spyOn(comp.next, 'emit');
+ fixture.debugElement.query(By.css('#nav-next')).triggerEventHandler('click', null);
+ fixture.detectChanges();
+ });
+
+ it('should emit a signal to the EventEmitter',() => {
+ expect(comp.next.emit).toHaveBeenCalled();
+ });
+ });
+
+ describe('when clicking a different page size', () => {
+ beforeEach(() => {
+ spyOn(comp.pageSizeChange, 'emit');
+ fixture.debugElement.query(By.css('.page-size-change')).triggerEventHandler('click', null);
+ fixture.detectChanges();
+ });
+
+ it('should emit a signal to the EventEmitter',() => {
+ expect(comp.pageSizeChange.emit).toHaveBeenCalled();
+ });
+ });
+
+ describe('when clicking a different sort direction', () => {
+ beforeEach(() => {
+ spyOn(comp.sortDirectionChange, 'emit');
+ fixture.debugElement.query(By.css('.sort-direction-change')).triggerEventHandler('click', null);
+ fixture.detectChanges();
+ });
+
+ it('should emit a signal to the EventEmitter',() => {
+ expect(comp.sortDirectionChange.emit).toHaveBeenCalled();
+ });
+ });
+ });
+
});