mongoose_record_replay
TypeScript icon, indicating that this package has built-in type declarations

0.0.14 • Public • Published

mongoose_record_replay Build StatusCoverage Status

readonly mongoose drop in for testing ( and recording test data )

Allows to record query results,

usage

var mongoose = require('mongoose_record_replay').instrumentMongoose(require('mongoose'));

extended usage:

Behaviour can be set by environment variables ( see below) or explicitly via paramter:

var mode = 'REPLAY';
if (process.env.MYSWITCH) {
  mode = 'RECORD';
}
var mongoose = require('mongoose_record_replay').instrumentMongoose(require('mongoose'),
  'node_modules/mgnlq_testmodel_replay/mgrecrep/',
  mode);

var mongoose = require('mongoose_record_replay').instrumentMongoose(require('mongoose'));




currently supported methods:

1. <Model>.find().lean().exec().then (...)#
2. <Model>.aggregate().then( ... )
3. <Model>.distinct( ).then( ... )


# Modes

The operational mode is controlled by the environment variable
``MONGO_RECORD_REPLAY``

## Original mongoose

## Replaying  (``set MONGO_RECORD_REPLAY=REPLAY``)

 Connection establishing is suppressed!

 operation <Model>.find, <Model>.aggregate, <Model>.distinct
 return there recorded result ( if found ) or an
 ENOENT message on the file

 (set debug=mongoose_rec* ) to get more infomration


## Recording  (``set MONGO_RECORD_REPLAY=RECORD``)

Queries are executed against mongoose,
1.  query input
    * ``<modelname>``,
    * `<operation> (e.g. `find, aggregate, distinct`),
    * `<query/pipeline>` argumetns are recorded )
and
2. Result is recorded and stored.



## Recording location



On recording, files are created in (default locattion "mgrecrep/", can be controlled )

    1. mgrecrep/queries.json
        List of queries recorded
        could be used to refire them and update with new data.
        (=> nice feature)

    2. mgrecrep/data/<uniqueid>



The default folder can be changed via environment variables
``MONGO_RECORD_REPLAY_PATH``:

The variable value shall end with a terminating '/' !


    1. default mgrecrep
    2. Environment variable ``MONGO_RECORD_REPLAY_FOLDER``, e.g.
       ```
       process.env.MONGO_RECORD_REPLAY_FOLDER= mgrecrep/
       set MONGO_RECORD_REPLOAY_FOLDER=mypath/myfolder/
       export MONGO_RECORD_REPLAY_FOLRDER  mypath/myfolder/
       ```


    3. explicit path as 2nd argument to ``intrumentMongoose``

        ```javascript
        const recordFolder = './myfolder/';
        var mongoose = require('mongoose_record_replay').instrumentMongoose(require('mongoose'), recordFolder);
        ```



# Caveats / Known issues

 1. Beware: JSON serialization destroys differences between null and undefined etc.
 2. Currently returning full model documents is not supported,
    only the lean().exec promise chain

# Extends

feel free to record issue and provide pull request

Readme

Keywords

Package Sidebar

Install

npm i mongoose_record_replay

Weekly Downloads

2

Version

0.0.14

License

MIT

Unpacked Size

62.4 kB

Total Files

10

Last publish

Collaborators

  • jfseb