UNPKG

@dolittle/sdk.projections

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

58 lines (44 loc) 2.19 kB
// Copyright (c) Dolittle. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. import { ClientReadableStream, ClientUnaryCall, InterceptingCall, ServiceError } from '@grpc/grpc-js'; import { EventEmitter } from 'stream'; import sinon, { stubInterface } from 'ts-sinon'; import { Logger } from 'winston'; import { Claims, CorrelationId, Environment, ExecutionContext, MicroserviceId, TenantId, Version } from '@dolittle/sdk.execution'; import { ProjectionsClient } from '@dolittle/contracts/Runtime/Projections/Store_grpc_pb'; import { GetAllResponse, GetOneResponse } from '@dolittle/contracts/Runtime/Projections/Store_pb'; import { IProjectionReadModelTypes } from '../IProjectionReadModelTypes'; import { ProjectionReadModelTypes } from '../ProjectionReadModelTypes'; export default { get an_execution_context(): ExecutionContext { return new ExecutionContext( MicroserviceId.notApplicable, TenantId.unknown, Version.notSet, Environment.undetermined, CorrelationId.system, Claims.empty, ); }, get a_logger(): Logger { return stubInterface<Logger>(); }, get empty_read_model_types(): IProjectionReadModelTypes { return new ProjectionReadModelTypes(); }, projections_client_with_get_one_response(response?: GetOneResponse, error?: ServiceError): ProjectionsClient { const projections_client = stubInterface<ProjectionsClient>(); projections_client.getOne.callsFake((_, __, ___, callback) => { setTimeout(() => callback(error ?? null, response as any), 0); return new EventEmitter() as ClientUnaryCall; }); return projections_client; }, get projections_client_and_get_all_stream(): [ProjectionsClient, ClientReadableStream<GetAllResponse>] { const getAllStream = new EventEmitter() as ClientReadableStream<GetAllResponse>; const projectionsClient = stubInterface<ProjectionsClient>({ getAllInBatches: getAllStream, }); return [projectionsClient, getAllStream]; }, };