code: /* eslint-disable
      no-unused-vars,
  */
  // TODO: This file was created by bulk-decaffeinate.
  // Fix any style issues and re-enable lint.
  /*
   * decaffeinate suggestions:
   * DS102: Remove unnecessary code created because of implicit returns
   * DS207: Consider shorter variations of null checks
   * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
   */
  const Client = require('./helpers/Client')
  const request = require('request')
  require('chai').should()
  const { expect } = require('chai')
  const ClsiApp = require('./helpers/ClsiApp')
  const crypto = require('crypto')
  
  describe('Syncing', function () {
    before(function (done) {
      const content = `\
  \\documentclass{article}
  \\begin{document}
  Hello world
  \\end{document}\
  `
      this.request = {
        resources: [
          {
            path: 'main.tex',
            content
          }
        ]
      }
      this.project_id = Client.randomId()
      return ClsiApp.ensureRunning(() => {
        return Client.compile(
          this.project_id,
          this.request,
          (error, res, body) => {
            this.error = error
            this.res = res
            this.body = body
            return done()
          }
        )
      })
    })
  
    describe('from code to pdf', function () {
      return it('should return the correct location', function (done) {
        return Client.syncFromCode(
          this.project_id,
          'main.tex',
          3,
          5,
          (error, pdfPositions) => {
            if (error != null) {
              throw error
            }
            expect(pdfPositions).to.deep.equal({
              pdf: [
                { page: 1, h: 133.77, v: 134.76, height: 6.92, width: 343.71 }
              ]
            })
            return done()
          }
        )
      })
    })
  
    describe('from pdf to code', function () {
      return it('should return the correct location', function (done) {
        return Client.syncFromPdf(
          this.project_id,
          1,
          100,
          200,
          (error, codePositions) => {
            if (error != null) {
              throw error
            }
            expect(codePositions).to.deep.equal({
              code: [{ file: 'main.tex', line: 3, column: -1 }]
            })
            return done()
          }
        )
      })
    })
  
    describe('when the project directory is not available', function () {
      before(function () {
        this.other_project_id = Client.randomId()
      })
      describe('from code to pdf', function () {
        it('should return a 404 response', function (done) {
          return Client.syncFromCode(
            this.other_project_id,
            'main.tex',
            3,
            5,
            (error, body) => {
              if (error != null) {
                throw error
              }
              expect(body).to.equal('Not Found')
              return done()
            }
          )
        })
      })
      describe('from pdf to code', function () {
        it('should return a 404 response', function (done) {
          return Client.syncFromPdf(
            this.other_project_id,
            1,
            100,
            200,
            (error, body) => {
              if (error != null) {
                throw error
              }
              expect(body).to.equal('Not Found')
              return done()
            }
          )
        })
      })
    })
  
    describe('when the synctex file is not available', function () {
      before(function (done) {
        this.broken_project_id = Client.randomId()
        const content = 'this is not valid tex' // not a valid tex file
        this.request = {
          resources: [
            {
              path: 'main.tex',
              content
            }
          ]
        }
        Client.compile(
          this.broken_project_id,
          this.request,
          (error, res, body) => {
            this.error = error
            this.res = res
            this.body = body
            return done()
          }
        )
      })
  
      describe('from code to pdf', function () {
        it('should return a 404 response', function (done) {
          return Client.syncFromCode(
            this.broken_project_id,
            'main.tex',
            3,
            5,
            (error, body) => {
              if (error != null) {
                throw error
              }
              expect(body).to.equal('Not Found')
              return done()
            }
          )
        })
      })
      describe('from pdf to code', function () {
        it('should return a 404 response', function (done) {
          return Client.syncFromPdf(
            this.broken_project_id,
            1,
            100,
            200,
            (error, body) => {
              if (error != null) {
                throw error
              }
              expect(body).to.equal('Not Found')
              return done()
            }
          )
        })
      })
    })
  })
  