Blaise
An API to generate mock payloads for @ovotech/castle using @ovotech/avro-mock-generator
Usage
Concept
blaise()
is mostly just a chainable deepMerge, with utilities to generate messages and payloads once everything is configured.
Calling blaise()
returns a new version of blaise, preloaded with the provided defaults, without mutating the parent.
examples/chain.ts
import blaise from '@ovotech/blaise';
const withAvro = blaise({ avro: { schema } });
const coffee = withAvro({ avro: { pickUnion: ['coffee'] } });
const tea = withAvro({ avro: { pickUnion: ['tea'] } });
coffee.getDefault();
tea.getDefault();
Generate an Avro Message
examples/avro-message.ts
import blaise from '@ovotech/blaise';
const schema: avsc.RecordType = {
type: 'record',
name: '',
fields: [{ name: 'anInt', type: 'int' }],
};
type MyType = { anInt: number };
blaise<MyType>({ avro: { schema } }).message();
You can also override the message, either as part of the default or when calling the function
examples/avro-message-override.ts
import blaise from '@ovotech/blaise';
const schema: avsc.RecordType = {
};
const brewCoffee = blaise({
avro: { schema },
message: { value: { type: 'coffee' } },
});
brewCoffee.message({ value: { with: 'milk' } });
Generate a CastleEachMessagePayload
examples/each-message.ts
import blaise from '@ovotech/blaise'
const schema: avsc.RecordType = {
};
blaise({ avro: { schema }).eachMessage();
Generate a CastleEachBatchPayload
examples/each-batch.ts
import blaise from '@ovotech/blaise'
const schema: avsc.RecordType = {
};
const makeMessage = blaise({ avro: { schema })
blaise.eachBatch([makeMessage()]);
Deterministic generation
Make use of the seed
options to use a deterministic random generator instead of true randomness.
Each call to .defaults()
or .seed()
with a seed will reset the randomness.
Running the tests
You can run the tests with:
yarn test
Coding style (linting, etc) tests
Style is maintained with prettier and eslint
yarn lint
Deployment
Deployment is preferment by lerna automatically on merge / push to main, but you'll need to bump the package version numbers yourself. Only updated packages with newer versions will be pushed to the npm registry.
Contributing
Have a bug? File an issue with a simple example that reproduces this so we can take a look & confirm.
Want to make a change? Submit a PR, explain why it's useful, and make sure you've updated the docs (this file) and the tests.
License
This project is licensed under Apache 2 - see the LICENSE file for details
What does the name mean?
It's just a fun pun. Take a Castle, make a 'mock' version of it, and you get Bristol's Blaise Castle