helpers.js 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. const zip = require('lodash.zip');
  2. const toStringArray = (array) => array.map((i) => i.toString());
  3. async function expectMembersMatch (map, keys, values) {
  4. const stringKeys = toStringArray(keys);
  5. const stringValues = toStringArray(values);
  6. expect(keys.length).to.equal(values.length);
  7. await Promise.all(keys.map(async (key) => expect(await map.contains(key)).to.equal(true)));
  8. expect(await map.length()).to.bignumber.equal(keys.length.toString());
  9. expect(toStringArray(await Promise.all(keys.map((key) => map.get(key))))).to.have.same.members(stringValues);
  10. // to compare key-value pairs, we zip keys and values
  11. // we also stringify pairs because this helper is used for multiple types of maps
  12. expect(
  13. await Promise.all(
  14. [...Array(keys.length).keys()].map(async (index) => {
  15. const { key, value } = await map.at(index);
  16. return [key.toString(), value.toString()];
  17. }),
  18. ),
  19. ).to.have.same.deep.members(zip(stringKeys, stringValues));
  20. }
  21. module.exports = {
  22. expectMembersMatch,
  23. };