2.1.1 • Published 7 years ago

@react-mvi/testing v2.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
7 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

7 years ago

2.1.0

7 years ago

2.0.109

7 years ago

2.0.108

7 years ago

2.0.107

7 years ago

2.0.106

7 years ago

2.0.105

7 years ago

2.0.104

7 years ago

2.0.103

7 years ago

2.0.102

7 years ago

2.0.101

7 years ago

2.0.100

7 years ago

2.0.99

7 years ago

2.0.98

7 years ago

2.0.97

7 years ago

2.0.96

7 years ago

2.0.95

7 years ago

2.0.94

7 years ago

2.0.93

7 years ago

2.0.92

7 years ago

2.0.91

7 years ago

2.0.90

7 years ago

2.0.89

7 years ago

2.0.88

7 years ago

2.0.87

7 years ago

2.0.86

7 years ago

2.0.85

7 years ago

2.0.84

7 years ago

2.0.83

7 years ago

2.0.82

7 years ago

2.0.81

7 years ago

2.0.80

7 years ago

2.0.79

7 years ago

2.0.78

7 years ago

2.0.77

7 years ago

2.0.76

7 years ago

2.0.75

7 years ago

2.0.74

7 years ago

2.0.73

7 years ago

2.0.72

7 years ago

2.0.71

7 years ago

2.0.70

7 years ago

2.0.69

7 years ago

2.0.68

7 years ago

2.0.67

7 years ago

2.0.66

7 years ago

2.0.65

7 years ago

2.0.64

7 years ago

2.0.63

7 years ago

2.0.62

7 years ago

2.0.61

7 years ago

2.0.60

7 years ago

2.0.59

7 years ago

2.0.58

7 years ago

2.0.57

7 years ago

2.0.56

7 years ago

2.0.55

7 years ago

2.0.54

7 years ago

2.0.53

7 years ago

2.0.52

7 years ago

2.0.51

7 years ago

2.0.50

7 years ago

2.0.49

7 years ago

2.0.48

7 years ago

2.0.47

7 years ago

2.0.46

7 years ago

2.0.45

7 years ago

2.0.44

7 years ago

2.0.43

7 years ago

2.0.42

7 years ago

2.0.41

7 years ago

2.0.40

7 years ago

2.0.39

7 years ago

2.0.38

7 years ago

2.0.37

7 years ago

2.0.36

7 years ago

2.0.35

7 years ago

2.0.34

7 years ago

2.0.33

7 years ago

2.0.32

7 years ago

2.0.31

7 years ago

2.0.30

7 years ago

2.0.29

7 years ago

2.0.28

7 years ago

2.0.27

7 years ago

2.0.26

7 years ago

2.0.25

7 years ago

2.0.24

7 years ago

2.0.23

7 years ago

2.0.22

7 years ago

2.0.21

7 years ago

2.0.20

7 years ago

2.0.19

7 years ago

2.0.18

8 years ago

2.0.17

8 years ago

2.0.16

8 years ago

2.0.15

8 years ago

2.0.14

8 years ago

2.0.13

8 years ago

2.0.12

8 years ago

2.0.11

8 years ago

2.0.10

8 years ago

2.0.9

8 years ago

2.0.8

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.1.22

8 years ago

1.1.21

8 years ago

1.1.20

8 years ago

1.1.19

8 years ago

1.1.18

8 years ago

1.1.17

8 years ago

1.1.16

8 years ago

1.1.15

8 years ago

1.1.14

8 years ago

1.1.13

8 years ago

1.1.12

8 years ago

1.1.11

8 years ago

1.1.10

8 years ago

1.1.9

8 years ago

1.1.8

8 years ago

1.1.7

8 years ago

1.1.6

8 years ago

1.1.5

8 years ago

1.1.4

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago

0.0.19

9 years ago

0.0.16

10 years ago

0.0.15

10 years ago

0.0.14

10 years ago

0.0.13

10 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago