> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackerjs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# stacker/testing

> Provides utilities for testing handlers.

## `test()`

Defines a test case.

```TypeScript theme={null}
test(name: string, callback: () => void): void
```

* **name**: The name of the test case.
* **callback**: The callback function containing the test logic.

## Examples

```typescript theme={null}
import { type GitHubEvent, GitHubReasons } from "stacker/github";
import { test, equal, evalGitHubEvent } from "stacker/testing";

// Base event for tests
const baseEvent: GitHubEvent = {
  title: "Issue",
  url: "https://github.com/placeholder/placeholder/issues/1",
  reason: "",
  type: "Issue",
  repository: {
    fullName: "placeholder/placeholder",
    name: "placeholder",
    url: "https://github.com/placeholder/placeholder",
    private: false,
    description: "A placeholder repository",
    fork: false,
    owner: {
      login: "placeholder",
      url: "https://github.com/placeholder",
      type: "User",
      siteAdmin: false
    }
  }
};

test("Grafana repository with Subscribed reason", () => {
  const event: GitHubEvent = {
    ...baseEvent,
    reason: GitHubReasons.Subscribed,
    repository: {
      ...baseEvent.repository,
      owner: { ...baseEvent.repository.owner, login: "grafana" },
      fullName: "grafana/k6",
      name: "k6"
    }
  };
  const { stacks } = evalGitHubEvent(event);
  equal(stacks, ["work"]);
});
```

## Functions

### `evalGitHubEvent()`

Will run any event you pass thought your handlers and return the result.

```TypeScript theme={null}
evalGitHubEvent(event: GitHubEvent): GitHubEvalResult
```

* **event**: The GitHub event to evaluate.

### `equal()`

Asserts that two values are equal.

```TypeScript theme={null}
equal(a: any, b: any): void
```

* **a**: The first value.
* **b**: The second value.

### `genGitHubEvent()`

Wrapper that can help generate GitHub notifications for testing.

```TypeScript theme={null}
genGitHubEvent(params: { title: string; reason: string; type: string; repository: { name: string; owner: string; isPrivate: boolean; isFork: boolean; } }): GitHubEvent
```

* **params**:
  * **title**: The title of the event.
  * **reason**: The reason for the event.
  * **type**: The type of the event.
  * **repository**:
    * **name**: The name of the repository.
    * **owner**: The owner of the repository.
    * **isPrivate**: Whether the repository is private.
    * **isFork**: Whether the repository is a fork.

Wrapper that can help evaluate GitHub notifications for testing

## Types

### `GitHubEvalResult`

Represents the result of evaluating a GitHub event.

```typescript theme={null}
interface GitHubEvalResult {
    stacks: string[];
}
```
