| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import mongodb from 'mongodb-legacy'
- import { expect } from 'chai'
- import DocstoreApp from './helpers/DocstoreApp.js'
- import DocstoreClient from './helpers/DocstoreClient.js'
- const { ObjectId } = mongodb
- describe('Getting a doc', function () {
- beforeEach(async function () {
- this.project_id = new ObjectId()
- this.doc_id = new ObjectId()
- this.lines = ['original', 'lines']
- this.version = 42
- this.ranges = {
- changes: [
- {
- id: new ObjectId().toString(),
- op: { i: 'foo', p: 3 },
- meta: {
- user_id: new ObjectId().toString(),
- ts: new Date().toJSON(),
- },
- },
- ],
- comments: [
- {
- id: new ObjectId().toString(),
- op: { c: 'comment', p: 1, t: new ObjectId().toString() },
- metadata: {
- user_id: new ObjectId().toString(),
- ts: new Date().toJSON(),
- },
- },
- ],
- }
- this.fixedRanges = {
- ...this.ranges,
- comments: [
- { ...this.ranges.comments[0], id: this.ranges.comments[0].op.t },
- ],
- }
- await DocstoreApp.ensureRunning()
- await DocstoreClient.createDoc(
- this.project_id,
- this.doc_id,
- this.lines,
- this.version,
- this.ranges
- )
- })
- describe('when the doc exists', function () {
- it('should get the doc lines and version', async function () {
- const doc = await DocstoreClient.getDoc(this.project_id, this.doc_id)
- doc.lines.should.deep.equal(this.lines)
- doc.version.should.equal(this.version)
- doc.ranges.should.deep.equal(this.fixedRanges)
- })
- })
- describe('when the doc does not exist', function () {
- it('should return a 404', async function () {
- const missingDocId = new ObjectId()
- await expect(DocstoreClient.getDoc(this.project_id, missingDocId))
- .to.eventually.be.rejected.and.have.property('info')
- .to.contain({ status: 404 })
- })
- })
- describe('when the doc is a deleted doc', function () {
- beforeEach(async function () {
- this.deleted_doc_id = new ObjectId()
- await DocstoreClient.createDoc(
- this.project_id,
- this.deleted_doc_id,
- this.lines,
- this.version,
- this.ranges
- )
- await DocstoreClient.deleteDoc(this.project_id, this.deleted_doc_id)
- })
- it('should return the doc', async function () {
- const doc = await DocstoreClient.getDoc(
- this.project_id,
- this.deleted_doc_id,
- { include_deleted: true }
- )
- doc.lines.should.deep.equal(this.lines)
- doc.version.should.equal(this.version)
- doc.ranges.should.deep.equal(this.fixedRanges)
- doc.deleted.should.equal(true)
- })
- it('should return a 404 when the query string is not set', async function () {
- await expect(DocstoreClient.getDoc(this.project_id, this.deleted_doc_id))
- .to.eventually.be.rejected.and.have.property('info')
- .to.contain({ status: 404 })
- })
- })
- })
|