import 'reflect-metadata' import { TimerInterface } from '@standardnotes/time' import { User } from '../User/User' import { UserRepositoryInterface } from '../User/UserRepositoryInterface' import { AuthResponseFactoryInterface } from '../Auth/AuthResponseFactoryInterface' import { AuthResponseFactoryResolverInterface } from '../Auth/AuthResponseFactoryResolverInterface' import { UpdateUser } from './UpdateUser' import { Session } from '../Session/Session' describe('UpdateUser', () => { let userRepository: UserRepositoryInterface let authResponseFactoryResolver: AuthResponseFactoryResolverInterface let authResponseFactory: AuthResponseFactoryInterface let user: User let timer: TimerInterface const createUseCase = () => new UpdateUser(userRepository, authResponseFactoryResolver, timer) beforeEach(() => { userRepository = {} as jest.Mocked userRepository.save = jest.fn() userRepository.findOneByUsernameOrEmail = jest.fn().mockReturnValue(undefined) authResponseFactory = {} as jest.Mocked authResponseFactory.createResponse = jest .fn() .mockReturnValue({ response: { foo: 'bar' }, session: {} as jest.Mocked }) authResponseFactoryResolver = {} as jest.Mocked authResponseFactoryResolver.resolveAuthResponseFactoryVersion = jest.fn().mockReturnValue(authResponseFactory) user = {} as jest.Mocked user.uuid = '123' user.email = 'test@test.te' user.createdAt = new Date(1) timer = {} as jest.Mocked timer.getUTCDate = jest.fn().mockReturnValue(new Date(1)) }) it('should update user fields and save it', async () => { expect( await createUseCase().execute({ user, updatedWithUserAgent: 'Mozilla', apiVersion: '20190520', }), ).toEqual({ success: true, authResponse: { foo: 'bar' } }) expect(userRepository.save).toHaveBeenCalledWith({ createdAt: new Date(1), email: 'test@test.te', uuid: '123', updatedAt: new Date(1), }) }) })