@hirez_io/lembas v0.0.9
@hirez_io/lembas 🍞✨
This library makes Smoke testing's DB seeding easier!
Table of Contents
Installation
yarn add -D @hirez_io/lembas
or
npm install -D @hirez_io/lembasTHE PROBLEM:
Smoke tests require a real database to provide the highest confidence possible.
Populating the database with data (or "DB seeding") is slow, that's why developers / testers usually just use the same DB data between all tests and "clean up" after their changes.
This strategy makes our smoke tests more fragile and less maintainable.
THE SOLUTION: Lembas

If the smoke test is the "Critical User Journey".. we need food for this journey.
And "Lembas" (the Elvish way-bread) is the best food we can get for our journey (god I'm a nerd 😅🤦♂️)
How does it work?
- You write the setup code for the smoke test (sending ajax requests to create entities) 
- You wrap with with a - lembasWrapper()
- Next time you'll run the same test it'll skip the setup code, and will populate the DB initial state from the cache. 

Lembas's Benefits:
- ✅ Repeatable - Bugs are easier to reproduce because the "snapshots" are committed to git. 
- ✅ Minimal - Only create the data you need for the test, no need for giant db dumps from production. 
- ✅ Faster - Restoring from cache is faster than writing data via the server layer. 
- ✅ Flexible - Write your own "backup and restore" logic that fits your stack. 
Usage
In order to setup lembas you'll need a lembas.json file and 
Setup the lembas.json configuration file
lembas-hooks/ folder with 3 files: empty.ts, restore.ts and snapshot.ts
lembasWrapper( asyncSetupFunction )
Where asyncSetupFunction is where your setup logic located.
It must be an async function (return a promise)
Example:
import {lembasWrapper} from '@hirez_io/lembas`;
export async function setup(){
  return lembasWrapper( async () => {
  })
}emptyData()
Contributing
Want to contribute? Yayy! 🎉
Please read and follow our Contributing Guidelines to learn what are the right steps to take before contributing your time, effort and code.
Thanks 🙏
Code Of Conduct
Be kind to each other and please read our code of conduct.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
License
MIT