# Trackunit react-test-setup

Testing utility package that provides common setup functions for React applications. This library contains general setup files necessary for tests to run, which are not app-specific.

This library is exposed publicly for use in the Trackunit [Iris App SDK](https://www.npmjs.com/package/@trackunit/iris-app).

To browse all avaliable components visit the [Design System](https://design.iris.trackunit.com/).

For more info and a full guide on Iris App SDK Development, please visit our [Developer Hub](https://developers.trackunit.com/).

## Usage

### Convenience setup functions

You can choose between different levels of setup based on your needs:

#### Basic mocks (lightweight)

Use the `setupBasicMocks` function to set up only essential mocks without external library dependencies:

```javascript
// In your vite setup file (e.g., vite.setup.js)
import { setupBasicMocks } from '@trackunit/react-test-setup';

setupBasicMocks();
```

This sets up Canvas, IntersectionObserver, MatchMedia, ResizeObserver, timers, and Web Streams mocks - perfect for most basic React testing needs.

#### Default mocks (recommended)

Use the `setupDefaultMocks` function to set up a balanced set of mocks that work for most React applications:

```javascript
// In your vite setup file (e.g., vite.setup.js)
import { setupDefaultMocks } from '@trackunit/react-test-setup';

setupDefaultMocks();
```

This includes everything in `setupBasicMocks` plus React Testing Library and translations mocks - ideal for most React applications using i18n.

#### All mocks (comprehensive)

Use the `setupAllMocks` function to set up all available mocks in one call:

```javascript
// In your vite setup file (e.g., vite.setup.js)
import { setupAllMocks } from '@trackunit/react-test-setup';

setupAllMocks();
```

This includes everything in `setupDefaultMocks` plus mocks for Google Maps, React Helmet, React Virtualized, and TanStack Virtual.

### Individual setup functions

If you need more control, you can use the individual setup functions:

```javascript
// In your jest setup file
import {
  setupCanvasMock,
  setupFailOnConsole,
  setupGoogleMaps,
  // ... other setup functions as needed
} from '@trackunit/react-test-setup';

// Set up only what you need
setupCanvasMock();
setupFailOnConsole();
// ... etc.
```

All setup functions are thoroughly documented with JSDoc comments that explain their purpose and usage.

## Development

At this point this library is only developed by Trackunit Employees.
For development related information see the [development readme](https://github.com/Trackunit/manager/blob/master/libs/react/components/DEVELOPMENT.md).

## Trackunit

This package was developed by Trackunit ApS.
Trackunit is the leading SaaS-based IoT solution for the construction industry, offering an ecosystem of hardware, fleet management software & telematics.

![The Trackunit logo](https://trackunit.com/wp-content/uploads/2022/03/top-logo.svg)