cv.test.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. const { eq, ok } = require('../../helpers/assert');
  2. const { makeNetwork, makePeer } = require('../../helpers/setup');
  3. describe('cv: create + read', (t) => {
  4. t('A creates own CV', async () => {
  5. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  6. const r = await A.use('cv').createCV({
  7. name: 'Alice',
  8. description: 'developer',
  9. personalSkills: 'javascript,nodejs',
  10. personalExperiences: 'oasis',
  11. educationExperiences: '',
  12. educationalSkills: '',
  13. languages: 'en,es',
  14. professionalExperiences: '',
  15. professionalSkills: '',
  16. oasisExperiences: '',
  17. oasisSkills: '',
  18. location: 'remote',
  19. preferences: 'open-source'
  20. }, null);
  21. ok(r);
  22. const cv = await A.use('cv').getCVByUserId(A.keypair.id);
  23. ok(cv);
  24. eq(cv.name, 'Alice');
  25. });
  26. });
  27. describe('cv: visibility (public / hidden)', (t) => {
  28. const makeData = (visibility) => ({
  29. name: 'X', description: 'd', personalSkills: '', personalExperiences: '',
  30. educationExperiences: '', educationalSkills: '', languages: '', professionalExperiences: '',
  31. professionalSkills: '', oasisExperiences: '', oasisSkills: '', location: 'remote',
  32. preferences: 'REMOTE WORKING', visibility
  33. });
  34. t('default visibility is PUBLIC', async () => {
  35. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  36. await A.use('cv').createCV(makeData(undefined), null);
  37. const cv = await A.use('cv').getCVByUserId(A.keypair.id);
  38. eq(cv.visibility, 'PUBLIC');
  39. });
  40. t('HIDDEN CV is visible to author', async () => {
  41. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  42. await A.use('cv').createCV(makeData('HIDDEN'), null);
  43. const cv = await A.use('cv').getCVByUserId(A.keypair.id);
  44. ok(cv);
  45. eq(cv.visibility, 'HIDDEN');
  46. });
  47. t('HIDDEN CV returns null for non-author viewer', async () => {
  48. const net = makeNetwork(); const A = makePeer(net); const B = makePeer(net);
  49. A.setActor();
  50. await A.use('cv').createCV(makeData('HIDDEN'), null);
  51. B.setActor();
  52. eq(await B.use('cv').getCVByUserId(A.keypair.id), null);
  53. });
  54. t('PUBLIC CV is visible to non-author viewer', async () => {
  55. const net = makeNetwork(); const A = makePeer(net); const B = makePeer(net);
  56. A.setActor();
  57. await A.use('cv').createCV(makeData('PUBLIC'), null);
  58. B.setActor();
  59. const cv = await B.use('cv').getCVByUserId(A.keypair.id);
  60. ok(cv);
  61. eq(cv.visibility, 'PUBLIC');
  62. });
  63. t('update preserves visibility when not specified', async () => {
  64. const net = makeNetwork(); const A = makePeer(net); A.setActor();
  65. const r = await A.use('cv').createCV(makeData('HIDDEN'), null);
  66. const data = makeData(undefined); data.name = 'Y';
  67. await A.use('cv').updateCV(r.key, data, null);
  68. const cv = await A.use('cv').getCVByUserId(A.keypair.id);
  69. eq(cv.name, 'Y');
  70. eq(cv.visibility, 'HIDDEN');
  71. });
  72. t('update can flip visibility HIDDEN -> PUBLIC', async () => {
  73. const net = makeNetwork(); const A = makePeer(net); const B = makePeer(net);
  74. A.setActor();
  75. const r = await A.use('cv').createCV(makeData('HIDDEN'), null);
  76. await A.use('cv').updateCV(r.key, makeData('PUBLIC'), null);
  77. B.setActor();
  78. const cv = await B.use('cv').getCVByUserId(A.keypair.id);
  79. ok(cv);
  80. eq(cv.visibility, 'PUBLIC');
  81. });
  82. });