2.1.1 • Published 6 years ago

@react-mvi/testing v2.1.1

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

6 years ago

2.1.0

6 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

8 years ago

0.0.16

9 years ago

0.0.15

9 years ago

0.0.14

9 years ago

0.0.13

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago