jest-plugin-its
Version:
'subject' and 'its' implementations from RSpec in Jest.
1 lines • 1.37 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});var _invariant=require('invariant');var _invariant2=_interopRequireDefault(_invariant);var _jestPluginSet=require('jest-plugin-set');var _jestPluginSet2=_interopRequireDefault(_jestPluginSet);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var scope=global;var evaluateMethod=function evaluateMethod(subject,method){var tokens=method.split('.');var caller=subject;var value=subject;tokens.forEach(function(token){caller=value;value=value[token];(0,_invariant2.default)(value!==undefined,`Undefined method: '${token}' for subject: ${caller}.`);if(typeof value==='function'){value=value.call(caller);}});return value;};var its=function its(method,expectation){describe(`#${method}`,function(){(0,_jestPluginSet2.default)('__itsSubject',function(){var subject=scope.__subject;(0,_invariant2.default)(subject!==undefined,`Subject is not defined. Make sure you set a subject using: `+`'subject(() => someVariable);'`);return evaluateMethod(subject,method);});(0,_jestPluginSet2.default)('isExpected',function(){return expect(scope.__itsSubject);});it(`is correct`,function(){var result=expectation.call(scope);(0,_invariant2.default)(typeof result==='undefined',`Expectation did not call 'isExpected'. Test did not validate `+`anything.`);});});};exports.default=its;