ItemDumpedEventHandler.spec.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { ItemDumpedEvent } from '@standardnotes/domain-events'
  2. import { Logger } from 'winston'
  3. import { Uuid, ContentType, Dates } from '@standardnotes/domain-core'
  4. import { DumpRepositoryInterface } from '../Dump/DumpRepositoryInterface'
  5. import { Revision } from '../Revision/Revision'
  6. import { RevisionRepositoryInterface } from '../Revision/RevisionRepositoryInterface'
  7. import { ItemDumpedEventHandler } from './ItemDumpedEventHandler'
  8. import { RevisionRepositoryResolverInterface } from '../Revision/RevisionRepositoryResolverInterface'
  9. describe('ItemDumpedEventHandler', () => {
  10. let dumpRepository: DumpRepositoryInterface
  11. let revisionRepository: RevisionRepositoryInterface
  12. let revisionRepositoryResolver: RevisionRepositoryResolverInterface
  13. let revision: Revision
  14. let event: ItemDumpedEvent
  15. let logger: Logger
  16. const createHandler = () => new ItemDumpedEventHandler(dumpRepository, revisionRepositoryResolver, logger)
  17. beforeEach(() => {
  18. revision = Revision.create({
  19. itemUuid: Uuid.create('84c0f8e8-544a-4c7e-9adf-26209303bc1d').getValue(),
  20. userUuid: Uuid.create('84c0f8e8-544a-4c7e-9adf-26209303bc1d').getValue(),
  21. content: 'test',
  22. contentType: ContentType.create('Note').getValue(),
  23. itemsKeyId: 'test',
  24. encItemKey: 'test',
  25. authHash: 'test',
  26. creationDate: new Date(1),
  27. dates: Dates.create(new Date(1), new Date(2)).getValue(),
  28. }).getValue()
  29. dumpRepository = {} as jest.Mocked<DumpRepositoryInterface>
  30. dumpRepository.getRevisionFromDumpPath = jest.fn().mockReturnValue(revision)
  31. dumpRepository.removeDump = jest.fn()
  32. revisionRepository = {} as jest.Mocked<RevisionRepositoryInterface>
  33. revisionRepository.insert = jest.fn()
  34. revisionRepositoryResolver = {} as jest.Mocked<RevisionRepositoryResolverInterface>
  35. revisionRepositoryResolver.resolve = jest.fn().mockReturnValue(revisionRepository)
  36. event = {} as jest.Mocked<ItemDumpedEvent>
  37. event.payload = {
  38. fileDumpPath: 'foobar',
  39. roleNames: ['CORE_USER'],
  40. }
  41. logger = {} as jest.Mocked<Logger>
  42. logger.debug = jest.fn()
  43. logger.error = jest.fn()
  44. })
  45. it('should save a revision from file dump', async () => {
  46. await createHandler().handle(event)
  47. expect(revisionRepository.insert).toHaveBeenCalled()
  48. expect(dumpRepository.removeDump).toHaveBeenCalled()
  49. })
  50. it('should do nothing if role names are not valid', async () => {
  51. event.payload.roleNames = ['INVALID_ROLE_NAME']
  52. await createHandler().handle(event)
  53. expect(revisionRepository.insert).not.toHaveBeenCalled()
  54. expect(dumpRepository.removeDump).toHaveBeenCalled()
  55. })
  56. it('should not save a revision if it could not be created from dump', async () => {
  57. dumpRepository.getRevisionFromDumpPath = jest.fn().mockReturnValue(null)
  58. await createHandler().handle(event)
  59. expect(revisionRepository.insert).not.toHaveBeenCalled()
  60. expect(dumpRepository.removeDump).toHaveBeenCalled()
  61. })
  62. })