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,32 @@
|
||||
import { RevisionClientInterface } from '@standardnotes/services'
|
||||
|
||||
import { ListRevisions } from './ListRevisions'
|
||||
|
||||
describe('ListRevisions', () => {
|
||||
let revisionManager: RevisionClientInterface
|
||||
|
||||
const createUseCase = () => new ListRevisions(revisionManager)
|
||||
|
||||
beforeEach(() => {
|
||||
revisionManager = {} as jest.Mocked<RevisionClientInterface>
|
||||
revisionManager.listRevisions = jest.fn().mockReturnValue([])
|
||||
})
|
||||
|
||||
it('should list revisions', async () => {
|
||||
const useCase = createUseCase()
|
||||
|
||||
const result = await useCase.execute({ itemUuid: '00000000-0000-0000-0000-000000000000' })
|
||||
|
||||
expect(result.isFailed()).toBe(false)
|
||||
expect(result.getValue()).toEqual([])
|
||||
})
|
||||
|
||||
it('should fail if item uuid is invalid', async () => {
|
||||
const useCase = createUseCase()
|
||||
|
||||
const result = await useCase.execute({ itemUuid: 'invalid' })
|
||||
|
||||
expect(result.isFailed()).toBe(true)
|
||||
expect(result.getError()).toEqual('Could not list item revisions: Given value is not a valid uuid: invalid')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,22 @@
|
||||
import { RevisionClientInterface } from '@standardnotes/services'
|
||||
import { Result, UseCaseInterface, Uuid } from '@standardnotes/domain-core'
|
||||
|
||||
import { RevisionMetadata } from '../../Revision/RevisionMetadata'
|
||||
|
||||
import { ListRevisionsDTO } from './ListRevisionsDTO'
|
||||
|
||||
export class ListRevisions implements UseCaseInterface<Array<RevisionMetadata>> {
|
||||
constructor(private revisionManager: RevisionClientInterface) {}
|
||||
|
||||
async execute(dto: ListRevisionsDTO): Promise<Result<RevisionMetadata[]>> {
|
||||
const itemUuidOrError = Uuid.create(dto.itemUuid)
|
||||
if (itemUuidOrError.isFailed()) {
|
||||
return Result.fail(`Could not list item revisions: ${itemUuidOrError.getError()}`)
|
||||
}
|
||||
const itemUuid = itemUuidOrError.getValue()
|
||||
|
||||
const revisions = await this.revisionManager.listRevisions(itemUuid)
|
||||
|
||||
return Result.ok(revisions)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export interface ListRevisionsDTO {
|
||||
itemUuid: string
|
||||
}
|
||||
Reference in New Issue
Block a user