Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

3 anni fa
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
  2. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  3. function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  4. /* eslint-disable no-param-reassign */
  5. var NO_EXIST = {
  6. __NOT_EXIST: true
  7. };
  8. export function spyElementPrototypes(elementClass, properties) {
  9. var propNames = Object.keys(properties);
  10. var originDescriptors = {};
  11. propNames.forEach(function (propName) {
  12. var originDescriptor = Object.getOwnPropertyDescriptor(elementClass.prototype, propName);
  13. originDescriptors[propName] = originDescriptor || NO_EXIST;
  14. var spyProp = properties[propName];
  15. if (typeof spyProp === 'function') {
  16. // If is a function
  17. elementClass.prototype[propName] = function spyFunc() {
  18. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  19. args[_key] = arguments[_key];
  20. }
  21. return spyProp.call.apply(spyProp, [this, originDescriptor].concat(args));
  22. };
  23. } else {
  24. // Otherwise tread as a property
  25. Object.defineProperty(elementClass.prototype, propName, _objectSpread({}, spyProp, {
  26. set: function set(value) {
  27. if (spyProp.set) {
  28. return spyProp.set.call(this, originDescriptor, value);
  29. }
  30. return originDescriptor.set(value);
  31. },
  32. get: function get() {
  33. if (spyProp.get) {
  34. return spyProp.get.call(this, originDescriptor);
  35. }
  36. return originDescriptor.get();
  37. },
  38. configurable: true
  39. }));
  40. }
  41. });
  42. return {
  43. mockRestore: function mockRestore() {
  44. propNames.forEach(function (propName) {
  45. var originDescriptor = originDescriptors[propName];
  46. if (originDescriptor === NO_EXIST) {
  47. delete elementClass.prototype[propName];
  48. } else if (typeof originDescriptor === 'function') {
  49. elementClass.prototype[propName] = originDescriptor;
  50. } else {
  51. Object.defineProperty(elementClass.prototype, propName, originDescriptor);
  52. }
  53. });
  54. }
  55. };
  56. }
  57. export function spyElementPrototype(Element, propName, property) {
  58. return spyElementPrototypes(Element, _defineProperty({}, propName, property));
  59. }
  60. /* eslint-enable */