votes.test.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. const { eq, ok, throwsAsync } = require('../../helpers/assert');
  2. const { makeNetwork, makePeer } = require('../../helpers/setup');
  3. describe('votes: create + cast + list', (t) => {
  4. t('A proposes a vote', async () => {
  5. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  6. const r = await A.use('votes').createVote('Should we?', '2026-12-31', ['YES', 'NO'], ['gov']);
  7. ok(r);
  8. const list = await A.use('votes').listAll('all');
  9. ok(list.length >= 1);
  10. const vote = list.find(v => v.question === 'Should we?');
  11. ok(vote);
  12. });
  13. t('A casts vote on own proposal', async () => {
  14. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  15. const r = await A.use('votes').createVote('Q?', '2026-12-31', ['YES', 'NO']);
  16. await A.use('votes').voteOnVote(r.key, 'YES');
  17. const v = await A.use('votes').getVoteById(r.key);
  18. ok(v.totalVotes >= 1);
  19. });
  20. t('A casts opinion on vote', async () => {
  21. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  22. const r = await A.use('votes').createVote('Q?', '2026-12-31', ['YES', 'NO']);
  23. await A.use('votes').createOpinion(r.key, 'interesting');
  24. });
  25. t('B can vote on A proposal', async () => {
  26. const net = makeNetwork(); const A = makePeer(net); const B = makePeer(net);
  27. A.setActor();
  28. const r = await A.use('votes').createVote('Q?', '2026-12-31', ['YES', 'NO']);
  29. B.setActor();
  30. await B.use('votes').voteOnVote(r.key, 'NO');
  31. const v = await B.use('votes').getVoteById(r.key);
  32. ok(v.totalVotes >= 1);
  33. });
  34. });