import Model from '~/services/serializer/normalizer/model' import { DataPersisterArgs } from '~/types/interfaces' import { QUERY_TYPE } from '~/types/enums' import { repositoryHelper } from '~/services/store/repository' import User from '~/tests/unit/fixture/models/User' import { createStore } from '~/tests/unit/Helpers' jest.mock('~/services/store/repository') const repositoryHelperMock = repositoryHelper as jest.Mocked describe('support()', () => { it('should support model query type', () => { expect(Model.support(QUERY_TYPE.MODEL)).toBeTruthy() }) it('should not support default type', () => { expect(Model.support(QUERY_TYPE.DEFAULT)).toBeFalsy() }) it('should not support enum type', () => { expect(Model.support(QUERY_TYPE.ENUM)).toBeFalsy() }) }) describe('normalize()', () => { it('should not permit args without model', () => { const args: DataPersisterArgs = { type: QUERY_TYPE.MODEL } expect(() => Model.normalize(args)).toThrowError('*args* has no model attribute') }) it('should not permit normalize without item', async () => { const args:DataPersisterArgs = { type: QUERY_TYPE.MODEL, model: User, id: 1 } expect(() => Model.normalize(args)).toThrowError('Item not found') }) it('should normalize model to JSON', async () => { const store = createStore() const user = store.$repo(User).make() repositoryHelperMock.findItemFromModel = jest.fn().mockReturnValue(user) const args:DataPersisterArgs = { type: QUERY_TYPE.MODEL, model: User, id: 1 } expect(Model.normalize(args)).toStrictEqual({ id: 1, name: 'John Doe' }) }) })