@ovotech/blaise
Version:
An API to generate mock payloads for @ovotech/castle using @ovotech/avro-mock-generator
74 lines (73 loc) • 2.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultPayload = void 0;
const avro_mock_generator_1 = require("@ovotech/avro-mock-generator");
const merge = require("lodash.merge");
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/explicit-function-return-type
const noop = () => { };
/* eslint-disable @typescript-eslint/no-explicit-any */
exports.defaultPayload = {
eachMessage: {
topic: 'blaise-default-topic',
partition: 0,
producer: noop,
},
eachBatch: {
batch: {
topic: '',
highWatermark: '',
partition: 0,
isEmpty: noop,
firstOffset: noop,
lastOffset: noop,
offsetLag: noop,
offsetLagLow: noop,
},
isStale: noop,
isRunning: noop,
heartbeat: noop,
uncommittedOffsets: noop,
producer: noop,
resolveOffset: noop,
commitOffsetsIfNecessary: noop,
},
message: {
schema: [],
key: Buffer.from('blaise-default-key'),
value: {},
timestamp: Date.now().toString(),
size: 3,
attributes: 3,
offset: '1',
},
avro: {
schema: 'boolean',
},
generator: avro_mock_generator_1.default,
};
/* eslint-enable @typescript-eslint/no-explicit-any */
const buildBlaise = (defaults = exports.defaultPayload) => {
const blaise = (newDefaults) => {
var _a;
if ((_a = newDefaults === null || newDefaults === void 0 ? void 0 : newDefaults.avro) === null || _a === void 0 ? void 0 : _a.seed) {
newDefaults.generator = avro_mock_generator_1.Seeded(newDefaults.avro.seed);
}
return buildBlaise(merge({}, defaults, newDefaults));
};
blaise.default = blaise;
blaise.pickUnion = (pickUnion) => blaise({ avro: { pickUnion } });
blaise.seed = (seed) => blaise({ avro: { seed } });
blaise.getDefault = () => defaults;
blaise.message = (message) => merge({
value: defaults.generator(defaults.avro.schema, defaults.avro),
}, defaults.message, message);
blaise.eachMessage = (message) => ({
...defaults.eachMessage,
message: blaise.message(message),
});
blaise.eachBatch = (messages = []) => merge({}, defaults.eachBatch, {
batch: { messages },
});
return blaise;
};
exports.default = buildBlaise();