From 8a38d06318c6fa78589d356fcc13103e015957dd Mon Sep 17 00:00:00 2001 From: Davide Negretti Date: Wed, 29 Sep 2021 18:28:26 +0200 Subject: [PATCH] [CST-4499] Version history - Fixes and tests --- .../untyped-item.component.spec.ts | 25 ++++++++---- .../versioned-item.component.spec.ts | 18 ++++++++- .../versioned-item.component.ts | 1 - .../item-versions/item-versions.component.ts | 38 +++++++------------ 4 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/app/item-page/simple/item-types/untyped-item/untyped-item.component.spec.ts b/src/app/item-page/simple/item-types/untyped-item/untyped-item.component.spec.ts index 3c888071ea..389468d5f4 100644 --- a/src/app/item-page/simple/item-types/untyped-item/untyped-item.component.spec.ts +++ b/src/app/item-page/simple/item-types/untyped-item/untyped-item.component.spec.ts @@ -31,6 +31,10 @@ import { createRelationshipsObservable } from '../shared/item.component.spec'; import { UntypedItemComponent } from './untyped-item.component'; import { VersionHistoryDataService } from '../../../../core/data/version-history-data.service'; import { VersionDataService } from '../../../../core/data/version-data.service'; +import { RouterTestingModule } from '@angular/router/testing'; +import { WorkspaceitemDataService } from '../../../../core/submission/workspaceitem-data.service'; +import { SearchService } from '../../../../core/shared/search/search.service'; +import { ItemVersionsSharedService } from '../../../../shared/item/item-versions/item-versions-shared.service'; const mockItem: Item = Object.assign(new Item(), { bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), @@ -49,13 +53,16 @@ describe('UntypedItemComponent', () => { } }; TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot({ - loader: { - provide: TranslateLoader, - useClass: TranslateLoaderMock - } - })], - declarations: [UntypedItemComponent, GenericItemPageFieldComponent, TruncatePipe], + imports: [ + TranslateModule.forRoot({ + loader: { + provide: TranslateLoader, + useClass: TranslateLoaderMock + } + }), + RouterTestingModule, + ], + declarations: [UntypedItemComponent, GenericItemPageFieldComponent, TruncatePipe ], providers: [ { provide: ItemDataService, useValue: {} }, { provide: TruncatableService, useValue: {} }, @@ -73,6 +80,10 @@ describe('UntypedItemComponent', () => { { provide: VersionHistoryDataService, useValue: {} }, { provide: VersionDataService, useValue: {} }, { provide: BitstreamDataService, useValue: mockBitstreamDataService }, + { provide: WorkspaceitemDataService, useValue: {} }, + { provide: SearchService, useValue: {} }, + { provide: ItemDataService, useValue: {} }, + { provide: ItemVersionsSharedService, useValue: {} }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(UntypedItemComponent, { diff --git a/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.spec.ts b/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.spec.ts index 5115255a71..a572d5426a 100644 --- a/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.spec.ts +++ b/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.spec.ts @@ -12,6 +12,11 @@ import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; import { PageInfo } from '../../../../core/shared/page-info.model'; import { MetadataMap } from '../../../../core/shared/metadata.models'; import { createRelationshipsObservable } from '../shared/item.component.spec'; +import { RouterTestingModule } from '@angular/router/testing'; +import { Component } from '@angular/core'; +import { WorkspaceitemDataService } from '../../../../core/submission/workspaceitem-data.service'; +import { SearchService } from '../../../../core/shared/search/search.service'; +import { ItemDataService } from '../../../../core/data/item-data.service'; const mockItem: Item = Object.assign(new Item(), { bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), @@ -19,22 +24,31 @@ const mockItem: Item = Object.assign(new Item(), { relationships: createRelationshipsObservable() }); + +@Component({template: ''}) +class DummyComponent { +} + describe('VersionedItemComponent', () => { let component: VersionedItemComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ VersionedItemComponent ], + declarations: [VersionedItemComponent, DummyComponent], + imports: [RouterTestingModule], providers: [ { provide: VersionHistoryDataService, useValue: {} }, { provide: TranslateService, useValue: {} }, { provide: VersionDataService, useValue: {} }, { provide: NotificationsService, useValue: {} }, { provide: ItemVersionsSharedService, useValue: {} }, + { provide: WorkspaceitemDataService, useValue: {} }, + { provide: SearchService, useValue: {} }, + { provide: ItemDataService, useValue: {} }, ] }) - .compileComponents(); + .compileComponents(); }); beforeEach(() => { diff --git a/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.ts b/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.ts index 5ea0b13b29..ecf7a1119c 100644 --- a/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.ts +++ b/src/app/item-page/simple/item-types/versioned-item/versioned-item.component.ts @@ -66,7 +66,6 @@ export class VersionedItemComponent extends ItemComponent { getFirstSucceededRemoteDataPayload(), ).subscribe((wsItem) => { const wsiId = wsItem.id; - console.log(wsiId); const route = 'workspaceitems/' + wsiId + '/edit'; this.router.navigateByUrl(route); }); diff --git a/src/app/shared/item/item-versions/item-versions.component.ts b/src/app/shared/item/item-versions/item-versions.component.ts index 58de0e8d94..c26e96346f 100644 --- a/src/app/shared/item/item-versions/item-versions.component.ts +++ b/src/app/shared/item/item-versions/item-versions.component.ts @@ -225,30 +225,20 @@ export class ItemVersionsComponent implements OnInit { this.versionService.findById(this.versionBeingEditedId).pipe( getFirstSucceededRemoteData(), - ).subscribe( - (findRes) => { - const updatedVersion = - Object.assign({}, findRes.payload, { - summary: this.versionBeingEditedSummary, - }); - this.versionService.update(updatedVersion).pipe(take(1)).subscribe( - (updateRes) => { - if (updateRes.hasSucceeded) { - this.notificationsService.success(null, this.translateService.get(successMessageKey, {'version': this.versionBeingEditedNumber})); - - // const versionHistory$ = this.versionHistoryRD$.pipe( - // getAllSucceededRemoteData(), - // getRemoteDataPayload(), - // hasValueOperator(), - // ); - // this.getAllVersions(versionHistory$); - - } else { - this.notificationsService.warning(null, this.translateService.get(failureMessageKey, {'version': this.versionBeingEditedNumber})); - } - this.disableSummaryEditing(); - } - ); + switchMap((findRes: RemoteData) => { + const payload = findRes.payload; + const summary = {summary: this.versionBeingEditedSummary,}; + const updatedVersion = Object.assign({}, payload, summary); + return this.versionService.update(updatedVersion).pipe(getFirstCompletedRemoteData()); + }), + ).subscribe((updatedVersionRD: RemoteData) => { + if (updatedVersionRD.hasSucceeded) { + this.notificationsService.success(null, this.translateService.get(successMessageKey, {'version': this.versionBeingEditedNumber})); + this.getAllVersions(this.versionHistoryRD$.pipe(getFirstSucceededRemoteDataPayload())); + } else { + this.notificationsService.warning(null, this.translateService.get(failureMessageKey, {'version': this.versionBeingEditedNumber})); + } + this.disableSummaryEditing(); } ); }