UpdateUser.spec.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'reflect-metadata'
  2. import { TimerInterface } from '@standardnotes/time'
  3. import { User } from '../User/User'
  4. import { UserRepositoryInterface } from '../User/UserRepositoryInterface'
  5. import { AuthResponseFactoryInterface } from '../Auth/AuthResponseFactoryInterface'
  6. import { AuthResponseFactoryResolverInterface } from '../Auth/AuthResponseFactoryResolverInterface'
  7. import { UpdateUser } from './UpdateUser'
  8. import { Session } from '../Session/Session'
  9. describe('UpdateUser', () => {
  10. let userRepository: UserRepositoryInterface
  11. let authResponseFactoryResolver: AuthResponseFactoryResolverInterface
  12. let authResponseFactory: AuthResponseFactoryInterface
  13. let user: User
  14. let timer: TimerInterface
  15. const createUseCase = () => new UpdateUser(userRepository, authResponseFactoryResolver, timer)
  16. beforeEach(() => {
  17. userRepository = {} as jest.Mocked<UserRepositoryInterface>
  18. userRepository.save = jest.fn()
  19. userRepository.findOneByUsernameOrEmail = jest.fn().mockReturnValue(undefined)
  20. authResponseFactory = {} as jest.Mocked<AuthResponseFactoryInterface>
  21. authResponseFactory.createResponse = jest
  22. .fn()
  23. .mockReturnValue({ response: { foo: 'bar' }, session: {} as jest.Mocked<Session> })
  24. authResponseFactoryResolver = {} as jest.Mocked<AuthResponseFactoryResolverInterface>
  25. authResponseFactoryResolver.resolveAuthResponseFactoryVersion = jest.fn().mockReturnValue(authResponseFactory)
  26. user = {} as jest.Mocked<User>
  27. user.uuid = '123'
  28. user.email = 'test@test.te'
  29. user.createdAt = new Date(1)
  30. timer = {} as jest.Mocked<TimerInterface>
  31. timer.getUTCDate = jest.fn().mockReturnValue(new Date(1))
  32. })
  33. it('should update user fields and save it', async () => {
  34. expect(
  35. await createUseCase().execute({
  36. user,
  37. updatedWithUserAgent: 'Mozilla',
  38. apiVersion: '20190520',
  39. }),
  40. ).toEqual({ success: true, authResponse: { foo: 'bar' } })
  41. expect(userRepository.save).toHaveBeenCalledWith({
  42. createdAt: new Date(1),
  43. email: 'test@test.te',
  44. uuid: '123',
  45. updatedAt: new Date(1),
  46. })
  47. })
  48. })