view src/DML/MainVisBundle/Resources/assets/jasmine/marionette/[t]ContextModule.50-AppContextManager.js @ 1:f38015048f48 tip

Added GPL
author Daniel Wolff
date Sat, 13 Feb 2016 20:43:38 +0100
parents 493bcb69166c
children
line wrap: on
line source
"use strict";

describe("ContextModule.AppContextManager", function() {

    var serializedAppContexts = {
            "empty": {
                "stateHistory": {
                    "currentSerializedState": {
                        "musicCollectionGrid": {
                            "entityConfigs": [],
                            "viewConfigs": [],
                        },
                        "musicRecordingGrid": {
                            "entityConfigs": [],
                            "viewConfigs": [],
                        }
                    },
                    "undoStack": [],
                    "redoStack": []
                },
                "stateBookmarks": []
            },

            "empty_faulty1": {
            },
            "empty_faulty2": 42,
            "empty_faulty3": null,
            
            "empty_incomplete1": {
                "stateHistory": {
                    "currentSerializedState": {
                        "musicCollectionGrid": {
                            "entityConfigs": [],
                            "viewConfigs": [],
                        },
                    },
                    "redoStack": []
                },
                "stateBookmarks": []
            },
            "empty_incomplete2": {
                "stateHistory": {
                    "currentSerializedState": null,
                    "undoStack": [],
                    "redoStack": []
                },
                "stateBookmarks": []
            },
    };
    
    beforeAll(function() {
        jasmine.helpers.dumpStorage();
        jasmine.helpers.clearStorage();
    });

    beforeEach(function() {
        jasmine.helpers.clearStorage();
    });
    
    afterAll(function() {
        jasmine.helpers.restoreStorageFromDump();
    });

    it("is promptly created", function() {
        var testedAppContextManager = new App.ContextModule.AppContextManager();
        
        expect(testedAppContextManager instanceof Backbone.Marionette.Object).toBe(true);
    });

    it("restores context from default, saves it and reads it", function() {
        var testedAppContextManager = new App.ContextModule.AppContextManager();
        var testedAppContext = new App.ContextModule.AppContext();
        
        testedAppContextManager.restoreDefault(testedAppContext);
        
        var serializedAppContext = testedAppContext.serialize();
        expect(typeof serializedAppContext).toBe("object");
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.entityConfigs.length).toBe(2);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.viewConfigs.length).toBe(2);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.entityConfigs.length).toBe(0);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.viewConfigs.length).toBe(0);

        testedAppContextManager.saveToStorage(testedAppContext);
        var serializedAppContext = App.DataModule.Storage.getObjCache(App.ContextModule, "context");
        expect(typeof serializedAppContext).toBe("object");
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.entityConfigs.length).toBe(2);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.viewConfigs.length).toBe(2);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.entityConfigs.length).toBe(0);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.viewConfigs.length).toBe(0);

        serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.entityConfigs.pop();
        serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.viewConfigs.push({parameters: {x: 1}});
        
        App.DataModule.Storage.setObjCache(App.ContextModule, "context", serializedAppContext);
        testedAppContextManager.restoreFromStorage(testedAppContext);
        var serializedAppContext = testedAppContext.serialize();
        expect(typeof serializedAppContext).toBe("object");
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.entityConfigs.length).toBe(1);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicCollectionGrid.viewConfigs.length).toBe(2);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.entityConfigs.length).toBe(0);
        expect(serializedAppContext.stateHistory.currentSerializedState.musicRecordingGrid.viewConfigs.length).toBe(1);
    });
});