expectEvent.js 953 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const BigNumber = web3.BigNumber;
  2. const should = require('chai')
  3. .use(require('chai-bignumber')(BigNumber))
  4. .should();
  5. function inLogs (logs, eventName, eventArgs = {}) {
  6. const event = logs.find(function (e) {
  7. if (e.event === eventName) {
  8. for (const [k, v] of Object.entries(eventArgs)) {
  9. contains(e.args, k, v);
  10. }
  11. return true;
  12. }
  13. });
  14. should.exist(event);
  15. return event;
  16. }
  17. async function inTransaction (tx, eventName, eventArgs = {}) {
  18. const { logs } = await tx;
  19. return inLogs(logs, eventName, eventArgs);
  20. }
  21. function contains (args, key, value) {
  22. if (isBigNumber(args[key])) {
  23. args[key].should.be.bignumber.equal(value);
  24. } else {
  25. args[key].should.be.equal(value);
  26. }
  27. }
  28. function isBigNumber (object) {
  29. return object.isBigNumber ||
  30. object instanceof BigNumber ||
  31. (object.constructor && object.constructor.name === 'BigNumber');
  32. }
  33. module.exports = {
  34. inLogs,
  35. inTransaction,
  36. };