# @appia librariry 

I choosed the name of the library in memory of my grandfather, who was a great man ! 
Now that i have been a bit emotional lets dive into it !

## Testing
Testing our react component is something that can be (sometimes) stressfull and painfull, let's face it. With this i tend to offer a set of usefful utils to facilitate the case of the unit tests with snapshot in react. 

I used [react-testing-library](https://github.com/kentcdodds/react-testing-library) to help me in the effort to offer something of quality and that is, under the hood, maintained by a large community. 

The packages in this repo will cover `redux` and `react` tests with / without `react-router`, `graphql` etc... 

## Getting started
**Every packages are indepedant** wich means you have to install them independently.

with yarn 
```bash
yarn add -D @appia/component-test-utils
etc...
```

with npm 
```bash
npm install --dev @appia/component-test-utils
etc...
```

## Examples

### component-test-utils
[package](https://github.com/Wizyma/Appia/blob/master/packages/component-test-utils/README.md)

```javascript
import { itTestsAllMutations } from '@appia/component-test-utils';

import MyComponent from '../';

const testSets = {
  component: MyComponent,
  mutations: [{
    name: 'with props',
    props: {
      name: 'Markdown',
      date: Date.now(),
    },
    state: {
      resume: 'Some stuffs going on here....'
    }
  }, {
    name: 'without state',
    props: {
      name: 'Markdown',
      date: Date.now(),
    },
  }, {
    name: 'with routing',
    path: '/markdown_path',
  }, {
    name: 'without props'
  }]
};
const { component, mutations } = testSets;

itTestsAllMutations(component, mutations);
```

### redux-test-utils
[package](https://github.com/Wizyma/Appia/blob/master/packages/redux-test-utils/README.md)

```javascript
import { itTestsCreateReducers } from '@appia/redux-test-utils';

import reducers, { initPage, initialState } from '..'; // supposed everything is there

// return a function to pass down props
const itShouldRetunsCorrectResults = itTestsCreateReducers(reducers, initialState);

// actual tests 
itShouldRetunsCorrectResults({
  action: initPage,
  mutations: [{
    name: 'initPage tests',
    props: {
      user: 'Markdown user'
    },
  }],
});
```

## Available packages
- [x] Test reducers / actions / initial state
- [x] Test react component with state / props
- [x] Test react component with aboves and react-router
- [ ] Test react component with aboves and Redux
- [ ] Test react component with aboves and graphql

## Contribute
Everyone is free to contribute or to ask for new features. If you have some issues do not hesitate to report it ! 
