[Reference](/docs) · by task

# Test it

Tests beside the code, a real database per test, a controlled clock and provider fakes. Read them in this order. Each page links to the pages around it.

1.  [Where tests live](/docs/where-tests-live)
    
    A test sits beside the file it tests, in a file named `<name>.test.jadpo`.
    
2.  [Writing a test](/docs/writing-a-test)
    
    A test is a sentence that names it, then a body of ordinary code.
    
3.  [Kinds of test](/docs/kinds-of-test)
    
    Jadpo works out a test's kind from what it calls, so you don't declare it.
    
4.  [Acting as a user](/docs/acting-as-a-user)
    
    An action receives its caller, the person or service signed in, as a typed parameter (The principal).
    
5.  [Controlling time](/docs/controlling-time)
    
    A test never waits for real time.
    
6.  [Fakes for integrations](/docs/fakes-for-integrations)
    
    A test never reaches a real provider, the outside service an integration talks to.
    
7.  [Assertions](/docs/assertions)
    
    `assert condition` fails the test when the condition is false.
    
8.  [Running tests](/docs/running-tests)
    
    `jadpo test` runs every test in the project.
    
9.  [The test database](/docs/the-test-database)
    
    Each test gets its own database at the latest migration, empty except for what its fixtures create.
