RestoringFilesTest.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /* eslint-disable
  2. max-len,
  3. no-unused-vars,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS102: Remove unnecessary code created because of implicit returns
  10. * DS207: Consider shorter variations of null checks
  11. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  12. */
  13. const { expect } = require('chai')
  14. const _ = require('underscore')
  15. const User = require('./helpers/User')
  16. const MockDocstoreApiClass = require('./mocks/MockDocstoreApi')
  17. const MockFilestoreApiClass = require('./mocks/MockFilestoreApi')
  18. let MockDocstoreApi, MockFilestoreApi
  19. before(function () {
  20. MockDocstoreApi = MockDocstoreApiClass.instance()
  21. MockFilestoreApi = MockFilestoreApiClass.instance()
  22. })
  23. describe('RestoringFiles', function () {
  24. beforeEach(function (done) {
  25. this.owner = new User()
  26. return this.owner.login(error => {
  27. if (error != null) {
  28. throw error
  29. }
  30. return this.owner.createProject(
  31. 'example-project',
  32. { template: 'example' },
  33. (error, projectId) => {
  34. this.project_id = projectId
  35. if (error != null) {
  36. throw error
  37. }
  38. return done()
  39. }
  40. )
  41. })
  42. })
  43. describe('restoring a deleted doc', function () {
  44. beforeEach(function (done) {
  45. return this.owner.getProject(this.project_id, (error, project) => {
  46. if (error != null) {
  47. throw error
  48. }
  49. this.doc = _.find(
  50. project.rootFolder[0].docs,
  51. doc => doc.name === 'main.tex'
  52. )
  53. return this.owner.request(
  54. {
  55. method: 'DELETE',
  56. url: `/project/${this.project_id}/doc/${this.doc._id}`,
  57. },
  58. (error, response, body) => {
  59. if (error != null) {
  60. throw error
  61. }
  62. expect(response.statusCode).to.equal(204)
  63. return this.owner.request(
  64. {
  65. method: 'POST',
  66. url: `/project/${this.project_id}/doc/${this.doc._id}/restore`,
  67. json: {
  68. name: 'main.tex',
  69. },
  70. },
  71. (error, response, body) => {
  72. if (error != null) {
  73. throw error
  74. }
  75. expect(response.statusCode).to.equal(200)
  76. expect(body.doc_id).to.exist
  77. this.restored_doc_id = body.doc_id
  78. return done()
  79. }
  80. )
  81. }
  82. )
  83. })
  84. })
  85. it('should have restored the doc', function (done) {
  86. return this.owner.getProject(this.project_id, (error, project) => {
  87. if (error != null) {
  88. throw error
  89. }
  90. const restoredDoc = _.find(
  91. project.rootFolder[0].docs,
  92. doc => doc.name === 'main.tex'
  93. )
  94. expect(restoredDoc._id.toString()).to.equal(this.restored_doc_id)
  95. expect(this.doc._id).to.not.equal(this.restored_doc_id)
  96. expect(
  97. MockDocstoreApi.docs[this.project_id][this.restored_doc_id].lines
  98. ).to.deep.equal(
  99. MockDocstoreApi.docs[this.project_id][this.doc._id].lines
  100. )
  101. return done()
  102. })
  103. })
  104. })
  105. })