Skip to content

Commit cf1c49c

Browse files
authored
refactor: moving entity navigation handler to use modelinject (#305)
1 parent 568ed53 commit cf1c49c

File tree

4 files changed

+35
-59
lines changed

4 files changed

+35
-59
lines changed

projects/observability/src/shared/dashboard/interactions/entity/handler-service/dashboard-entity-navigation-handler.service.test.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

projects/observability/src/shared/dashboard/interactions/entity/handler-service/dashboard-entity-navigation-handler.service.ts

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { createModelFactory } from '@hypertrace/dashboards/testing';
2+
import { mockProvider } from '@ngneat/spectator/jest';
3+
import { Entity, entityIdKey, entityTypeKey, ObservabilityEntityType } from '../../../../graphql/model/schema/entity';
4+
import { EntityNavigationService } from '../../../../services/navigation/entity/entity-navigation.service';
5+
import { EntityNavigationHandlerModel } from './entity-navigation-handler.model';
6+
7+
describe('Entity Navigation Handler Model', () => {
8+
const entity: Entity = {
9+
[entityIdKey]: 'test-id',
10+
[entityTypeKey]: ObservabilityEntityType.Api
11+
};
12+
13+
const buildModel = createModelFactory({
14+
providers: [
15+
mockProvider(EntityNavigationService, {
16+
navigateToEntity: jest.fn()
17+
})
18+
]
19+
});
20+
21+
test('calls navigateToEntity with correct parameters', () => {
22+
const spectator = buildModel(EntityNavigationHandlerModel);
23+
const navService = spectator.get(EntityNavigationService);
24+
25+
spectator.model.execute(entity);
26+
expect(navService.navigateToEntity).toHaveBeenLastCalledWith(entity);
27+
});
28+
});

projects/observability/src/shared/dashboard/interactions/entity/model/entity-navigation-handler.model.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import { InteractionHandler } from '@hypertrace/distributed-tracing';
2-
import { Model, ModelEventPublisher } from '@hypertrace/hyperdash';
3-
import { Observable, of, Subject } from 'rxjs';
2+
import { Model } from '@hypertrace/hyperdash';
3+
import { ModelInject } from '@hypertrace/hyperdash-angular';
4+
import { Observable, of } from 'rxjs';
45
import { Entity } from '../../../../graphql/model/schema/entity';
5-
import { DashboardEntityNavigationHandlerService } from '../handler-service/dashboard-entity-navigation-handler.service';
6+
import { EntityNavigationService } from '../../../../services/navigation/entity/entity-navigation.service';
67

78
@Model({
89
type: 'entity-navigation-handler'
910
})
1011
export class EntityNavigationHandlerModel implements InteractionHandler {
11-
@ModelEventPublisher(DashboardEntityNavigationHandlerService)
12-
protected readonly navigate$: Subject<Entity> = new Subject();
12+
@ModelInject(EntityNavigationService)
13+
private readonly entityNavService!: EntityNavigationService;
1314

1415
public execute(entity: Entity): Observable<void> {
15-
this.navigate$.next(entity);
16+
this.entityNavService.navigateToEntity(entity);
1617

1718
return of();
1819
}

0 commit comments

Comments
 (0)