feat(snjs): add revisions api v2 (#2154)
* feat(snjs): add revisions api v2 * fix(snjs): reference listing and getting revisions in specs * fix(snjs): revisions specs * fix(web): usage of revision metadata * fix(snjs): add specs for decryption revision * fix(snjs): issue with building mocked specs * fix(snjs): adjust revision creation delay
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import { RevisionClientInterface } from '@standardnotes/services'
|
||||
|
||||
import { DeleteRevision } from './DeleteRevision'
|
||||
|
||||
describe('DeleteRevision', () => {
|
||||
let revisionManager: RevisionClientInterface
|
||||
|
||||
const createUseCase = () => new DeleteRevision(revisionManager)
|
||||
|
||||
beforeEach(() => {
|
||||
revisionManager = {} as jest.Mocked<RevisionClientInterface>
|
||||
revisionManager.deleteRevision = jest.fn()
|
||||
})
|
||||
|
||||
it('should delete revision', async () => {
|
||||
const useCase = createUseCase()
|
||||
|
||||
const result = await useCase.execute({
|
||||
itemUuid: '00000000-0000-0000-0000-000000000000',
|
||||
revisionUuid: '00000000-0000-0000-0000-000000000000',
|
||||
})
|
||||
|
||||
expect(result.isFailed()).toBe(false)
|
||||
})
|
||||
|
||||
it('should fail if item uuid is invalid', async () => {
|
||||
const useCase = createUseCase()
|
||||
|
||||
const result = await useCase.execute({
|
||||
itemUuid: 'invalid',
|
||||
revisionUuid: '00000000-0000-0000-0000-000000000000',
|
||||
})
|
||||
|
||||
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 uuid is invalid', async () => {
|
||||
const useCase = createUseCase()
|
||||
|
||||
const result = await useCase.execute({
|
||||
itemUuid: '00000000-0000-0000-0000-000000000000',
|
||||
revisionUuid: 'invalid',
|
||||
})
|
||||
|
||||
expect(result.isFailed()).toBe(true)
|
||||
expect(result.getError()).toEqual('Could not delete revision: Given value is not a valid uuid: invalid')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,26 @@
|
||||
import { RevisionClientInterface } from '@standardnotes/services'
|
||||
import { Result, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
|
||||
|
||||
import { DeleteRevisionDTO } from './DeleteRevisionDTO'
|
||||
|
||||
export class DeleteRevision implements UseCaseInterface<void> {
|
||||
constructor(private revisionManager: RevisionClientInterface) {}
|
||||
|
||||
async execute(dto: DeleteRevisionDTO): Promise<Result<void>> {
|
||||
const itemUuidOrError = Uuid.create(dto.itemUuid)
|
||||
if (itemUuidOrError.isFailed()) {
|
||||
return Result.fail(`Could not delete revision: ${itemUuidOrError.getError()}`)
|
||||
}
|
||||
const itemUuid = itemUuidOrError.getValue()
|
||||
|
||||
const revisionUuidOrError = Uuid.create(dto.revisionUuid)
|
||||
if (revisionUuidOrError.isFailed()) {
|
||||
return Result.fail(`Could not delete revision: ${revisionUuidOrError.getError()}`)
|
||||
}
|
||||
const revisionUuid = revisionUuidOrError.getValue()
|
||||
|
||||
await this.revisionManager.deleteRevision(itemUuid, revisionUuid)
|
||||
|
||||
return Result.ok()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
export interface DeleteRevisionDTO {
|
||||
itemUuid: string
|
||||
revisionUuid: string
|
||||
}
|
||||
Reference in New Issue
Block a user