|
|
@@ -1,164 +1,152 @@
|
|
|
-Path = require 'path'
|
|
|
-SandboxedModule = require "sandboxed-module"
|
|
|
-modulePath = Path.join __dirname, '../../../../../public/js/ide/history/HistoryV2Manager'
|
|
|
-sinon = require("sinon")
|
|
|
-expect = require("chai").expect
|
|
|
-
|
|
|
-describe "HistoryV2Manager", ->
|
|
|
- beforeEach ->
|
|
|
- @moment = {}
|
|
|
- @ColorManager = {}
|
|
|
- SandboxedModule.require modulePath, globals:
|
|
|
- "define": (dependencies, builder) =>
|
|
|
- @HistoryV2Manager = builder(@moment, @ColorManager)
|
|
|
-
|
|
|
- @scope =
|
|
|
- $watch: sinon.stub()
|
|
|
- $on: sinon.stub()
|
|
|
- @ide = {}
|
|
|
-
|
|
|
- @historyManager = new @HistoryV2Manager(@ide, @scope)
|
|
|
-
|
|
|
- it "should setup the history scope on intialization", ->
|
|
|
- expect(@scope.history).to.deep.equal({
|
|
|
- isV2: true
|
|
|
- updates: []
|
|
|
- nextBeforeTimestamp: null
|
|
|
- atEnd: false
|
|
|
- selection: {
|
|
|
+define ['ide/history/HistoryV2Manager'], (HistoryV2Manager) ->
|
|
|
+ describe "HistoryV2Manager", ->
|
|
|
+ beforeEach ->
|
|
|
+ @scope =
|
|
|
+ $watch: sinon.stub()
|
|
|
+ $on: sinon.stub()
|
|
|
+ @ide = {}
|
|
|
+ @historyManager = new HistoryV2Manager(@ide, @scope)
|
|
|
+
|
|
|
+ it "should setup the history scope on intialization", ->
|
|
|
+ expect(@scope.history).to.deep.equal({
|
|
|
+ isV2: true
|
|
|
updates: []
|
|
|
- pathname: null
|
|
|
- docs: {}
|
|
|
- range: {
|
|
|
- fromV: null
|
|
|
- toV: null
|
|
|
- }
|
|
|
- }
|
|
|
- diff: null
|
|
|
- })
|
|
|
-
|
|
|
- describe "_perDocSummaryOfUpdates", ->
|
|
|
- it "should return the range of updates for the docs", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- pathnames: ["main.tex"]
|
|
|
- fromV: 7, toV: 9
|
|
|
- },{
|
|
|
- pathnames: ["main.tex", "foo.tex"]
|
|
|
- fromV: 4, toV: 6
|
|
|
- },{
|
|
|
- pathnames: ["main.tex"]
|
|
|
- fromV: 3, toV: 3
|
|
|
- },{
|
|
|
- pathnames: ["foo.tex"]
|
|
|
- fromV: 0, toV: 2
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main.tex": { fromV: 3, toV: 9 },
|
|
|
- "foo.tex": { fromV: 0, toV: 6 }
|
|
|
- })
|
|
|
-
|
|
|
- it "should track renames", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- pathnames: ["main2.tex"]
|
|
|
- fromV: 5, toV: 9
|
|
|
- },{
|
|
|
- project_ops: [{
|
|
|
- rename: {
|
|
|
- pathname: "main1.tex",
|
|
|
- newPathname: "main2.tex"
|
|
|
- }
|
|
|
- }],
|
|
|
- fromV: 4, toV: 4
|
|
|
- },{
|
|
|
- pathnames: ["main1.tex"]
|
|
|
- fromV: 3, toV: 3
|
|
|
- },{
|
|
|
- project_ops: [{
|
|
|
- rename: {
|
|
|
- pathname: "main0.tex",
|
|
|
- newPathname: "main1.tex"
|
|
|
- }
|
|
|
- }],
|
|
|
- fromV: 2, toV: 2
|
|
|
- },{
|
|
|
- pathnames: ["main0.tex"]
|
|
|
- fromV: 0, toV: 1
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main0.tex": { fromV: 0, toV: 9 }
|
|
|
- })
|
|
|
-
|
|
|
- it "should track single renames", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- project_ops: [{
|
|
|
- rename: {
|
|
|
- pathname: "main1.tex",
|
|
|
- newPathname: "main2.tex"
|
|
|
+ nextBeforeTimestamp: null
|
|
|
+ atEnd: false
|
|
|
+ selection: {
|
|
|
+ updates: []
|
|
|
+ pathname: null
|
|
|
+ docs: {}
|
|
|
+ range: {
|
|
|
+ fromV: null
|
|
|
+ toV: null
|
|
|
}
|
|
|
- }],
|
|
|
- fromV: 4, toV: 5
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main1.tex": { fromV: 4, toV: 5 }
|
|
|
- })
|
|
|
-
|
|
|
- it "should track additions", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- project_ops: [{
|
|
|
- add:
|
|
|
- pathname: "main.tex"
|
|
|
- }]
|
|
|
- fromV: 0, toV: 1
|
|
|
- }, {
|
|
|
- pathnames: ["main.tex"]
|
|
|
- fromV: 1, toV: 4
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main.tex": { fromV: 0, toV: 4 }
|
|
|
- })
|
|
|
-
|
|
|
- it "should track single additions", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- project_ops: [{
|
|
|
- add:
|
|
|
- pathname: "main.tex"
|
|
|
- }]
|
|
|
- fromV: 0, toV: 1
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main.tex": { fromV: 0, toV: 1 }
|
|
|
- })
|
|
|
-
|
|
|
- it "should track deletions", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- pathnames: ["main.tex"]
|
|
|
- fromV: 0, toV: 1
|
|
|
- }, {
|
|
|
- project_ops: [{
|
|
|
- remove:
|
|
|
- pathname: "main.tex"
|
|
|
- }]
|
|
|
- fromV: 1, toV: 2
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main.tex": { fromV: 0, toV: 2, deleted: true }
|
|
|
+ }
|
|
|
+ diff: null
|
|
|
})
|
|
|
|
|
|
- it "should track single deletions", ->
|
|
|
- result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
- project_ops: [{
|
|
|
- remove:
|
|
|
- pathname: "main.tex"
|
|
|
- }]
|
|
|
- fromV: 0, toV: 1
|
|
|
- }])
|
|
|
-
|
|
|
- expect(result).to.deep.equal({
|
|
|
- "main.tex": { fromV: 0, toV: 1, deleted: true }
|
|
|
- })
|
|
|
+ describe "_perDocSummaryOfUpdates", ->
|
|
|
+ it "should return the range of updates for the docs", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ pathnames: ["main.tex"]
|
|
|
+ fromV: 7, toV: 9
|
|
|
+ },{
|
|
|
+ pathnames: ["main.tex", "foo.tex"]
|
|
|
+ fromV: 4, toV: 6
|
|
|
+ },{
|
|
|
+ pathnames: ["main.tex"]
|
|
|
+ fromV: 3, toV: 3
|
|
|
+ },{
|
|
|
+ pathnames: ["foo.tex"]
|
|
|
+ fromV: 0, toV: 2
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main.tex": { fromV: 3, toV: 9 },
|
|
|
+ "foo.tex": { fromV: 0, toV: 6 }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track renames", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ pathnames: ["main2.tex"]
|
|
|
+ fromV: 5, toV: 9
|
|
|
+ },{
|
|
|
+ project_ops: [{
|
|
|
+ rename: {
|
|
|
+ pathname: "main1.tex",
|
|
|
+ newPathname: "main2.tex"
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ fromV: 4, toV: 4
|
|
|
+ },{
|
|
|
+ pathnames: ["main1.tex"]
|
|
|
+ fromV: 3, toV: 3
|
|
|
+ },{
|
|
|
+ project_ops: [{
|
|
|
+ rename: {
|
|
|
+ pathname: "main0.tex",
|
|
|
+ newPathname: "main1.tex"
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ fromV: 2, toV: 2
|
|
|
+ },{
|
|
|
+ pathnames: ["main0.tex"]
|
|
|
+ fromV: 0, toV: 1
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main0.tex": { fromV: 0, toV: 9 }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track single renames", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ project_ops: [{
|
|
|
+ rename: {
|
|
|
+ pathname: "main1.tex",
|
|
|
+ newPathname: "main2.tex"
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ fromV: 4, toV: 5
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main1.tex": { fromV: 4, toV: 5 }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track additions", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ project_ops: [{
|
|
|
+ add:
|
|
|
+ pathname: "main.tex"
|
|
|
+ }]
|
|
|
+ fromV: 0, toV: 1
|
|
|
+ }, {
|
|
|
+ pathnames: ["main.tex"]
|
|
|
+ fromV: 1, toV: 4
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main.tex": { fromV: 0, toV: 4 }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track single additions", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ project_ops: [{
|
|
|
+ add:
|
|
|
+ pathname: "main.tex"
|
|
|
+ }]
|
|
|
+ fromV: 0, toV: 1
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main.tex": { fromV: 0, toV: 1 }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track deletions", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ pathnames: ["main.tex"]
|
|
|
+ fromV: 0, toV: 1
|
|
|
+ }, {
|
|
|
+ project_ops: [{
|
|
|
+ remove:
|
|
|
+ pathname: "main.tex"
|
|
|
+ }]
|
|
|
+ fromV: 1, toV: 2
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main.tex": { fromV: 0, toV: 2, deleted: true }
|
|
|
+ })
|
|
|
+
|
|
|
+ it "should track single deletions", ->
|
|
|
+ result = @historyManager._perDocSummaryOfUpdates([{
|
|
|
+ project_ops: [{
|
|
|
+ remove:
|
|
|
+ pathname: "main.tex"
|
|
|
+ }]
|
|
|
+ fromV: 0, toV: 1
|
|
|
+ }])
|
|
|
+
|
|
|
+ expect(result).to.deep.equal({
|
|
|
+ "main.tex": { fromV: 0, toV: 1, deleted: true }
|
|
|
+ })
|