All files hooks.js

100% Statements 12/12
100% Branches 7/7
100% Functions 2/2
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32        6x 6x   42x   42x 36x   4x 16x     4x   4x         4x                
export default {
  rxdb: true,
  prototypes: {
    RxDatabase(proto) {
      const prevCollection = proto.collection;
      Object.assign(proto, {
        async collection(model, ...other) {
          const hooks = model && model.options && model.options.hooks;
 
          const collection = await prevCollection.call(this, model, other);
          if (!hooks) return collection;
 
          Object.keys(hooks).forEach((hook) => {
            if (hook !== 'preInsert') collection[hook](hooks[hook]);
            else {
              // Add collection arg to preInsert
              collection[hook](function(data) {
                // eslint-disable-next-line babel/no-invalid-this
                return hooks[hook].call(this, data, collection);
              });
            }
          });
 
          return collection;
        }
      });
    }
  },
  overwritable: {},
  hooks: {}
};