2.1.1 • Published 5 years ago

@react-mvi/testing v2.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

@react-mvi/testing

What's this?

@react-mvi/testing is test utility for @react-mvi.

Installation

npm i @react-mvi/testing -D

Usage

import {
  Prepared,
  prepareTest
} from '@react-mvi/testing';
import {
  Observable
} from 'rxjs/Rx';
import {
  AppStore
} from '../store';
import {
  AppIntent
} from '../../intents/intent';
import {
  expect
} from 'chai';


describe('AppStore', () => {
  let prepared: Prepared<{view: {greeting: Observable<string>}}>;
  beforeEach(() => {
    prepared = prepareTest(AppIntent, AppStore);
  });

  describe('initialize().view.greeting', () => {
    it('should send greet to stream.', done => {
      const { store, mock } = prepared;
      const { greeting } = store.initialize().view;
      greeting.skip(1).subscribe(v => {
        expect(v).to.be.eq('Hello World!');
        done();
      });
      mock.send('onMounted', {});
    });
  });
});

We support easy Store construction.

API

Prepared

// Response type of `prepareTest`.
type Prepared<V> = {
  stores: Store<V>[];
  store: Store<V>;
  mock: MockManipulator;
};

PrepareOptions

// Options type of `prepareTest`.
type PrepareOptions = {
  services?: { [key: string]: any };
  handlers?: { [key: string]: StateHandler };
  state?: any;
};

prepareTest

/**
 * Prepare Intent and Store.
 * @param IntentClass User defined Intent class that want to mocking.
 * @param StoreClass User deinfed Store class that wnat to testing.
 * @return Return mocked Intent and associated Store.
 */
function prepareTest<T extends IntentConstructor, U extends StoreConstructor<T, V>, V>(
  IntentClass: T,
  StoreClass: StoreConstructor<T, V> | StoreConstructor<T, V>[],
  opt: PrepareOptions = { state: {} }): Prepared<V>

Mocker

Mocking Intent class by replace all method with simple function that return Rx.Subject that controlled by MockManipulator.

MockManipulator

class MockManipulator {
 /**
  * Send value to Rx.Subject that is assosiated with Intent by Mocker.
  * @param name Method name of Intent.
  * @param data Parameter of Intent.
  */
  public send(name: string, data: any = {}): void

 /**
  * Static version of above `send`.
  */
  public static send(mock: Mocker, name: string, data: any = {})
}
2.1.1

5 years ago

2.1.0

5 years ago

2.0.109

6 years ago

2.0.108

6 years ago

2.0.107

6 years ago

2.0.106

6 years ago

2.0.105

6 years ago

2.0.104

6 years ago

2.0.103

6 years ago

2.0.102

6 years ago

2.0.101

6 years ago

2.0.100

6 years ago

2.0.99

6 years ago

2.0.98

6 years ago

2.0.97

6 years ago

2.0.96

6 years ago

2.0.95

6 years ago

2.0.94

6 years ago

2.0.93

6 years ago

2.0.92

6 years ago

2.0.91

6 years ago

2.0.90

6 years ago

2.0.89

6 years ago

2.0.88

6 years ago

2.0.87

6 years ago

2.0.86

6 years ago

2.0.85

6 years ago

2.0.84

6 years ago

2.0.83

6 years ago

2.0.82

6 years ago

2.0.81

6 years ago

2.0.80

6 years ago

2.0.79

6 years ago

2.0.78

6 years ago

2.0.77

6 years ago

2.0.76

6 years ago

2.0.75

6 years ago

2.0.74

6 years ago

2.0.73

6 years ago

2.0.72

6 years ago

2.0.71

6 years ago

2.0.70

6 years ago

2.0.69

6 years ago

2.0.68

6 years ago

2.0.67

6 years ago

2.0.66

6 years ago

2.0.65

6 years ago

2.0.64

6 years ago

2.0.63

6 years ago

2.0.62

6 years ago

2.0.61

6 years ago

2.0.60

6 years ago

2.0.59

6 years ago

2.0.58

6 years ago

2.0.57

6 years ago

2.0.56

6 years ago

2.0.55

6 years ago

2.0.54

6 years ago

2.0.53

6 years ago

2.0.52

6 years ago

2.0.51

6 years ago

2.0.50

6 years ago

2.0.49

6 years ago

2.0.48

6 years ago

2.0.47

6 years ago

2.0.46

6 years ago

2.0.45

6 years ago

2.0.44

6 years ago

2.0.43

6 years ago

2.0.42

6 years ago

2.0.41

6 years ago

2.0.40

6 years ago

2.0.39

6 years ago

2.0.38

6 years ago

2.0.37

6 years ago

2.0.36

6 years ago

2.0.35

6 years ago

2.0.34

6 years ago

2.0.33

6 years ago

2.0.32

6 years ago

2.0.31

6 years ago

2.0.30

6 years ago

2.0.29

6 years ago

2.0.28

6 years ago

2.0.27

6 years ago

2.0.26

6 years ago

2.0.25

6 years ago

2.0.24

6 years ago

2.0.23

6 years ago

2.0.22

6 years ago

2.0.21

6 years ago

2.0.20

6 years ago

2.0.19

6 years ago

2.0.18

7 years ago

2.0.17

7 years ago

2.0.16

7 years ago

2.0.15

7 years ago

2.0.14

7 years ago

2.0.13

7 years ago

2.0.12

7 years ago

2.0.11

7 years ago

2.0.10

7 years ago

2.0.9

7 years ago

2.0.8

7 years ago

2.0.7

7 years ago

2.0.6

7 years ago

2.0.5

7 years ago

2.0.4

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.1.22

7 years ago

1.1.21

7 years ago

1.1.20

7 years ago

1.1.19

7 years ago

1.1.18

7 years ago

1.1.17

7 years ago

1.1.16

7 years ago

1.1.15

7 years ago

1.1.14

7 years ago

1.1.13

7 years ago

1.1.12

7 years ago

1.1.11

7 years ago

1.1.10

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago

0.0.19

7 years ago

0.0.16

8 years ago

0.0.15

8 years ago

0.0.14

8 years ago

0.0.13

8 years ago

0.0.12

8 years ago

0.0.11

8 years ago

0.0.10

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago