fix(snjs): bring back history tests and fix handlinf of error with revisions
This commit is contained in:
@@ -16,31 +16,23 @@ export class RevisionManager extends AbstractService implements RevisionClientIn
|
|||||||
async listRevisions(
|
async listRevisions(
|
||||||
itemUuid: Uuid,
|
itemUuid: Uuid,
|
||||||
): Promise<{ uuid: string; content_type: string; created_at: string; updated_at: string; required_role: string }[]> {
|
): Promise<{ uuid: string; content_type: string; created_at: string; updated_at: string; required_role: string }[]> {
|
||||||
try {
|
const result = await this.revisionApiService.listRevisions(itemUuid.value)
|
||||||
const result = await this.revisionApiService.listRevisions(itemUuid.value)
|
|
||||||
|
|
||||||
if (result.data.error) {
|
if (result.data.error) {
|
||||||
return []
|
throw new Error(result.data.error.message)
|
||||||
}
|
|
||||||
|
|
||||||
return result.data.revisions
|
|
||||||
} catch (error) {
|
|
||||||
return []
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result.data.revisions
|
||||||
}
|
}
|
||||||
|
|
||||||
async deleteRevision(itemUuid: Uuid, revisionUuid: Uuid): Promise<string> {
|
async deleteRevision(itemUuid: Uuid, revisionUuid: Uuid): Promise<string> {
|
||||||
try {
|
const result = await this.revisionApiService.deleteRevision(itemUuid.value, revisionUuid.value)
|
||||||
const result = await this.revisionApiService.deleteRevision(itemUuid.value, revisionUuid.value)
|
|
||||||
|
|
||||||
if (result.data.error) {
|
if (result.data.error) {
|
||||||
return result.data.error.message
|
throw new Error(result.data.error.message)
|
||||||
}
|
|
||||||
|
|
||||||
return result.data.message
|
|
||||||
} catch (error) {
|
|
||||||
return 'An error occurred while deleting the revision.'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result.data.message
|
||||||
}
|
}
|
||||||
|
|
||||||
async getRevision(
|
async getRevision(
|
||||||
@@ -57,16 +49,12 @@ export class RevisionManager extends AbstractService implements RevisionClientIn
|
|||||||
created_at: string
|
created_at: string
|
||||||
updated_at: string
|
updated_at: string
|
||||||
} | null> {
|
} | null> {
|
||||||
try {
|
const result = await this.revisionApiService.getRevision(itemUuid.value, revisionUuid.value)
|
||||||
const result = await this.revisionApiService.getRevision(itemUuid.value, revisionUuid.value)
|
|
||||||
|
|
||||||
if (result.data.error) {
|
if (result.data.error) {
|
||||||
return null
|
throw new Error(result.data.error.message)
|
||||||
}
|
|
||||||
|
|
||||||
return result.data.revision
|
|
||||||
} catch (error) {
|
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result.data.revision
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,4 +46,18 @@ describe('DeleteRevision', () => {
|
|||||||
expect(result.isFailed()).toBe(true)
|
expect(result.isFailed()).toBe(true)
|
||||||
expect(result.getError()).toEqual('Could not delete revision: Given value is not a valid uuid: invalid')
|
expect(result.getError()).toEqual('Could not delete revision: Given value is not a valid uuid: invalid')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should fail if revision manager throws', async () => {
|
||||||
|
const useCase = createUseCase()
|
||||||
|
|
||||||
|
revisionManager.deleteRevision = jest.fn().mockRejectedValue(new Error('error'))
|
||||||
|
|
||||||
|
const result = await useCase.execute({
|
||||||
|
itemUuid: '00000000-0000-0000-0000-000000000000',
|
||||||
|
revisionUuid: '00000000-0000-0000-0000-000000000000',
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(result.isFailed()).toBe(true)
|
||||||
|
expect(result.getError()).toEqual('Could not delete revision: error')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -19,8 +19,12 @@ export class DeleteRevision implements UseCaseInterface<void> {
|
|||||||
}
|
}
|
||||||
const revisionUuid = revisionUuidOrError.getValue()
|
const revisionUuid = revisionUuidOrError.getValue()
|
||||||
|
|
||||||
await this.revisionManager.deleteRevision(itemUuid, revisionUuid)
|
try {
|
||||||
|
await this.revisionManager.deleteRevision(itemUuid, revisionUuid)
|
||||||
|
|
||||||
return Result.ok()
|
return Result.ok()
|
||||||
|
} catch (error) {
|
||||||
|
return Result.fail(`Could not delete revision: ${(error as Error).message}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,4 +155,18 @@ describe('GetRevision', () => {
|
|||||||
|
|
||||||
expect(result.isFailed()).toBe(true)
|
expect(result.isFailed()).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should fail if revision manager throws', async () => {
|
||||||
|
revisionManager.getRevision = jest.fn().mockRejectedValue(new Error('error'))
|
||||||
|
|
||||||
|
const useCase = createUseCase()
|
||||||
|
|
||||||
|
const result = await useCase.execute({
|
||||||
|
itemUuid: '00000000-0000-0000-0000-000000000000',
|
||||||
|
revisionUuid: '00000000-0000-0000-0000-000000000000',
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(result.isFailed()).toBe(true)
|
||||||
|
expect(result.getError()).toEqual('Could not get revision: error')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -29,8 +29,14 @@ export class GetRevision implements UseCaseInterface<HistoryEntry> {
|
|||||||
}
|
}
|
||||||
const revisionUuid = revisionUuidOrError.getValue()
|
const revisionUuid = revisionUuidOrError.getValue()
|
||||||
|
|
||||||
const revision = await this.revisionManager.getRevision(itemUuid, revisionUuid)
|
let revision
|
||||||
if (revision === null) {
|
try {
|
||||||
|
revision = await this.revisionManager.getRevision(itemUuid, revisionUuid)
|
||||||
|
} catch (error) {
|
||||||
|
return Result.fail(`Could not get revision: ${(error as Error).message}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!revision) {
|
||||||
return Result.fail('Could not get revision: Revision not found')
|
return Result.fail('Could not get revision: Revision not found')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,4 +29,15 @@ describe('ListRevisions', () => {
|
|||||||
expect(result.isFailed()).toBe(true)
|
expect(result.isFailed()).toBe(true)
|
||||||
expect(result.getError()).toEqual('Could not list item revisions: Given value is not a valid uuid: invalid')
|
expect(result.getError()).toEqual('Could not list item revisions: Given value is not a valid uuid: invalid')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should fail if revision manager throws', async () => {
|
||||||
|
const useCase = createUseCase()
|
||||||
|
|
||||||
|
revisionManager.listRevisions = jest.fn().mockRejectedValue(new Error('error'))
|
||||||
|
|
||||||
|
const result = await useCase.execute({ itemUuid: '00000000-0000-0000-0000-000000000000' })
|
||||||
|
|
||||||
|
expect(result.isFailed()).toBe(true)
|
||||||
|
expect(result.getError()).toEqual('Could not list item revisions: error')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -15,8 +15,12 @@ export class ListRevisions implements UseCaseInterface<Array<RevisionMetadata>>
|
|||||||
}
|
}
|
||||||
const itemUuid = itemUuidOrError.getValue()
|
const itemUuid = itemUuidOrError.getValue()
|
||||||
|
|
||||||
const revisions = await this.revisionManager.listRevisions(itemUuid)
|
try {
|
||||||
|
const revisions = await this.revisionManager.listRevisions(itemUuid)
|
||||||
|
|
||||||
return Result.ok(revisions)
|
return Result.ok(revisions)
|
||||||
|
} catch (error) {
|
||||||
|
return Result.fail(`Could not list item revisions: ${(error as Error).message}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { createNoteParams } from './lib/Items.js'
|
|||||||
chai.use(chaiAsPromised)
|
chai.use(chaiAsPromised)
|
||||||
const expect = chai.expect
|
const expect = chai.expect
|
||||||
|
|
||||||
describe.skip('history manager', () => {
|
describe('history manager', () => {
|
||||||
const largeCharacterChange = 25
|
const largeCharacterChange = 25
|
||||||
|
|
||||||
const syncOptions = {
|
const syncOptions = {
|
||||||
|
|||||||
Reference in New Issue
Block a user