shared examples
let
factory bot

3 types of tests;
- unit
- request
- system
-- capybara

when you have request, you have
- methods; get put post delete
- helper methods; response, params, body, headers


It's all code.

Writing tests is the first big project I am trying to build. To know how to develop a test suite to test my features. This is so that the features I write will endure through the many changes that take place. for example, when i wrote my first backpack app, destroy all tasks - I loved that I had a counter of how many tasks I destroyed. I also enjoyed that I had the ability to highlight important tasks. Somewhere along the way I lost that feature. If I had tests or a test suite covering that, I would have caught that and fixed it along with whatever other feature I was working on.

Testing code involves tools, mentality, spectrum, and a methodology.

Tools:
- test runner
- test helpers
- test assertions

Methodology:
- Arrange
- Act
- Assert

Spectrum or Pyramid of tests:
- E2E
- Integration / Snapshot
- Unit

Mentality:
- Having an ability to write a failing test means you have the ability to see when and how this test is going to be run and which code it runs
- Knowing that some tests are just for you to think through the code yourself.