/* eslint-disable camelcase, no-return-assign, no-unused-vars, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ const sinon = require('sinon'); const chai = require('chai'); const should = chai.should(); const modulePath = "../../../../app/js/HistoryRedisManager.js"; const SandboxedModule = require('sandboxed-module'); const Errors = require("../../../../app/js/Errors"); describe("HistoryRedisManager", function() { beforeEach(function() { this.rclient = { auth() {}, exec: sinon.stub() }; this.rclient.multi = () => this.rclient; this.HistoryRedisManager = SandboxedModule.require(modulePath, { requires: { "redis-sharelatex": { createClient: () => this.rclient }, "settings-sharelatex": { redis: { history: (this.settings = { key_schema: { uncompressedHistoryOps({doc_id}) { return `UncompressedHistoryOps:${doc_id}`; }, docsWithHistoryOps({project_id}) { return `DocsWithHistoryOps:${project_id}`; } } }) } }, "logger-sharelatex": { log() {} } } }); this.doc_id = "doc-id-123"; this.project_id = "project-id-123"; return this.callback = sinon.stub(); }); return describe("recordDocHasHistoryOps", function() { beforeEach(function() { this.ops = [{ op: [{ i: "foo", p: 4 }] },{ op: [{ i: "bar", p: 56 }] }]; return this.rclient.sadd = sinon.stub().yields(); }); describe("with ops", function() { beforeEach(function(done) { return this.HistoryRedisManager.recordDocHasHistoryOps(this.project_id, this.doc_id, this.ops, (...args) => { this.callback(...Array.from(args || [])); return done(); }); }); return it("should add the doc_id to the set of which records the project docs", function() { return this.rclient.sadd .calledWith(`DocsWithHistoryOps:${this.project_id}`, this.doc_id) .should.equal(true); }); }); return describe("with no ops", function() { beforeEach(function(done) { return this.HistoryRedisManager.recordDocHasHistoryOps(this.project_id, this.doc_id, [], (...args) => { this.callback(...Array.from(args || [])); return done(); }); }); it("should not add the doc_id to the set of which records the project docs", function() { return this.rclient.sadd .called .should.equal(false); }); return it("should call the callback with an error", function() { return this.callback.calledWith(new Error("cannot push no ops")).should.equal(true); }); }); }); });