Merge branch 'master' into w2p-65572_Add-support-for-bundles

Conflicts:
	src/app/core/shared/item.model.ts
	src/app/entity-groups/journal-entities/item-grid-elements/journal-issue/journal-issue-grid-element.component.spec.ts
	src/app/entity-groups/journal-entities/item-grid-elements/journal-volume/journal-volume-grid-element.component.spec.ts
	src/app/entity-groups/journal-entities/item-grid-elements/journal/journal-grid-element.component.spec.ts
	src/app/entity-groups/journal-entities/item-list-elements/journal-issue/journal-issue-list-element.component.spec.ts
	src/app/entity-groups/journal-entities/item-list-elements/journal-volume/journal-volume-list-element.component.spec.ts
	src/app/entity-groups/journal-entities/item-list-elements/journal/journal-list-element.component.spec.ts
	src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.spec.ts
	src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.spec.ts
	src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-list-element.component.spec.ts
	src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.spec.ts
	src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.spec.ts
	src/app/shared/object-grid/item-grid-element/item-grid-element.component.spec.ts
	src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.spec.ts
	src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.spec.ts
	src/app/shared/testing/utils.ts
This commit is contained in:
Kristof De Langhe
2019-11-21 14:14:39 +01:00
433 changed files with 14771 additions and 4389 deletions

View File

@@ -5,24 +5,25 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { ClaimedMyDSpaceResultListElementComponent } from './claimed-my-dspace-result-list-element.component';
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
import { ClaimedSearchResultListElementComponent } from './claimed-search-result-list-element.component';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';
import { TruncatableAction } from '../../../truncatable/truncatable.actions';
import { TruncatableService } from '../../../truncatable/truncatable.service';
let component: ClaimedMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<ClaimedMyDSpaceResultListElementComponent>;
let component: ClaimedSearchResultListElementComponent;
let fixture: ComponentFixture<ClaimedSearchResultListElementComponent>;
const compIndex = 1;
const mockResultObject: ClaimedTaskMyDSpaceResult = new ClaimedTaskMyDSpaceResult();
const mockResultObject: ClaimedTaskSearchResult = new ClaimedTaskSearchResult();
mockResultObject.hitHighlights = {};
const item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{
@@ -55,23 +56,22 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('ClaimedMyDSpaceResultListElementComponent', () => {
describe('ClaimedSearchResultListElementComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NoopAnimationsModule],
declarations: [ClaimedMyDSpaceResultListElementComponent],
declarations: [ClaimedSearchResultListElementComponent],
providers: [
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
{ provide: 'indexElementProvider', useValue: (compIndex) }
{ provide: TruncatableService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ClaimedMyDSpaceResultListElementComponent, {
}).overrideComponent(ClaimedSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(ClaimedMyDSpaceResultListElementComponent);
fixture = TestBed.createComponent(ClaimedSearchResultListElementComponent);
component = fixture.componentInstance;
}));

View File

@@ -4,30 +4,28 @@ import { Location, LocationStrategy, PathLocationStrategy } from '@angular/commo
import { Observable } from 'rxjs';
import { find } from 'rxjs/operators';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model';
import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { ClaimedTaskSearchResult } from '../../../object-collection/shared/claimed-task-search-result.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
/**
* This component renders claimed task object for the mydspace result in the list view.
* This component renders claimed task object for the search result in the list view.
*/
@Component({
selector: 'ds-claimed-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
templateUrl: './claimed-my-dspace-result-list-element.component.html',
selector: 'ds-claimed-search-result-list-element',
styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss'],
templateUrl: './claimed-search-result-list-element.component.html',
providers: [Location, { provide: LocationStrategy, useClass: PathLocationStrategy }]
})
@renderElementsFor(ClaimedTaskMyDSpaceResult, SetViewMode.List)
@renderElementsFor(ClaimedTask, SetViewMode.List)
export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ClaimedTaskMyDSpaceResult, ClaimedTask> {
@listableObjectComponent(ClaimedTaskSearchResult, ViewMode.ListElement)
export class ClaimedSearchResultListElementComponent extends SearchResultListElementComponent<ClaimedTaskSearchResult, ClaimedTask> {
/**
* A boolean representing if to show submitter information
@@ -48,6 +46,7 @@ export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultLis
* Initialize all instance variables
*/
ngOnInit() {
super.ngOnInit();
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>);
}

View File

@@ -14,7 +14,7 @@ let component: ItemListPreviewComponent;
let fixture: ComponentFixture<ItemListPreviewComponent>;
const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.contributor.author': [
{
@@ -31,7 +31,7 @@ const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
}
});
const mockItemWithoutAuthorAndDate: Item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{

View File

@@ -3,7 +3,7 @@ import { Component, Input } from '@angular/core';
import { Item } from '../../../../core/shared/item.model';
import { fadeInOut } from '../../../animations/fade';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { MyDSpaceResult } from '../../../../+my-dspace-page/my-dspace-result.model';
import { SearchResult } from '../../../../+search-page/search-result.model';
/**
* This component show metadata for the given item object in the list view.
@@ -22,9 +22,9 @@ export class ItemListPreviewComponent {
@Input() item: Item;
/**
* The mydspace result object
* The search result object
*/
@Input() object: MyDSpaceResult<any>;
@Input() object: SearchResult<any>;
/**
* Represent item's status

View File

@@ -1,27 +0,0 @@
import { Component } from '@angular/core';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-element.component';
import { Item } from '../../../../core/shared/item.model';
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
/**
* This component renders item object for the mydspace result in the list view.
*/
@Component({
selector: 'ds-workspaceitem-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss', './item-my-dspace-result-list-element.component.scss'],
templateUrl: './item-my-dspace-result-list-element.component.html'
})
@renderElementsFor(ItemMyDSpaceResult, SetViewMode.List)
export class ItemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<ItemMyDSpaceResult, Item> {
/**
* Represent item's status
*/
public status = MyDspaceItemStatusType.ARCHIVED;
}

View File

@@ -5,20 +5,21 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { ItemMyDSpaceResultListElementComponent } from './item-my-dspace-result-list-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-dspace-result.model';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { ItemSearchResultListElementSubmissionComponent } from './item-search-result-list-element-submission.component';
import { TruncatableService } from '../../../truncatable/truncatable.service';
let component: ItemMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<ItemMyDSpaceResultListElementComponent>;
let component: ItemSearchResultListElementSubmissionComponent;
let fixture: ComponentFixture<ItemSearchResultListElementSubmissionComponent>;
const compIndex = 1;
const mockResultObject: ItemMyDSpaceResult = new ItemMyDSpaceResult();
const mockResultObject: ItemSearchResult = new ItemSearchResult();
mockResultObject.hitHighlights = {};
mockResultObject.indexableObject = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{
@@ -51,19 +52,18 @@ describe('ItemMyDSpaceResultListElementComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NoopAnimationsModule],
declarations: [ItemMyDSpaceResultListElementComponent],
declarations: [ItemSearchResultListElementSubmissionComponent],
providers: [
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
{ provide: 'indexElementProvider', useValue: (compIndex) }
{ provide: TruncatableService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ItemMyDSpaceResultListElementComponent, {
}).overrideComponent(ItemSearchResultListElementSubmissionComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(ItemMyDSpaceResultListElementComponent);
fixture = TestBed.createComponent(ItemSearchResultListElementSubmissionComponent);
component = fixture.componentInstance;
}));

View File

@@ -0,0 +1,31 @@
import { Component, OnInit } from '@angular/core';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { Context } from '../../../../core/shared/context.model';
import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
/**
* This component renders item object for the search result in the list view for submission.
*/
@Component({
selector: 'ds-item-search-result-list-element-submission',
styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss', './item-search-result-list-element-submission.component.scss'],
templateUrl: './item-search-result-list-element-submission.component.html'
})
@listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.Workspace)
@listableObjectComponent(ItemSearchResult, ViewMode.ListElement, Context.Workflow)
export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent<ItemSearchResult, Item> implements OnInit {
/**
* Represent item's status
*/
public status = MyDspaceItemStatusType.ARCHIVED;
ngOnInit() {
super.ngOnInit();
}
}

View File

@@ -1 +0,0 @@
@import '../search-result-list-element/search-result-list-element.component.scss';

View File

@@ -1,58 +0,0 @@
import { Component, Inject } from '@angular/core';
import { MyDSpaceResult } from '../../../+my-dspace-page/my-dspace-result.model';
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
import { ListableObject } from '../../object-collection/shared/listable-object.model';
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { Metadata } from '../../../core/shared/metadata.utils';
@Component({
selector: 'ds-my-dspace-result-list-element',
template: ``
})
export class MyDSpaceResultListElementComponent<T extends MyDSpaceResult<K>, K extends DSpaceObject> extends AbstractListableElementComponent<T> {
/**
* The result element object
*/
dso: K;
/**
* The array index of the result element
*/
dsoIndex: number;
/**
* Initialize instance variables
*
* @param {ListableObject} listable
* @param {number} index
*/
public constructor(@Inject('objectElementProvider') public listable: ListableObject,
@Inject('indexElementProvider') public index: number) {
super(listable);
this.dso = this.object.indexableObject;
this.dsoIndex = this.index;
}
/**
* Gets all matching metadata string values from hitHighlights or dso metadata, preferring hitHighlights.
*
* @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]].
* @returns {string[]} the matching string values or an empty array.
*/
allMetadataValues(keyOrKeys: string | string[]): string[] {
return Metadata.allValues([this.object.hitHighlights, this.dso.metadata], keyOrKeys);
}
/**
* Gets the first matching metadata string value from hitHighlights or dso metadata, preferring hitHighlights.
*
* @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]].
* @returns {string} the first matching string value, or `undefined`.
*/
firstMetadataValue(keyOrKeys: string | string[]): string {
return Metadata.firstValue([this.object.hitHighlights, this.dso.metadata], keyOrKeys);
}
}

View File

@@ -5,24 +5,24 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { PoolMyDSpaceResultListElementComponent } from './pool-my-dspace-result-list-element.component';
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
import { PoolSearchResultListElementComponent } from './pool-search-result-list-element.component';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model';
import { TruncatableService } from '../../../truncatable/truncatable.service';
let component: PoolMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<PoolMyDSpaceResultListElementComponent>;
let component: PoolSearchResultListElementComponent;
let fixture: ComponentFixture<PoolSearchResultListElementComponent>;
const compIndex = 1;
const mockResultObject: PoolTaskMyDSpaceResult = new PoolTaskMyDSpaceResult();
const mockResultObject: PoolTaskSearchResult = new PoolTaskSearchResult();
mockResultObject.hitHighlights = {};
const item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{
@@ -55,23 +55,22 @@ const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdIt
const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('PoolMyDSpaceResultListElementComponent', () => {
describe('PoolSearchResultListElementComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NoopAnimationsModule],
declarations: [PoolMyDSpaceResultListElementComponent],
declarations: [PoolSearchResultListElementComponent],
providers: [
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
{ provide: 'indexElementProvider', useValue: (compIndex) }
{ provide: TruncatableService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PoolMyDSpaceResultListElementComponent, {
}).overrideComponent(PoolSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(PoolMyDSpaceResultListElementComponent);
fixture = TestBed.createComponent(PoolSearchResultListElementComponent);
component = fixture.componentInstance;
}));

View File

@@ -1,32 +1,30 @@
import { Component, Inject, OnInit } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { find } from 'rxjs/operators';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util';
import { ListableObject } from '../../../object-collection/shared/listable-object.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { PoolTaskSearchResult } from '../../../object-collection/shared/pool-task-search-result.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
import { TruncatableService } from '../../../truncatable/truncatable.service';
/**
* This component renders pool task object for the mydspace result in the list view.
* This component renders pool task object for the search result in the list view.
*/
@Component({
selector: 'ds-pool-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
templateUrl: './pool-my-dspace-result-list-element.component.html',
selector: 'ds-pool-search-result-list-element',
styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss'],
templateUrl: './pool-search-result-list-element.component.html',
})
@renderElementsFor(PoolTaskMyDSpaceResult, SetViewMode.List)
@renderElementsFor(PoolTask, SetViewMode.List)
export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<PoolTaskMyDSpaceResult, PoolTask> implements OnInit {
@listableObjectComponent(PoolTaskSearchResult, ViewMode.ListElement)
export class PoolSearchResultListElementComponent extends SearchResultListElementComponent<PoolTaskSearchResult, PoolTask> implements OnInit {
/**
* A boolean representing if to show submitter information
@@ -43,15 +41,20 @@ export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListEl
*/
public workflowitem: WorkflowItem;
constructor(@Inject('objectElementProvider') public listable: ListableObject,
@Inject('indexElementProvider') public index: number) {
super(listable, index);
/**
* The index of this list element
*/
public index: number;
constructor(protected truncatableService: TruncatableService) {
super(truncatableService);
}
/**
* Initialize all instance variables
*/
ngOnInit() {
super.ngOnInit();
this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>);
}

View File

@@ -5,23 +5,23 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { WorkflowitemMyDSpaceResultListElementComponent } from './workflowitem-my-dspace-result-list-element.component';
import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/workflowitem-my-dspace-result.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
import { WorkflowItemSearchResultListElementComponent } from './workflow-item-search-result-list-element.component';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { TruncatableService } from '../../../truncatable/truncatable.service';
let component: WorkflowitemMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<WorkflowitemMyDSpaceResultListElementComponent>;
let component: WorkflowItemSearchResultListElementComponent;
let fixture: ComponentFixture<WorkflowItemSearchResultListElementComponent>;
const compIndex = 1;
const mockResultObject: WorkflowitemMyDSpaceResult = new WorkflowitemMyDSpaceResult();
const mockResultObject: WorkflowItemSearchResult = new WorkflowItemSearchResult();
mockResultObject.hitHighlights = {};
const item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{
@@ -52,23 +52,22 @@ const item = Object.assign(new Item(), {
const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkflowItem(), { item: observableOf(rd) });
describe('WorkflowitemMyDSpaceResultListElementComponent', () => {
describe('WorkflowItemSearchResultListElementComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NoopAnimationsModule],
declarations: [WorkflowitemMyDSpaceResultListElementComponent],
declarations: [WorkflowItemSearchResultListElementComponent],
providers: [
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
{ provide: 'indexElementProvider', useValue: (compIndex) }
{ provide: TruncatableService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(WorkflowitemMyDSpaceResultListElementComponent, {
}).overrideComponent(WorkflowItemSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(WorkflowitemMyDSpaceResultListElementComponent);
fixture = TestBed.createComponent(WorkflowItemSearchResultListElementComponent);
component = fixture.componentInstance;
}));

View File

@@ -3,29 +3,27 @@ import { Component } from '@angular/core';
import { Observable } from 'rxjs';
import { find } from 'rxjs/operators';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util';
import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/workflowitem-my-dspace-result.model';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
/**
* This component renders workflowitem object for the mydspace result in the list view.
* This component renders workflowitem object for the search result in the list view.
*/
@Component({
selector: 'ds-workflowitem-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
templateUrl: './workflowitem-my-dspace-result-list-element.component.html',
selector: 'ds-workflow-item-my-dspace-result-list-element',
styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss'],
templateUrl: './workflow-item-search-result-list-element.component.html',
})
@renderElementsFor(WorkflowitemMyDSpaceResult, SetViewMode.List)
@renderElementsFor(WorkflowItem, SetViewMode.List)
export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkflowitemMyDSpaceResult, WorkflowItem> {
@listableObjectComponent(WorkflowItemSearchResult, ViewMode.ListElement)
export class WorkflowItemSearchResultListElementComponent extends SearchResultListElementComponent<WorkflowItemSearchResult, WorkflowItem> {
/**
* The item object that belonging to the result object
@@ -41,7 +39,8 @@ export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResu
* Initialize all instance variables
*/
ngOnInit() {
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
super.ngOnInit();
this.initItem(this.dso.item as Observable<RemoteData<Item>> );
}
/**

View File

@@ -5,23 +5,23 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { of as observableOf } from 'rxjs';
import { Item } from '../../../../core/shared/item.model';
import { WorkspaceitemMyDSpaceResultListElementComponent } from './workspaceitem-my-dspace-result-list-element.component';
import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/workspaceitem-my-dspace-result.model';
import { WorkspaceItemSearchResultListElementComponent } from './workspace-item-search-result-list-element.component';
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model';
import { TruncatableService } from '../../../truncatable/truncatable.service';
let component: WorkspaceitemMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultListElementComponent>;
let component: WorkspaceItemSearchResultListElementComponent;
let fixture: ComponentFixture<WorkspaceItemSearchResultListElementComponent>;
const compIndex = 1;
const mockResultObject: WorkspaceitemMyDSpaceResult = new WorkspaceitemMyDSpaceResult();
const mockResultObject: WorkflowItemSearchResult = new WorkflowItemSearchResult();
mockResultObject.hitHighlights = {};
const item = Object.assign(new Item(), {
bitstreams: observableOf({}),
bundles: observableOf({}),
metadata: {
'dc.title': [
{
@@ -52,23 +52,22 @@ const item = Object.assign(new Item(), {
const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd) });
describe('WorkspaceitemMyDSpaceResultListElementComponent', () => {
describe('WorkspaceItemSearchResultListElementComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NoopAnimationsModule],
declarations: [WorkspaceitemMyDSpaceResultListElementComponent],
declarations: [WorkspaceItemSearchResultListElementComponent],
providers: [
{ provide: 'objectElementProvider', useValue: (mockResultObject) },
{ provide: 'indexElementProvider', useValue: (compIndex) }
{ provide: TruncatableService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(WorkspaceitemMyDSpaceResultListElementComponent, {
}).overrideComponent(WorkspaceItemSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
}));
beforeEach(async(() => {
fixture = TestBed.createComponent(WorkspaceitemMyDSpaceResultListElementComponent);
fixture = TestBed.createComponent(WorkspaceItemSearchResultListElementComponent);
component = fixture.componentInstance;
}));

View File

@@ -3,28 +3,27 @@ import { Component } from '@angular/core';
import { Observable } from 'rxjs';
import { find } from 'rxjs/operators';
import { renderElementsFor } from '../../../object-collection/shared/dso-element-decorator';
import { MyDSpaceResultListElementComponent, } from '../my-dspace-result-list-element.component';
import { ViewMode } from '../../../../core/shared/view-mode.model';
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/workspaceitem-my-dspace-result.model';
import { RemoteData } from '../../../../core/data/remote-data';
import { isNotUndefined } from '../../../empty.util';
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { SetViewMode } from '../../../view-mode';
import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator';
import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model';
import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component';
/**
* This component renders workspaceitem object for the mydspace result in the list view.
* This component renders workspaceitem object for the search result in the list view.
*/
@Component({
selector: 'ds-workspaceitem-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss', './workspaceitem-my-dspace-result-list-element.component.scss'],
templateUrl: './workspaceitem-my-dspace-result-list-element.component.html',
selector: 'ds-workspace-item-search-result-list-element',
styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss', './workspace-item-search-result-list-element.component.scss'],
templateUrl: './workspace-item-search-result-list-element.component.html',
})
@renderElementsFor(WorkspaceitemMyDSpaceResult, SetViewMode.List)
export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent<WorkspaceitemMyDSpaceResult, WorkspaceItem> {
@listableObjectComponent(WorkspaceItemSearchResult, ViewMode.ListElement)
export class WorkspaceItemSearchResultListElementComponent extends SearchResultListElementComponent<WorkspaceItemSearchResult, WorkspaceItem> {
/**
* The item object that belonging to the result object
@@ -40,6 +39,7 @@ export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceRes
* Initialize all instance variables
*/
ngOnInit() {
super.ngOnInit();
this.initItem(this.dso.item as Observable<RemoteData<Item>>);
}