mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
[CST-5253] Fix view item button for workspace items in the mydspace results list
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<div class="space-children-mr">
|
||||
|
||||
<button class="btn btn-primary workflow-view mt-1 mb-3"
|
||||
<button class="btn btn-primary workflow-view mt-1 mb-3" data-test="view-btn"
|
||||
ngbTooltip="{{'submission.workspace.generic.view-help' | translate}}"
|
||||
[routerLink]="[getWorkspaceItemViewRoute(object)]">
|
||||
<i class="fa fa-info-circle"></i> {{"submission.workspace.generic.view" | translate}}
|
||||
@@ -39,4 +39,4 @@
|
||||
<button type="button" id="delete_confirm" class="btn btn-danger"
|
||||
(click)="c('ok')">{{'submission.general.discard.confirm.submit' | translate}}</button>
|
||||
</div>
|
||||
</ng-template>
|
||||
</ng-template>
|
||||
|
@@ -132,6 +132,12 @@ describe('WorkspaceitemActionsComponent', () => {
|
||||
expect(btn).toBeDefined();
|
||||
});
|
||||
|
||||
it('should display view button', () => {
|
||||
const btn = fixture.debugElement.query(By.css('button [data-test="view-btn"]'));
|
||||
|
||||
expect(btn).toBeDefined();
|
||||
});
|
||||
|
||||
describe('on discard confirmation', () => {
|
||||
beforeEach((done) => {
|
||||
mockDataService.delete.and.returnValue(observableOf(true));
|
||||
|
@@ -0,0 +1,30 @@
|
||||
import { first } from 'rxjs/operators';
|
||||
import { WorkspaceItemPageResolver } from './workspace-item-page.resolver';
|
||||
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
||||
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
|
||||
|
||||
describe('WorkflowItemPageResolver', () => {
|
||||
describe('resolve', () => {
|
||||
let resolver: WorkspaceItemPageResolver;
|
||||
let wsiService: WorkspaceitemDataService;
|
||||
const uuid = '1234-65487-12354-1235';
|
||||
|
||||
beforeEach(() => {
|
||||
wsiService = {
|
||||
findById: (id: string) => createSuccessfulRemoteDataObject$({ id })
|
||||
} as any;
|
||||
resolver = new WorkspaceItemPageResolver(wsiService);
|
||||
});
|
||||
|
||||
it('should resolve a workspace item with the correct id', (done) => {
|
||||
resolver.resolve({ params: { id: uuid } } as any, undefined)
|
||||
.pipe(first())
|
||||
.subscribe(
|
||||
(resolved) => {
|
||||
expect(resolved.payload.id).toEqual(uuid);
|
||||
done();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
@@ -0,0 +1,34 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
|
||||
import { Observable } from 'rxjs';
|
||||
import { RemoteData } from '../core/data/remote-data';
|
||||
import { followLink } from '../shared/utils/follow-link-config.model';
|
||||
import { WorkspaceitemDataService } from '../core/submission/workspaceitem-data.service';
|
||||
import { WorkflowItem } from '../core/submission/models/workflowitem.model';
|
||||
import { getFirstCompletedRemoteData } from '../core/shared/operators';
|
||||
|
||||
/**
|
||||
* This class represents a resolver that requests a specific workflow item before the route is activated
|
||||
*/
|
||||
@Injectable()
|
||||
export class WorkspaceItemPageResolver implements Resolve<RemoteData<WorkflowItem>> {
|
||||
constructor(private workspaceItemService: WorkspaceitemDataService) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for resolving a workflow item based on the parameters in the current route
|
||||
* @param {ActivatedRouteSnapshot} route The current ActivatedRouteSnapshot
|
||||
* @param {RouterStateSnapshot} state The current RouterStateSnapshot
|
||||
* @returns Observable<<RemoteData<Item>> Emits the found workflow item based on the parameters in the current route,
|
||||
* or an error if something went wrong
|
||||
*/
|
||||
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<RemoteData<WorkflowItem>> {
|
||||
return this.workspaceItemService.findById(route.params.id,
|
||||
true,
|
||||
false,
|
||||
followLink('item'),
|
||||
).pipe(
|
||||
getFirstCompletedRemoteData(),
|
||||
);
|
||||
}
|
||||
}
|
@@ -6,32 +6,40 @@ import { ThemedSubmissionEditComponent } from '../submission/edit/themed-submiss
|
||||
import { I18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver';
|
||||
import { ThemedFullItemPageComponent } from '../item-page/full/themed-full-item-page.component';
|
||||
import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
||||
import { WorkspaceItemPageResolver } from './workspace-item-page.resolver';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
RouterModule.forChild([
|
||||
{ path: '', redirectTo: '/home', pathMatch: 'full' },
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: ':id/edit',
|
||||
component: ThemedSubmissionEditComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'submission.edit.title', breadcrumbKey: 'submission.edit' }
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: ':id/view',
|
||||
component: ThemedFullItemPageComponent,
|
||||
resolve: {
|
||||
dso: ItemFromWorkspaceResolver,
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workspace-item.view.title', breadcrumbKey: 'workspace-item.view' }
|
||||
},
|
||||
path: ':id',
|
||||
resolve: { wsi: WorkspaceItemPageResolver },
|
||||
children: [
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: 'edit',
|
||||
component: ThemedSubmissionEditComponent,
|
||||
resolve: {
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'submission.edit.title', breadcrumbKey: 'submission.edit' }
|
||||
},
|
||||
{
|
||||
canActivate: [AuthenticatedGuard],
|
||||
path: 'view',
|
||||
component: ThemedFullItemPageComponent,
|
||||
resolve: {
|
||||
dso: ItemFromWorkspaceResolver,
|
||||
breadcrumb: I18nBreadcrumbResolver
|
||||
},
|
||||
data: { title: 'workspace-item.view.title', breadcrumbKey: 'workspace-item.view' }
|
||||
}
|
||||
]
|
||||
}
|
||||
])
|
||||
]
|
||||
],
|
||||
providers: [WorkspaceItemPageResolver, ItemFromWorkspaceResolver]
|
||||
})
|
||||
/**
|
||||
* This module defines the default component to load when navigating to the workspaceitems edit page path
|
||||
|
@@ -3,7 +3,6 @@ import { NgModule } from '@angular/core';
|
||||
import { SharedModule } from '../shared/shared.module';
|
||||
import { WorkspaceitemsEditPageRoutingModule } from './workspaceitems-edit-page-routing.module';
|
||||
import { SubmissionModule } from '../submission/submission.module';
|
||||
import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -12,8 +11,7 @@ import { ItemFromWorkspaceResolver } from './item-from-workspace.resolver';
|
||||
SharedModule,
|
||||
SubmissionModule,
|
||||
],
|
||||
declarations: [],
|
||||
providers: [ItemFromWorkspaceResolver]
|
||||
declarations: []
|
||||
})
|
||||
/**
|
||||
* This module handles all modules that need to access the workspaceitems edit page.
|
||||
|
Reference in New Issue
Block a user