diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.html
index 134b85523e..d4ecaaa332 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.html
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.html
@@ -1,6 +1,8 @@
-
+ [showSubmitter]="showSubmitter"
+ [status]="status">
+
-
+
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.spec.ts
new file mode 100644
index 0000000000..38c4f461cd
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.spec.ts
@@ -0,0 +1,89 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+import { of as observableOf } from 'rxjs';
+
+import { Item } from '../../../../core/shared/item.model';
+import { ClaimedMyDSpaceResultDetailElementComponent } from './claimed-my-dspace-result-detail-element.component';
+import { ClaimedTaskMyDSpaceResult } from '../../../object-collection/shared/claimed-task-my-dspace-result.model';
+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';
+
+let component: ClaimedMyDSpaceResultDetailElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: ClaimedTaskMyDSpaceResult = new ClaimedTaskMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rdItem = new RemoteData(false, false, true, null, item);
+const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
+const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
+mockResultObject.dspaceObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
+
+describe('ClaimedMyDSpaceResultDetailElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [ClaimedMyDSpaceResultDetailElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ClaimedMyDSpaceResultDetailElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ClaimedMyDSpaceResultDetailElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.workflowitem).toEqual(workflowitem);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION);
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.ts
index 4a5367d2a0..29e8e907ad 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/claimed-my-dspace-result/claimed-my-dspace-result-detail-element.component.ts
@@ -11,47 +11,56 @@ import { ListableObject } from '../../../object-collection/shared/listable-objec
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 { ClaimedTaskDataService } from '../../../../core/tasks/claimed-task-data.service';
-import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
-import { FormBuilder, FormGroup, Validators } from '@angular/forms';
-import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
+/**
+ * This component renders claimed task object for the mydspace result in the detail view.
+ */
@Component({
selector: 'ds-claimed-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
- templateUrl: './claimed-my-dspace-result-detail-element.component.html',
- providers: [Location, {provide: LocationStrategy, useClass: PathLocationStrategy}]
+ templateUrl: './claimed-my-dspace-result-detail-element.component.html'
})
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.Detail)
@renderElementsFor(ClaimedTask, ViewMode.Detail)
export class ClaimedMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent {
+
+ /**
+ * A boolean representing if to show submitter information
+ */
+ public showSubmitter = true;
+
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.VALIDATION;
- public workFlow: Workflowitem;
- public rejectForm: FormGroup;
- constructor(private ctDataService: ClaimedTaskDataService,
- private modalService: NgbModal,
- private formBuilder: FormBuilder,
- @Inject('objectElementProvider') public listable: ListableObject) {
+ /**
+ * The workflowitem object that belonging to the result object
+ */
+ public workflowitem: Workflowitem;
+
+ constructor(@Inject('objectElementProvider') public listable: ListableObject) {
super(listable);
-
- this.rejectForm = this.formBuilder.group({
- reason: ['', Validators.required]
- });
}
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initWorkflowItem(this.dso.workflowitem as Observable>);
}
+ /**
+ * Retrieve workflowitem from result object
+ */
initWorkflowItem(wfi$: Observable>) {
wfi$.pipe(
find((rd: RemoteData) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
).subscribe((rd: RemoteData) => {
- this.workFlow = rd.payload;
+ this.workflowitem = rd.payload;
});
}
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html
index 4f9d8f3e94..3cb4665884 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.html
@@ -24,35 +24,4 @@
-
-
-
-
-
-
+
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts
new file mode 100644
index 0000000000..5823e9969b
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts
@@ -0,0 +1,90 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+
+import { of as observableOf } from 'rxjs';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
+
+import { TruncatePipe } from '../../../utils/truncate.pipe';
+import { Item } from '../../../../core/shared/item.model';
+import { ItemDetailPreviewComponent } from './item-detail-preview.component';
+import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+let component: ItemDetailPreviewComponent;
+let fixture: ComponentFixture;
+
+const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const mockItemWithoutAuthorAndDate: Item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ]
+ }
+});
+
+describe('ItemDetailPreviewComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ NoopAnimationsModule,
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ }
+ }),
+ ],
+ declarations: [ItemDetailPreviewComponent, TruncatePipe],
+ providers: [
+ { provide: 'objectElementProvider', useValue: { mockItemWithAuthorAndDate } }
+
+ ],
+
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ItemDetailPreviewComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ItemDetailPreviewComponent);
+ component = fixture.componentInstance;
+
+ }));
+
+ beforeEach(() => {
+ component.object = { hitHighlights: {} };
+ component.item = mockItemWithAuthorAndDate;
+ fixture.detectChanges();
+ });
+
+ it('should init thumbnail on init', () => {
+ expect(component.thumbnail$).toBeDefined();
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts
index 9b42bb2268..9f92f79859 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.ts
@@ -7,25 +7,46 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
import { fadeInOut } from '../../../animations/fade';
import { Bitstream } from '../../../../core/shared/bitstream.model';
+/**
+ * This component show metadata for the given item object in the detail view.
+ */
@Component({
selector: 'ds-item-detail-preview',
styleUrls: ['./item-detail-preview.component.scss'],
templateUrl: './item-detail-preview.component.html',
animations: [fadeInOut]
})
-export class ItemDetailPreviewComponent {
+export class ItemDetailPreviewComponent {
+ /**
+ * The item to display
+ */
@Input() item: Item;
+
+ /**
+ * The mydspace result object
+ */
@Input() object: any;
+
+ /**
+ * Represent item's status
+ */
@Input() status: MyDspaceItemStatusType;
- public ALL_STATUS = [];
+ /**
+ * A boolean representing if to show submitter information
+ */
+ @Input() showSubmitter = false;
+
+ /**
+ * The item's thumbnail
+ */
public thumbnail$: Observable;
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
- Object.keys(MyDspaceItemStatusType).forEach((s) => {
- this.ALL_STATUS.push(MyDspaceItemStatusType[s]);
- });
this.thumbnail$ = this.item.getThumbnail();
}
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.spec.ts
new file mode 100644
index 0000000000..c48d755d61
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.spec.ts
@@ -0,0 +1,78 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+import { of as observableOf } from 'rxjs';
+
+import { Item } from '../../../../core/shared/item.model';
+import { ItemMyDSpaceResultDetailElementComponent } from './item-my-dspace-result-detail-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';
+
+let component: ItemMyDSpaceResultDetailElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: ItemMyDSpaceResult = new ItemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+mockResultObject.dspaceObject = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+
+describe('ItemMyDSpaceResultDetailElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [ItemMyDSpaceResultDetailElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ItemMyDSpaceResultDetailElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ItemMyDSpaceResultDetailElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.ACCEPTED);
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.ts
index 75bfb30939..a55d911581 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-my-dspace-result/item-my-dspace-result-detail-element.component.ts
@@ -7,6 +7,9 @@ import { ItemMyDSpaceResult } from '../../../object-collection/shared/item-my-ds
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
+/**
+ * This component renders item object for the mydspace result in the detail view.
+ */
@Component({
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss', './item-my-dspace-result-detail-element.component.scss'],
@@ -16,6 +19,9 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(ItemMyDSpaceResult, ViewMode.Detail)
export class ItemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent {
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.ACCEPTED;
}
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.html b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.html
index 8d808815c2..96ef68e3f8 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.html
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.html
@@ -1,6 +1,7 @@
-
-
+
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.spec.ts
new file mode 100644
index 0000000000..b108d48c33
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-element.component.spec.ts
@@ -0,0 +1,89 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+import { of as observableOf } from 'rxjs';
+
+import { Item } from '../../../../core/shared/item.model';
+import { PoolMyDSpaceResultDetailElementComponent } from './pool-my-dspace-result-detail-lement.component';
+import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-task-my-dspace-result.model';
+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';
+
+let component: PoolMyDSpaceResultDetailElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: PoolTaskMyDSpaceResult = new PoolTaskMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rdItem = new RemoteData(false, false, true, null, item);
+const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
+const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
+mockResultObject.dspaceObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
+
+describe('PoolMyDSpaceResultDetailElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [PoolMyDSpaceResultDetailElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(PoolMyDSpaceResultDetailElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(PoolMyDSpaceResultDetailElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.workflowitem).toEqual(workflowitem);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER);
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-lement.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-lement.component.ts
index 1917a5f1af..fbc37c9525 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-lement.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-my-dspace-result/pool-my-dspace-result-detail-lement.component.ts
@@ -14,6 +14,9 @@ import { PoolTaskMyDSpaceResult } from '../../../object-collection/shared/pool-t
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
+/**
+ * This component renders pool task object for the mydspace result in the detail view.
+ */
@Component({
selector: 'ds-pool-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
@@ -23,23 +26,41 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.Detail)
@renderElementsFor(PoolTask, ViewMode.Detail)
export class PoolMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent {
+
+ /**
+ * A boolean representing if to show submitter information
+ */
+ public showSubmitter = true;
+
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
- public workFlow: Workflowitem;
+
+ /**
+ * The workflowitem object that belonging to the result object
+ */
+ public workflowitem: Workflowitem;
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
-
super(listable);
}
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initWorkflowItem(this.dso.workflowitem as Observable>);
}
+ /**
+ * Retrieve workflowitem from result object
+ */
initWorkflowItem(wfi$: Observable>) {
wfi$.pipe(
find((rd: RemoteData) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
).subscribe((rd: RemoteData) => {
- this.workFlow = rd.payload;
+ this.workflowitem = rd.payload;
});
}
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.spec.ts
new file mode 100644
index 0000000000..3c6505218e
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.spec.ts
@@ -0,0 +1,86 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+import { of as observableOf } from 'rxjs';
+
+import { Item } from '../../../../core/shared/item.model';
+import { WorkflowitemMyDSpaceResultDetailElementComponent } from './workflowitem-my-dspace-result-detail-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';
+
+let component: WorkflowitemMyDSpaceResultDetailElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: WorkflowitemMyDSpaceResult = new WorkflowitemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rd = new RemoteData(false, false, true, null, item);
+mockResultObject.dspaceObject = Object.assign(new Workflowitem(), { item: observableOf(rd) });
+
+describe('WorkflowitemMyDSpaceResultDetailElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [WorkflowitemMyDSpaceResultDetailElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(WorkflowitemMyDSpaceResultDetailElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(WorkflowitemMyDSpaceResultDetailElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.item).toEqual(item);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW);
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.ts
index c76ad84b22..32e005309d 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-detail-element.component.ts
@@ -13,6 +13,9 @@ import { RemoteData } from '../../../../core/data/remote-data';
import { find } from 'rxjs/operators';
import { isNotUndefined } from '../../../empty.util';
+/**
+ * This component renders workflowitem object for the mydspace result in the detail view.
+ */
@Component({
selector: 'ds-workflowitem-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss'],
@@ -23,17 +26,30 @@ import { isNotUndefined } from '../../../empty.util';
@renderElementsFor(Workflowitem, ViewMode.Detail)
export class WorkflowitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent {
+ /**
+ * The item object that belonging to the result object
+ */
public item: Item;
+
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.WORKFLOW;
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
super(listable);
}
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initItem(this.dso.item as Observable>);
}
+ /**
+ * Retrieve item from result object
+ */
initItem(item$: Observable>) {
item$.pipe(
find((rd: RemoteData- ) => rd.hasSucceeded && isNotUndefined(rd.payload))
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.spec.ts
new file mode 100644
index 0000000000..830ab80cf1
--- /dev/null
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.spec.ts
@@ -0,0 +1,86 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { NoopAnimationsModule } from '@angular/platform-browser/animations';
+
+import { of as observableOf } from 'rxjs';
+
+import { Item } from '../../../../core/shared/item.model';
+import { WorkspaceitemMyDSpaceResultDetailElementComponent } from './workspaceitem-my-dspace-result-detail-element.component';
+import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/workspaceitem-my-dspace-result.model';
+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';
+
+let component: WorkspaceitemMyDSpaceResultDetailElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: WorkspaceitemMyDSpaceResult = new WorkspaceitemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rd = new RemoteData(false, false, true, null, item);
+mockResultObject.dspaceObject = Object.assign(new Workspaceitem(), { item: observableOf(rd) });
+
+describe('WorkspaceitemMyDSpaceResultDetailElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [WorkspaceitemMyDSpaceResultDetailElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(WorkspaceitemMyDSpaceResultDetailElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(WorkspaceitemMyDSpaceResultDetailElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.item).toEqual(item);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.IN_PROGRESS);
+ });
+});
diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.ts
index 4a1635ec5d..ca6ed59c12 100644
--- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.ts
+++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-detail-element.component.ts
@@ -14,6 +14,9 @@ import { ListableObject } from '../../../object-collection/shared/listable-objec
import { MyDSpaceResultDetailElementComponent } from '../my-dspace-result-detail-element.component';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
+/**
+ * This component renders workspaceitem object for the mydspace result in the detail view.
+ */
@Component({
selector: 'ds-workspaceitem-my-dspace-result-detail-element',
styleUrls: ['../my-dspace-result-detail-element.component.scss', './workspaceitem-my-dspace-result-detail-element.component.scss'],
@@ -23,17 +26,31 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.Detail)
@renderElementsFor(Workspaceitem, ViewMode.Detail)
export class WorkspaceitemMyDSpaceResultDetailElementComponent extends MyDSpaceResultDetailElementComponent {
+
+ /**
+ * The item object that belonging to the result object
+ */
public item: Item;
+
+ /**
+ * Represent item's status
+ */
status = MyDspaceItemStatusType.IN_PROGRESS;
constructor(@Inject('objectElementProvider') public listable: ListableObject) {
super(listable);
}
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initItem(this.dso.item as Observable>);
}
+ /**
+ * Retrieve item from result object
+ */
initItem(item$: Observable>) {
item$.pipe(
find((rd: RemoteData
- ) => rd.hasSucceeded && isNotUndefined(rd.payload))
diff --git a/src/app/shared/object-list/item-list-preview/item-list-preview.component.scss b/src/app/shared/object-list/item-list-preview/item-list-preview.component.scss
deleted file mode 100644
index 8d0339f264..0000000000
--- a/src/app/shared/object-list/item-list-preview/item-list-preview.component.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import '../../../../styles/_variables.scss';
-
-.h3-title {
- color: $link-color;
-}
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.html
index 5ec6e59f95..5ec4c9a5b5 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.html
+++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.html
@@ -1,7 +1,7 @@
-
-
+
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..c79812d10b
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.spec.ts
@@ -0,0 +1,89 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+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 { 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';
+
+let component: ClaimedMyDSpaceResultListElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: ClaimedTaskMyDSpaceResult = new ClaimedTaskMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rdItem = new RemoteData(false, false, true, null, item);
+const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
+const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
+mockResultObject.dspaceObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
+
+describe('ClaimedMyDSpaceResultListElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [ClaimedMyDSpaceResultListElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ClaimedMyDSpaceResultListElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ClaimedMyDSpaceResultListElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.workflowitem).toEqual(workflowitem);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.VALIDATION);
+ });
+});
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.ts
index c37973ae11..5f2cd2495e 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-my-dspace-result/claimed-my-dspace-result-list-element.component.ts
@@ -14,6 +14,9 @@ import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.m
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';
+/**
+ * This component renders claimed task object for the mydspace result in the list view.
+ */
@Component({
selector: 'ds-claimed-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
@@ -24,19 +27,37 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(ClaimedTaskMyDSpaceResult, ViewMode.List)
@renderElementsFor(ClaimedTask, ViewMode.List)
export class ClaimedMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent {
- public showSubmitter = true;
- public status = MyDspaceItemStatusType.VALIDATION;
- public workFlow: Workflowitem;
+ /**
+ * A boolean representing if to show submitter information
+ */
+ public showSubmitter = true;
+
+ /**
+ * Represent item's status
+ */
+ public status = MyDspaceItemStatusType.VALIDATION;
+
+ /**
+ * The workflowitem object that belonging to the result object
+ */
+ public workflowitem: Workflowitem;
+
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initWorkflowItem(this.dso.workflowitem as Observable>);
}
+ /**
+ * Retrieve workflowitem from result object
+ */
initWorkflowItem(wfi$: Observable>) {
wfi$.pipe(
find((rd: RemoteData) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
).subscribe((rd: RemoteData) => {
- this.workFlow = rd.payload;
+ this.workflowitem = rd.payload;
});
}
}
diff --git a/src/app/shared/object-list/item-list-preview/item-list-preview.component.html b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html
similarity index 100%
rename from src/app/shared/object-list/item-list-preview/item-list-preview.component.html
rename to src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.html
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss
new file mode 100644
index 0000000000..949e96d484
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.scss
@@ -0,0 +1,5 @@
+@import '../../../../../styles/variables';
+
+.h3-title {
+ color: $link-color;
+}
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts
new file mode 100644
index 0000000000..9b917b56e4
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.spec.ts
@@ -0,0 +1,131 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { By } from '@angular/platform-browser';
+
+import { of as observableOf } from 'rxjs';
+
+import { TruncatePipe } from '../../../utils/truncate.pipe';
+import { Item } from '../../../../core/shared/item.model';
+import { ItemListPreviewComponent } from './item-list-preview.component';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
+import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
+
+let component: ItemListPreviewComponent;
+let fixture: ComponentFixture;
+
+const mockItemWithAuthorAndDate: Item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const mockItemWithoutAuthorAndDate: Item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ]
+ }
+});
+
+describe('ItemListPreviewComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ }
+ }),
+ ],
+ declarations: [ItemListPreviewComponent, TruncatePipe],
+ providers: [
+ { provide: 'objectElementProvider', useValue: { mockItemWithAuthorAndDate } }
+
+ ],
+
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ItemListPreviewComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ItemListPreviewComponent);
+ component = fixture.componentInstance;
+
+ }));
+
+ beforeEach(() => {
+ component.object = { hitHighlights: {} };
+ });
+
+ describe('When the item has an author', () => {
+ beforeEach(() => {
+ component.item = mockItemWithAuthorAndDate;
+ fixture.detectChanges();
+ });
+
+ it('should show the author paragraph', () => {
+ const itemAuthorField = fixture.debugElement.query(By.css('span.item-list-authors'));
+ expect(itemAuthorField).not.toBeNull();
+ });
+ });
+
+ describe('When the item has no author', () => {
+ beforeEach(() => {
+ component.item = mockItemWithoutAuthorAndDate;
+ fixture.detectChanges();
+ });
+
+ it('should not show the author paragraph', () => {
+ const itemAuthorField = fixture.debugElement.query(By.css('span.item-list-authors'));
+ expect(itemAuthorField).toBeNull();
+ });
+ });
+
+ describe('When the item has an issuedate', () => {
+ beforeEach(() => {
+ component.item = mockItemWithAuthorAndDate;
+ fixture.detectChanges();
+ });
+
+ it('should show the issuedate span', () => {
+ const dateField = fixture.debugElement.query(By.css('span.item-list-date'));
+ expect(dateField).not.toBeNull();
+ });
+ });
+
+ describe('When the item has no issuedate', () => {
+ beforeEach(() => {
+ component.item = mockItemWithoutAuthorAndDate;
+ fixture.detectChanges();
+ });
+
+ it('should show the issuedate empty placeholder', () => {
+ const dateField = fixture.debugElement.query(By.css('span.item-list-date'));
+ expect(dateField).not.toBeNull();
+ });
+ });
+});
diff --git a/src/app/shared/object-list/item-list-preview/item-list-preview.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
similarity index 69%
rename from src/app/shared/object-list/item-list-preview/item-list-preview.component.ts
rename to src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
index 0a853b9c5e..5112069071 100644
--- a/src/app/shared/object-list/item-list-preview/item-list-preview.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component.ts
@@ -1,21 +1,39 @@
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 { Metadata } from '../../../core/shared/metadata.utils';
+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 { Metadata } from '../../../../core/shared/metadata.utils';
+/**
+ * This component show metadata for the given item object in the list view.
+ */
@Component({
selector: 'ds-item-list-preview',
styleUrls: ['item-list-preview.component.scss'],
templateUrl: 'item-list-preview.component.html',
animations: [fadeInOut]
})
-
export class ItemListPreviewComponent {
+
+ /**
+ * The item to display
+ */
@Input() item: Item;
+
+ /**
+ * The mydspace result object
+ */
@Input() object: any;
+
+ /**
+ * Represent item's status
+ */
@Input() status: MyDspaceItemStatusType;
+
+ /**
+ * A boolean representing if to show submitter information
+ */
@Input() showSubmitter = false;
/**
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..bcd323ae2a
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.spec.ts
@@ -0,0 +1,78 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+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';
+
+let component: ItemMyDSpaceResultListElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: ItemMyDSpaceResult = new ItemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+mockResultObject.dspaceObject = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+
+describe('ItemMyDSpaceResultListElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [ItemMyDSpaceResultListElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(ItemMyDSpaceResultListElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(ItemMyDSpaceResultListElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.ACCEPTED);
+ });
+});
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.ts
index 484ca9af11..faeeed8ea2 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/item-my-dspace-result/item-my-dspace-result-list-element.component.ts
@@ -7,6 +7,9 @@ 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';
+/**
+ * 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'],
@@ -16,6 +19,9 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(ItemMyDSpaceResult, ViewMode.List)
export class ItemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent {
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.ACCEPTED;
}
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.html b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.html
index b6771db087..5f0f1bb6d4 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.html
+++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.html
@@ -1,7 +1,7 @@
-
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..3b2545e069
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.spec.ts
@@ -0,0 +1,89 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+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 { 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';
+
+let component: PoolMyDSpaceResultListElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: PoolTaskMyDSpaceResult = new PoolTaskMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rdItem = new RemoteData(false, false, true, null, item);
+const workflowitem = Object.assign(new Workflowitem(), { item: observableOf(rdItem) });
+const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem);
+mockResultObject.dspaceObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
+
+describe('PoolMyDSpaceResultListElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [PoolMyDSpaceResultListElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(PoolMyDSpaceResultListElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(PoolMyDSpaceResultListElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.workflowitem).toEqual(workflowitem);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.WAITING_CONTROLLER);
+ });
+});
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.ts
index 443d5d7e8c..36b95271c7 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-my-dspace-result/pool-my-dspace-result-list-element.component.ts
@@ -14,6 +14,9 @@ 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';
+/**
+ * This component renders pool task object for the mydspace result in the list view.
+ */
@Component({
selector: 'ds-pool-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
@@ -23,23 +26,42 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(PoolTaskMyDSpaceResult, ViewMode.List)
@renderElementsFor(PoolTask, ViewMode.List)
export class PoolMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent implements OnInit {
+
+ /**
+ * A boolean representing if to show submitter information
+ */
+ public showSubmitter = true;
+
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.WAITING_CONTROLLER;
- public workFlow: Workflowitem;
+
+ /**
+ * The workflowitem object that belonging to the result object
+ */
+ public workflowitem: Workflowitem;
constructor(@Inject('objectElementProvider') public listable: ListableObject,
@Inject('indexElementProvider') public index: number) {
super(listable, index);
}
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initWorkflowItem(this.dso.workflowitem as Observable>);
}
+ /**
+ * Retrieve workflowitem from result object
+ */
initWorkflowItem(wfi$: Observable>) {
wfi$.pipe(
find((rd: RemoteData) => (rd.hasSucceeded && isNotUndefined(rd.payload)))
).subscribe((rd: RemoteData) => {
- this.workFlow = rd.payload;
+ this.workflowitem = rd.payload;
});
}
}
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..de2dfd73f4
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.spec.ts
@@ -0,0 +1,86 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+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';
+
+let component: WorkflowitemMyDSpaceResultListElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: WorkflowitemMyDSpaceResult = new WorkflowitemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rd = new RemoteData(false, false, true, null, item);
+mockResultObject.dspaceObject = Object.assign(new Workflowitem(), { item: observableOf(rd) });
+
+describe('WorkflowitemMyDSpaceResultListElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [WorkflowitemMyDSpaceResultListElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(WorkflowitemMyDSpaceResultListElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(WorkflowitemMyDSpaceResultListElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.item).toEqual(item);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.WORKFLOW);
+ });
+});
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.ts
index 7fad9d7677..ebce79c2b8 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workflowitem-my-dspace-result/workflowitem-my-dspace-result-list-element.component.ts
@@ -13,6 +13,9 @@ import { Workflowitem } from '../../../../core/submission/models/workflowitem.mo
import { Item } from '../../../../core/shared/item.model';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
+/**
+ * This component renders workflowitem object for the mydspace result in the list view.
+ */
@Component({
selector: 'ds-workflowitem-my-dspace-result-list-element',
styleUrls: ['../my-dspace-result-list-element.component.scss'],
@@ -22,13 +25,27 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(WorkflowitemMyDSpaceResult, ViewMode.List)
@renderElementsFor(Workflowitem, ViewMode.List)
export class WorkflowitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent {
+
+ /**
+ * The item object that belonging to the result object
+ */
public item: Item;
+
+ /**
+ * Represent item's status
+ */
public status = MyDspaceItemStatusType.WORKFLOW;
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initItem(this.dso.item as Observable>);
}
+ /**
+ * Retrieve item from result object
+ */
initItem(item$: Observable>) {
item$.pipe(
find((rd: RemoteData
- ) => rd.hasSucceeded && isNotUndefined(rd.payload))
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.spec.ts
new file mode 100644
index 0000000000..f47c05c9e9
--- /dev/null
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.spec.ts
@@ -0,0 +1,86 @@
+import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+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 { 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';
+
+let component: WorkspaceitemMyDSpaceResultListElementComponent;
+let fixture: ComponentFixture;
+
+const compIndex = 1;
+
+const mockResultObject: WorkspaceitemMyDSpaceResult = new WorkspaceitemMyDSpaceResult();
+mockResultObject.hitHighlights = {};
+
+const item = Object.assign(new Item(), {
+ bitstreams: observableOf({}),
+ metadata: {
+ 'dc.title': [
+ {
+ language: 'en_US',
+ value: 'This is just another title'
+ }
+ ],
+ 'dc.type': [
+ {
+ language: null,
+ value: 'Article'
+ }
+ ],
+ 'dc.contributor.author': [
+ {
+ language: 'en_US',
+ value: 'Smith, Donald'
+ }
+ ],
+ 'dc.date.issued': [
+ {
+ language: null,
+ value: '2015-06-26'
+ }
+ ]
+ }
+});
+const rd = new RemoteData(false, false, true, null, item);
+mockResultObject.dspaceObject = Object.assign(new Workspaceitem(), { item: observableOf(rd) });
+
+describe('WorkspaceitemMyDSpaceResultListElementComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [NoopAnimationsModule],
+ declarations: [WorkspaceitemMyDSpaceResultListElementComponent],
+ providers: [
+ { provide: 'objectElementProvider', useValue: (mockResultObject) },
+ { provide: 'indexElementProvider', useValue: (compIndex) }
+ ],
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(WorkspaceitemMyDSpaceResultListElementComponent, {
+ set: { changeDetection: ChangeDetectionStrategy.Default }
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(WorkspaceitemMyDSpaceResultListElementComponent);
+ component = fixture.componentInstance;
+ }));
+
+ beforeEach(() => {
+ component.dso = mockResultObject.dspaceObject;
+ fixture.detectChanges();
+ });
+
+ it('should init item properly', () => {
+ expect(component.item).toEqual(item);
+ });
+
+ it('should have properly status', () => {
+ expect(component.status).toEqual(MyDspaceItemStatusType.IN_PROGRESS);
+ });
+});
diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.ts
index b0df02c64c..c60b742ae0 100644
--- a/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.ts
+++ b/src/app/shared/object-list/my-dspace-result-list-element/workspaceitem-my-dspace-result/workspaceitem-my-dspace-result-list-element.component.ts
@@ -13,6 +13,9 @@ 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';
+/**
+ * This component renders workspaceitem 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', './workspaceitem-my-dspace-result-list-element.component.scss'],
@@ -22,13 +25,26 @@ import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspa
@renderElementsFor(WorkspaceitemMyDSpaceResult, ViewMode.List)
export class WorkspaceitemMyDSpaceResultListElementComponent extends MyDSpaceResultListElementComponent {
+ /**
+ * The item object that belonging to the result object
+ */
item: Item;
+
+ /**
+ * Represent item's status
+ */
status = MyDspaceItemStatusType.IN_PROGRESS;
+ /**
+ * Initialize all instance variables
+ */
ngOnInit() {
this.initItem(this.dso.item as Observable>);
}
+ /**
+ * Retrieve item from result object
+ */
initItem(item$: Observable>) {
item$.pipe(
find((rd: RemoteData
- ) => rd.hasSucceeded && isNotUndefined(rd.payload))
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index 94d9e73e5c..a5a426f1a7 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -126,7 +126,7 @@ import { ItemSearchResultListElementComponent } from './object-list/search-resul
import { EditItemSelectorComponent } from './dso-selector/modal-wrappers/edit-item-selector/edit-item-selector.component';
import { EditCommunitySelectorComponent } from './dso-selector/modal-wrappers/edit-community-selector/edit-community-selector.component';
import { EditCollectionSelectorComponent } from './dso-selector/modal-wrappers/edit-collection-selector/edit-collection-selector.component';
-import { ItemListPreviewComponent } from './object-list/item-list-preview/item-list-preview.component';
+import { ItemListPreviewComponent } from './object-list/my-dspace-result-list-element/item-list-preview/item-list-preview.component';
import { ItemPageAuthorFieldComponent } from '../+item-page/simple/field-components/specific-field/author/item-page-author-field.component';
import { ItemPageDateFieldComponent } from '../+item-page/simple/field-components/specific-field/date/item-page-date-field.component';
import { ItemPageAbstractFieldComponent } from '../+item-page/simple/field-components/specific-field/abstract/item-page-abstract-field.component';