Skip to content

Commit 8a0bdef

Browse files
committed
refactor: update breadcrumb and fix tests
1 parent 9c61b3d commit 8a0bdef

File tree

3 files changed

+16
-24
lines changed

3 files changed

+16
-24
lines changed

projects/observability/src/pages/apis/api-detail/api-detail-breadcrumb.resolver.test.ts

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -84,28 +84,16 @@ describe('Api detail breadcrumb resolver', () => {
8484
runFakeRxjs(({ expectObservable }) => {
8585
expectObservable(breadcrumb$).toBe('(abc|)', {
8686
a: {
87-
[entityIdKey]: 'test-id',
88-
[entityTypeKey]: ObservabilityEntityType.Api,
87+
[entityIdKey]: 'test-service-id',
88+
[entityTypeKey]: ObservabilityEntityType.Service,
8989
label: 'test service',
9090
icon: ObservabilityIconType.Service,
91-
url: ['services', 'service', 'test-service-id'],
92-
name: 'test api',
93-
parentId: 'test-service-id',
94-
parentName: 'test service',
95-
serviceName: 'test service',
96-
serviceId: 'test-service-id'
91+
url: ['services', 'service', 'test-service-id']
9792
},
9893
b: {
99-
[entityIdKey]: 'test-id',
100-
[entityTypeKey]: ObservabilityEntityType.Api,
10194
label: 'Endpoints',
10295
icon: ObservabilityIconType.Api,
103-
url: ['services', 'service', 'test-service-id', 'endpoints'],
104-
name: 'test api',
105-
parentId: 'test-service-id',
106-
parentName: 'test service',
107-
serviceName: 'test service',
108-
serviceId: 'test-service-id'
96+
url: ['services', 'service', 'test-service-id', 'endpoints']
10997
},
11098
c: {
11199
[entityIdKey]: 'test-id',

projects/observability/src/pages/apis/api-detail/api-detail-breadcrumb.resolver.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { Inject, Injectable } from '@angular/core';
22
import { ActivatedRouteSnapshot } from '@angular/router';
3-
import { NavigationService, TimeRangeService } from '@hypertrace/common';
3+
import { Breadcrumb, NavigationService, TimeRangeService } from '@hypertrace/common';
44
import { BreadcrumbsService } from '@hypertrace/components';
55
import { GraphQlRequestService } from '@hypertrace/graphql-client';
6+
import { entityIdKey } from '@hypertrace/observability';
67
import { Observable } from 'rxjs';
78
import { map, switchMap } from 'rxjs/operators';
89
import { EntityMetadata, EntityMetadataMap, ENTITY_METADATA } from '../../../shared/constants/entity-metadata';
9-
import { Entity, ObservabilityEntityType } from '../../../shared/graphql/model/schema/entity';
10+
import { Entity, entityTypeKey, ObservabilityEntityType } from '../../../shared/graphql/model/schema/entity';
1011
import {
1112
EntityBreadcrumb,
1213
EntityBreadcrumbResolver
@@ -29,7 +30,7 @@ export class ApiDetailBreadcrumbResolver<T extends EntityBreadcrumb> extends Ent
2930
this.apiEntityMetadata = this.entityMetadataMap.get(ObservabilityEntityType.Api);
3031
}
3132

32-
public async resolve(activatedRouteSnapshot: ActivatedRouteSnapshot): Promise<Observable<EntityBreadcrumb>> {
33+
public async resolve(activatedRouteSnapshot: ActivatedRouteSnapshot): Promise<Observable<Breadcrumb>> {
3334
const id = activatedRouteSnapshot.paramMap.get('id') as string;
3435
const parentEntityMetadata = this.resolveParentType();
3536

@@ -56,17 +57,20 @@ export class ApiDetailBreadcrumbResolver<T extends EntityBreadcrumb> extends Ent
5657
};
5758
}
5859

59-
protected getParentBreadcrumbs(api: EntityBreadcrumb, parentEntityMetadata?: EntityMetadata): EntityBreadcrumb[] {
60+
protected getParentBreadcrumbs(
61+
api: EntityBreadcrumb,
62+
parentEntityMetadata?: EntityMetadata
63+
): (EntityBreadcrumb | Breadcrumb)[] {
6064
return parentEntityMetadata !== undefined
6165
? [
6266
{
63-
...api,
67+
[entityIdKey]: api.parentId as string,
68+
[entityTypeKey]: parentEntityMetadata.entityType,
6469
label: api.parentName as string,
6570
icon: parentEntityMetadata?.icon,
6671
url: parentEntityMetadata?.detailPath(api.parentId as string)
6772
},
6873
{
69-
...api,
7074
label: 'Endpoints',
7175
icon: this.apiEntityMetadata?.icon,
7276
url: parentEntityMetadata?.apisListPath?.(api.parentId as string)

projects/observability/src/shared/services/entity-breadcrumb/entity-breadcrumb.resolver.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Specification } from './../../graphql/model/schema/specifier/specificat
1212
import { ENTITY_GQL_REQUEST } from './../../graphql/request/handlers/entities/query/entity/entity-graphql-query-handler.service';
1313

1414
export abstract class EntityBreadcrumbResolver<T extends EntityBreadcrumb = EntityBreadcrumb>
15-
implements Resolve<Observable<EntityBreadcrumb>> {
15+
implements Resolve<Observable<Breadcrumb>> {
1616
private readonly specificationBuilder: SpecificationBuilder = new SpecificationBuilder();
1717

1818
public constructor(
@@ -21,7 +21,7 @@ export abstract class EntityBreadcrumbResolver<T extends EntityBreadcrumb = Enti
2121
protected readonly iconLookupService: EntityIconLookupService
2222
) {}
2323

24-
public abstract resolve(route: ActivatedRouteSnapshot): Promise<Observable<EntityBreadcrumb>>;
24+
public abstract resolve(route: ActivatedRouteSnapshot): Promise<Observable<Breadcrumb>>;
2525

2626
protected abstract getAttributeKeys(): string[];
2727

0 commit comments

Comments
 (0)