GetTransitionStatus.spec.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { RoleName } from '@standardnotes/domain-core'
  2. import { Role } from '../../Role/Role'
  3. import { TransitionStatusRepositoryInterface } from '../../Transition/TransitionStatusRepositoryInterface'
  4. import { User } from '../../User/User'
  5. import { UserRepositoryInterface } from '../../User/UserRepositoryInterface'
  6. import { GetTransitionStatus } from './GetTransitionStatus'
  7. describe('GetTransitionStatus', () => {
  8. let transitionStatusRepository: TransitionStatusRepositoryInterface
  9. let userRepository: UserRepositoryInterface
  10. let user: User
  11. let role: Role
  12. const createUseCase = () => new GetTransitionStatus(transitionStatusRepository, userRepository)
  13. beforeEach(() => {
  14. transitionStatusRepository = {} as jest.Mocked<TransitionStatusRepositoryInterface>
  15. transitionStatusRepository.getStatus = jest.fn().mockReturnValue(null)
  16. role = {} as jest.Mocked<Role>
  17. role.name = RoleName.NAMES.CoreUser
  18. user = {
  19. uuid: '00000000-0000-0000-0000-000000000000',
  20. email: 'test@test.te',
  21. } as jest.Mocked<User>
  22. user.roles = Promise.resolve([role])
  23. userRepository = {} as jest.Mocked<UserRepositoryInterface>
  24. userRepository.findOneByUuid = jest.fn().mockReturnValue(user)
  25. })
  26. it('returns transition status FINISHED', async () => {
  27. role.name = RoleName.NAMES.TransitionUser
  28. user.roles = Promise.resolve([role])
  29. userRepository.findOneByUuid = jest.fn().mockReturnValue(user)
  30. const useCase = createUseCase()
  31. const result = await useCase.execute({
  32. userUuid: '00000000-0000-0000-0000-000000000000',
  33. transitionType: 'items',
  34. })
  35. expect(result.isFailed()).toBeFalsy()
  36. expect(result.getValue()).toEqual('FINISHED')
  37. })
  38. it('returns transition status STARTED', async () => {
  39. const useCase = createUseCase()
  40. transitionStatusRepository.getStatus = jest.fn().mockReturnValue('STARTED')
  41. const result = await useCase.execute({
  42. userUuid: '00000000-0000-0000-0000-000000000000',
  43. transitionType: 'items',
  44. })
  45. expect(result.isFailed()).toBeFalsy()
  46. expect(result.getValue()).toEqual('STARTED')
  47. })
  48. it('returns transition status TO-DO', async () => {
  49. const useCase = createUseCase()
  50. const result = await useCase.execute({
  51. userUuid: '00000000-0000-0000-0000-000000000000',
  52. transitionType: 'items',
  53. })
  54. expect(result.isFailed()).toBeFalsy()
  55. expect(result.getValue()).toEqual('TO-DO')
  56. })
  57. it('returns transition status FAILED', async () => {
  58. const useCase = createUseCase()
  59. transitionStatusRepository.getStatus = jest.fn().mockReturnValue('FAILED')
  60. const result = await useCase.execute({
  61. userUuid: '00000000-0000-0000-0000-000000000000',
  62. transitionType: 'items',
  63. })
  64. expect(result.isFailed()).toBeFalsy()
  65. expect(result.getValue()).toEqual('FAILED')
  66. })
  67. it('return error if user uuid is invalid', async () => {
  68. const useCase = createUseCase()
  69. const result = await useCase.execute({
  70. userUuid: 'invalid',
  71. transitionType: 'items',
  72. })
  73. expect(result.isFailed()).toBeTruthy()
  74. expect(result.getError()).toEqual('Given value is not a valid uuid: invalid')
  75. })
  76. it('return error if user not found', async () => {
  77. const useCase = createUseCase()
  78. userRepository.findOneByUuid = jest.fn().mockReturnValue(null)
  79. const result = await useCase.execute({
  80. userUuid: '00000000-0000-0000-0000-000000000000',
  81. transitionType: 'items',
  82. })
  83. expect(result.isFailed()).toBeTruthy()
  84. expect(result.getError()).toEqual('User not found.')
  85. })
  86. })