|
|
@@ -27,6 +27,12 @@ class DummyApiModel extends ApiModel {
|
|
|
declare name: string
|
|
|
}
|
|
|
|
|
|
+class TestableEntityManager extends EntityManager {
|
|
|
+ public makeProfileHash() {
|
|
|
+ return super.makeProfileHash()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const _console: any = {
|
|
|
log: console.log,
|
|
|
warn: console.warn,
|
|
|
@@ -46,9 +52,10 @@ vi.mock('~/models/models', async () => {
|
|
|
})
|
|
|
|
|
|
let apiRequestService: ApiRequestService
|
|
|
-let entityManager: EntityManager
|
|
|
+let entityManager: TestableEntityManager
|
|
|
let repo: Repository<ApiResource>
|
|
|
let _getRepo: (model: typeof ApiResource) => Repository<ApiResource>
|
|
|
+let _getProfileMask: () => object
|
|
|
|
|
|
beforeEach(() => {
|
|
|
// @ts-ignore
|
|
|
@@ -57,8 +64,15 @@ beforeEach(() => {
|
|
|
// @ts-ignore
|
|
|
apiRequestService = vi.fn() as ApiRequestService
|
|
|
_getRepo = vi.fn((model: typeof ApiResource) => repo)
|
|
|
+ _getProfileMask = vi.fn(() => {
|
|
|
+ return {}
|
|
|
+ })
|
|
|
|
|
|
- entityManager = new EntityManager(apiRequestService, _getRepo)
|
|
|
+ entityManager = new TestableEntityManager(
|
|
|
+ apiRequestService,
|
|
|
+ _getRepo,
|
|
|
+ _getProfileMask,
|
|
|
+ )
|
|
|
})
|
|
|
|
|
|
afterEach(() => {
|
|
|
@@ -473,13 +487,19 @@ describe('persist', () => {
|
|
|
|
|
|
// @ts-ignore
|
|
|
entityManager.removeTempAfterPersist = vi.fn()
|
|
|
+ entityManager.makeProfileHash = vi.fn(async () => await 'azerty')
|
|
|
|
|
|
const result = await entityManager.persist(DummyApiModel, instance)
|
|
|
|
|
|
// temp id should have been purged from the posted data
|
|
|
- expect(apiRequestService.post).toHaveBeenCalledWith('api/dummyModel', {
|
|
|
- name: 'bob',
|
|
|
- })
|
|
|
+ expect(apiRequestService.post).toHaveBeenCalledWith(
|
|
|
+ 'api/dummyModel',
|
|
|
+ {
|
|
|
+ name: 'bob',
|
|
|
+ },
|
|
|
+ null,
|
|
|
+ { profileHash: 'azerty' },
|
|
|
+ )
|
|
|
expect(entityManager.newInstance).toHaveBeenCalledWith(
|
|
|
DummyApiModel,
|
|
|
response,
|
|
|
@@ -487,8 +507,10 @@ describe('persist', () => {
|
|
|
// @ts-ignore
|
|
|
expect(entityManager.removeTempAfterPersist).toHaveBeenCalledWith(
|
|
|
DummyApiModel,
|
|
|
- instance.id,
|
|
|
+ instance.id
|
|
|
)
|
|
|
+ // @ts-ignore
|
|
|
+ expect(entityManager.makeProfileHash).toHaveBeenCalledTimes(1)
|
|
|
|
|
|
expect(result.id).toEqual(1)
|
|
|
expect(result.name).toEqual('bob')
|
|
|
@@ -522,16 +544,24 @@ describe('persist', () => {
|
|
|
|
|
|
// @ts-ignore
|
|
|
entityManager.removeTempAfterPersist = vi.fn()
|
|
|
+ entityManager.makeProfileHash = vi.fn(async () => await 'azerty')
|
|
|
|
|
|
const result = await entityManager.persist(DummyApiModel, entity)
|
|
|
|
|
|
- expect(apiRequestService.put).toHaveBeenCalledWith('api/dummyModel/1', {
|
|
|
- id: 1,
|
|
|
- name: 'bob',
|
|
|
- })
|
|
|
+ expect(apiRequestService.put).toHaveBeenCalledWith(
|
|
|
+ 'api/dummyModel/1',
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ name: 'bob',
|
|
|
+ },
|
|
|
+ null,
|
|
|
+ { profileHash: 'azerty' },
|
|
|
+ )
|
|
|
expect(entityManager.newInstance).toHaveBeenCalledWith(DummyApiModel, props)
|
|
|
// @ts-ignore
|
|
|
expect(entityManager.removeTempAfterPersist).toHaveBeenCalledTimes(0)
|
|
|
+ // @ts-ignore
|
|
|
+ expect(entityManager.makeProfileHash).toHaveBeenCalledTimes(1)
|
|
|
|
|
|
expect(result.id).toEqual(1)
|
|
|
expect(result.name).toEqual('bob')
|