README.md

# nova_test

Testing library for [Nova](https://github.com/novaframework/nova) framework applications.

Provides an HTTP client for integration tests and a mock request builder for unit tests.

## Installation

Add `nova_test` to your test dependencies in `rebar.config`:

```erlang
{profiles, [
    {test, [
        {deps, [
            {nova_test, "~> 0.1"}
        ]}
    ]}
]}.
```

## Usage

### Integration tests

Start the application under test and make HTTP requests:

```erlang
nova_test:start(),
{200, Headers, Body} = nova_test:get("/api/users", #{}).
```

### Assertion macros

Include the header for convenient assertions:

```erlang
-include_lib("nova_test/include/nova_test.hrl").

?assertStatus(200, Response),
?assertJson(#{<<"name">> => <<"alice">>}, Response),
?assertHeader(<<"content-type">>, <<"application/json">>, Response).
```

### Mock requests

Build mock Cowboy requests for unit-testing controllers without HTTP:

```erlang
Req = nova_test_request:new(<<"GET">>, <<"/users">>),
Req2 = nova_test_request:set_body(Req, <<"{\"name\":\"alice\"}">>),
Result = my_controller:handle(Req2).
```

## License

MIT