From 92f2a77dae852f416921bedd87102053b0a08206 Mon Sep 17 00:00:00 2001 From: Jens Vannerum Date: Mon, 19 Feb 2024 13:34:29 +0100 Subject: [PATCH] 111326: return not found status code on missing identifiers --- .../objectnotfound.component.spec.ts | 16 +++++++++++++++- .../objectnotfound/objectnotfound.component.ts | 4 +++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/app/lookup-by-id/objectnotfound/objectnotfound.component.spec.ts b/src/app/lookup-by-id/objectnotfound/objectnotfound.component.spec.ts index f0139e92514..b293ead1027 100644 --- a/src/app/lookup-by-id/objectnotfound/objectnotfound.component.spec.ts +++ b/src/app/lookup-by-id/objectnotfound/objectnotfound.component.spec.ts @@ -6,6 +6,7 @@ import { ObjectNotFoundComponent } from './objectnotfound.component'; import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { of as observableOf } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; +import { ServerResponseService } from 'src/app/core/services/server-response.service'; describe('ObjectNotFoundComponent', () => { let comp: ObjectNotFoundComponent; @@ -17,6 +18,10 @@ describe('ObjectNotFoundComponent', () => { const activatedRouteStub = Object.assign(new ActivatedRouteStub(), { params: observableOf({id: testUUID, idType: uuidType}) }); + const serverResponseServiceStub = jasmine.createSpyObj('ServerResponseService', { + setNotFound: jasmine.createSpy('setNotFound') + }); + const activatedRouteStubHandle = Object.assign(new ActivatedRouteStub(), { params: observableOf({id: handleId, idType: handlePrefix}) }); @@ -26,6 +31,7 @@ describe('ObjectNotFoundComponent', () => { imports: [ TranslateModule.forRoot() ], providers: [ + {provide: ServerResponseService, useValue: serverResponseServiceStub}, {provide: ActivatedRoute, useValue: activatedRouteStub} ], declarations: [ObjectNotFoundComponent], @@ -48,6 +54,10 @@ describe('ObjectNotFoundComponent', () => { expect(comp.idType).toEqual(uuidType); expect(comp.missingItem).toEqual('uuid: ' + testUUID); }); + + it('should call serverResponseService.setNotFound', () => { + expect(serverResponseServiceStub.setNotFound).toHaveBeenCalled(); + }); }); describe( 'legacy handle request', () => { @@ -56,6 +66,7 @@ describe('ObjectNotFoundComponent', () => { imports: [ TranslateModule.forRoot() ], providers: [ + {provide: ServerResponseService, useValue: serverResponseServiceStub}, {provide: ActivatedRoute, useValue: activatedRouteStubHandle} ], declarations: [ObjectNotFoundComponent], @@ -74,6 +85,9 @@ describe('ObjectNotFoundComponent', () => { expect(comp.idType).toEqual(handlePrefix); expect(comp.missingItem).toEqual('handle: ' + handlePrefix + '/' + handleId); }); - }); + it('should call serverResponseService.setNotFound', () => { + expect(serverResponseServiceStub.setNotFound).toHaveBeenCalled(); + }); + }); }); diff --git a/src/app/lookup-by-id/objectnotfound/objectnotfound.component.ts b/src/app/lookup-by-id/objectnotfound/objectnotfound.component.ts index bbab90f39dd..cad78f8555c 100644 --- a/src/app/lookup-by-id/objectnotfound/objectnotfound.component.ts +++ b/src/app/lookup-by-id/objectnotfound/objectnotfound.component.ts @@ -1,6 +1,7 @@ import { Component, ChangeDetectionStrategy, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { ServerResponseService } from 'src/app/core/services/server-response.service'; /** * This component representing the `PageNotFound` DSpace page. @@ -25,7 +26,7 @@ export class ObjectNotFoundComponent implements OnInit { * @param {AuthService} authservice * @param {ServerResponseService} responseService */ - constructor(private route: ActivatedRoute) { + constructor(private route: ActivatedRoute, private serverResponseService: ServerResponseService) { route.params.subscribe((params) => { this.idType = params.idType; this.id = params.id; @@ -38,6 +39,7 @@ export class ObjectNotFoundComponent implements OnInit { } else { this.missingItem = 'handle: ' + this.idType + '/' + this.id; } + this.serverResponseService.setNotFound(); } }