diff --git a/src/app/+my-dspace-page/collection-selector/collection-selector.component.html b/src/app/+my-dspace-page/collection-selector/collection-selector.component.html
index 83cc4151a3..a87118fc4e 100644
--- a/src/app/+my-dspace-page/collection-selector/collection-selector.component.html
+++ b/src/app/+my-dspace-page/collection-selector/collection-selector.component.html
@@ -5,7 +5,7 @@
-
+
diff --git a/src/app/+my-dspace-page/collection-selector/collection-selector.component.spec.ts b/src/app/+my-dspace-page/collection-selector/collection-selector.component.spec.ts
index 982d06aa75..cb9d1a2562 100644
--- a/src/app/+my-dspace-page/collection-selector/collection-selector.component.spec.ts
+++ b/src/app/+my-dspace-page/collection-selector/collection-selector.component.spec.ts
@@ -1,28 +1,33 @@
-import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
+import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
+import { ChangeDetectorRef, ElementRef, NO_ERRORS_SCHEMA } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { By } from '@angular/platform-browser';
+
+import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
+import { getTestScheduler, hot } from 'jasmine-marbles';
+import { TestScheduler } from 'rxjs/testing';
+import { Observable, of } from 'rxjs';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { CollectionSelectorComponent } from './collection-selector.component';
-import { CollectionDropdownComponent } from 'src/app/shared/collection-dropdown/collection-dropdown.component';
-import { Collection } from 'src/app/core/shared/collection.model';
-import { of, Observable } from 'rxjs';
-import { RemoteData } from 'src/app/core/data/remote-data';
-import { Community } from 'src/app/core/shared/community.model';
-import { FindListOptions } from 'src/app/core/data/request.models';
-import { FollowLinkConfig } from 'src/app/shared/utils/follow-link-config.model';
-import { PaginatedList } from 'src/app/core/data/paginated-list';
-import { createSuccessfulRemoteDataObject } from 'src/app/shared/remote-data.utils';
-import { PageInfo } from 'src/app/core/shared/page-info.model';
-import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
-import { TranslateLoaderMock } from 'src/app/shared/mocks/translate-loader.mock';
-import { CollectionDataService } from 'src/app/core/data/collection-data.service';
-import { ChangeDetectorRef, ElementRef, NO_ERRORS_SCHEMA } from '@angular/core';
-import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
-import { ActivatedRoute } from '@angular/router';
-import { hot } from 'jasmine-marbles';
-import { By } from '@angular/platform-browser';
+import { CollectionDropdownComponent } from '../../shared/collection-dropdown/collection-dropdown.component';
+import { Collection } from '../../core/shared/collection.model';
+import { RemoteData } from '../../core/data/remote-data';
+import { Community } from '../../core/shared/community.model';
+import { FindListOptions } from '../../core/data/request.models';
+import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
+import { PaginatedList } from '../../core/data/paginated-list';
+import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils';
+import { PageInfo } from '../../core/shared/page-info.model';
+import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock';
+import { CollectionDataService } from '../../core/data/collection-data.service';
+import { MockElementRef } from '../../shared/testing/element-ref.mock';
+
describe('CollectionSelectorComponent', () => {
let component: CollectionSelectorComponent;
let fixture: ComponentFixture;
+ let scheduler: TestScheduler;
const modal = jasmine.createSpyObj('modal', ['close', 'dismiss']);
const community: Community = Object.assign(new Community(), {
@@ -110,7 +115,7 @@ describe('CollectionSelectorComponent', () => {
}
};
- beforeEach(async(() => {
+ beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [
TranslateModule.forRoot({
@@ -123,10 +128,10 @@ describe('CollectionSelectorComponent', () => {
declarations: [ CollectionSelectorComponent, CollectionDropdownComponent ],
providers: [
{provide: CollectionDataService, useValue: collectionDataServiceMock},
- {provide: ChangeDetectorRef, useValue: {}},
- {provide: ElementRef, userValue: {}},
+ {provide: ElementRef, useClass: MockElementRef},
{provide: NgbActiveModal, useValue: modal},
- {provide: ActivatedRoute, useValue: {}}
+ {provide: ActivatedRoute, useValue: {}},
+ ChangeDetectorRef
],
schemas: [NO_ERRORS_SCHEMA]
})
@@ -134,28 +139,25 @@ describe('CollectionSelectorComponent', () => {
}));
beforeEach(() => {
+ scheduler = getTestScheduler();
fixture = TestBed.createComponent(CollectionSelectorComponent);
component = fixture.componentInstance;
fixture.detectChanges();
+
});
it('should create', () => {
expect(component).toBeTruthy();
});
- it('should call selectObject', fakeAsync(() => {
+ it('should call selectObject', () => {
spyOn(component, 'selectObject');
- fixture.detectChanges();
- tick();
- fixture.whenStable().then(() => {
- const collectionItem = fixture.debugElement.query(By.css('.collection-item:nth-child(2)'));
- collectionItem.triggerEventHandler('click', {
- preventDefault: () => {/**/
- }
- });
- expect(component.selectObject).toHaveBeenCalled();
- });
- }));
+ scheduler.schedule(() => fixture.detectChanges());
+ scheduler.flush();
+ const collectionItem = fixture.debugElement.query(By.css('.collection-item:nth-child(2)'));
+ collectionItem.triggerEventHandler('click', null);
+ expect(component.selectObject).toHaveBeenCalled();
+ });
it('should close the dialog', () => {
component.close();
diff --git a/src/app/+my-dspace-page/collection-selector/collection-selector.component.ts b/src/app/+my-dspace-page/collection-selector/collection-selector.component.ts
index f930fc3f54..855dc9c36d 100644
--- a/src/app/+my-dspace-page/collection-selector/collection-selector.component.ts
+++ b/src/app/+my-dspace-page/collection-selector/collection-selector.component.ts
@@ -1,7 +1,9 @@
import { Component } from '@angular/core';
-import { DSpaceObject } from '../../core/shared/dspace-object.model';
+
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
+import { CollectionListEntry } from '../../shared/collection-dropdown/collection-dropdown.component';
+
/**
* This component displays the dialog that shows the list of selectable collections
* on the MyDSpace page
@@ -18,10 +20,11 @@ export class CollectionSelectorComponent {
/**
* Method called when an element has been selected from collection list.
* Its close the active modal and send selected value to the component container
- * @param dso The selected DSpaceObject
+ *
+ * @param event The event object containing a CollectionListEntry
*/
- selectObject(dso: DSpaceObject) {
- this.activeModal.close(dso);
+ selectObject(event: CollectionListEntry) {
+ this.activeModal.close(event.collection);
}
/**