feat(signals,events)!: migrate signals to use events service
+ allow defining event paylod in events service Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
@@ -16,12 +16,12 @@
|
||||
import { DefaultSignalService } from './DefaultSignalService';
|
||||
|
||||
describe('DefaultSignalService', () => {
|
||||
const mockEventBroker = {
|
||||
const mockEvents = {
|
||||
publish: jest.fn(),
|
||||
subscribe: jest.fn(),
|
||||
};
|
||||
|
||||
const service = DefaultSignalService.create({ eventBroker: mockEventBroker });
|
||||
const service = DefaultSignalService.create({ events: mockEvents });
|
||||
|
||||
it('should publish signal', () => {
|
||||
const signal = {
|
||||
@@ -30,7 +30,7 @@ describe('DefaultSignalService', () => {
|
||||
message: { msg: 'hello world' },
|
||||
};
|
||||
service.publish(signal);
|
||||
expect(mockEventBroker.publish).toHaveBeenCalledWith({
|
||||
expect(mockEvents.publish).toHaveBeenCalledWith({
|
||||
topic: 'signals',
|
||||
eventPayload: signal,
|
||||
});
|
||||
|
||||
@@ -13,22 +13,21 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { EventBroker } from '@backstage/plugin-events-node';
|
||||
import { EventsService } from '@backstage/plugin-events-node';
|
||||
import { SignalPayload, SignalServiceOptions } from './types';
|
||||
import { SignalService } from './SignalService';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
|
||||
/** @public */
|
||||
export class DefaultSignalService implements SignalService {
|
||||
// TODO: Remove this to be optional when events-backend has eventBroker as service
|
||||
private eventBroker?: EventBroker;
|
||||
private events: EventsService;
|
||||
|
||||
static create(options: SignalServiceOptions) {
|
||||
return new DefaultSignalService(options);
|
||||
}
|
||||
|
||||
private constructor(options: SignalServiceOptions) {
|
||||
({ eventBroker: this.eventBroker } = options);
|
||||
({ events: this.events } = options);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,7 +37,7 @@ export class DefaultSignalService implements SignalService {
|
||||
async publish<TMessage extends JsonObject = JsonObject>(
|
||||
signal: SignalPayload<TMessage>,
|
||||
) {
|
||||
await this.eventBroker?.publish({
|
||||
await this.events.publish({
|
||||
topic: 'signals',
|
||||
eventPayload: signal,
|
||||
});
|
||||
|
||||
@@ -19,6 +19,7 @@ import {
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { DefaultSignalService } from './DefaultSignalService';
|
||||
import { SignalService } from './SignalService';
|
||||
import { eventsServiceRef } from '@backstage/plugin-events-node';
|
||||
|
||||
/** @public */
|
||||
export const signalService = createServiceRef<SignalService>({
|
||||
@@ -28,11 +29,10 @@ export const signalService = createServiceRef<SignalService>({
|
||||
createServiceFactory({
|
||||
service,
|
||||
deps: {
|
||||
// TODO: EventBroker. It is optional for now but it's actually required so waiting for the new backend system
|
||||
// for the events-backend for this to work.
|
||||
events: eventsServiceRef,
|
||||
},
|
||||
factory({}) {
|
||||
return DefaultSignalService.create({});
|
||||
factory({ events }) {
|
||||
return DefaultSignalService.create({ events });
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import { EventBroker } from '@backstage/plugin-events-node';
|
||||
import { EventsService } from '@backstage/plugin-events-node';
|
||||
import { JsonObject } from '@backstage/types';
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export type SignalServiceOptions = {
|
||||
eventBroker?: EventBroker;
|
||||
events: EventsService;
|
||||
};
|
||||
|
||||
/** @public */
|
||||
|
||||
Reference in New Issue
Block a user