fix(snjs): bring back history tests and fix handlinf of error with revisions

This commit is contained in:
Karol Sójko
2023-01-20 10:02:48 +01:00
parent e61ac4c54a
commit cb9c16047e
8 changed files with 75 additions and 34 deletions

View File

@@ -46,4 +46,18 @@ describe('DeleteRevision', () => {
expect(result.isFailed()).toBe(true)
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')
})
})

View File

@@ -19,8 +19,12 @@ export class DeleteRevision implements UseCaseInterface<void> {
}
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}`)
}
}
}

View File

@@ -155,4 +155,18 @@ describe('GetRevision', () => {
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')
})
})

View File

@@ -29,8 +29,14 @@ export class GetRevision implements UseCaseInterface<HistoryEntry> {
}
const revisionUuid = revisionUuidOrError.getValue()
const revision = await this.revisionManager.getRevision(itemUuid, revisionUuid)
if (revision === null) {
let revision
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')
}

View File

@@ -29,4 +29,15 @@ describe('ListRevisions', () => {
expect(result.isFailed()).toBe(true)
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')
})
})

View File

@@ -15,8 +15,12 @@ export class ListRevisions implements UseCaseInterface<Array<RevisionMetadata>>
}
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}`)
}
}
}

View File

@@ -5,7 +5,7 @@ import { createNoteParams } from './lib/Items.js'
chai.use(chaiAsPromised)
const expect = chai.expect
describe.skip('history manager', () => {
describe('history manager', () => {
const largeCharacterChange = 25
const syncOptions = {