audios.test.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. const { eq, ok, deepEq } = require('../../../helpers/assert');
  2. const { makeNetwork, makePeer } = require('../../../helpers/setup');
  3. const BLOB = '[file](&audio0000000000000000000000000000000000000000000.sha256)';
  4. describe('audios: publish + list', (t) => {
  5. t('A creates an audio, lists it', async () => {
  6. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  7. const r = await A.use('audios').createAudio(BLOB, ['music', 'electronic'], 'Track 1', 'description', '');
  8. ok(r && r.key);
  9. const list = await A.use('audios').listAll('all');
  10. eq(list.length, 1);
  11. eq(list[0].title, 'Track 1');
  12. deepEq(list[0].tags, ['music', 'electronic']);
  13. });
  14. t('A casts opinion on own audio (interesting)', async () => {
  15. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  16. const r = await A.use('audios').createAudio(BLOB, [], 'T', '', '');
  17. await A.use('audios').createOpinion(r.key, 'interesting');
  18. const list = await A.use('audios').listAll('all');
  19. ok(list[0].opinions.interesting >= 1);
  20. ok(list[0].opinions_inhabitants.includes(A.keypair.id));
  21. });
  22. t('A updates an audio (no opinions yet)', async () => {
  23. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  24. const r = await A.use('audios').createAudio(BLOB, [], 'Old', '', '');
  25. await A.use('audios').updateAudioById(r.key, BLOB, ['x'], 'New', 'newdesc', '');
  26. const list = await A.use('audios').listAll('all');
  27. eq(list[0].title, 'New');
  28. });
  29. t('A deletes audio (tombstone)', async () => {
  30. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  31. const r = await A.use('audios').createAudio(BLOB, [], 'T', '', '');
  32. await A.use('audios').deleteAudioById(r.key);
  33. const list = await A.use('audios').listAll('all');
  34. eq(list.length, 0);
  35. });
  36. t('B sees A audio (public content)', async () => {
  37. const net = makeNetwork(); const A = makePeer(net); const B = makePeer(net);
  38. A.setActor();
  39. await A.use('audios').createAudio(BLOB, [], 'Public Track', '', '');
  40. B.setActor();
  41. const list = await B.use('audios').listAll('all');
  42. eq(list.length, 1);
  43. eq(list[0].title, 'Public Track');
  44. });
  45. });