blob: 592d9b75e736fd4463bfa1e7ae0720e8fd2326c8 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var App = require('app');
var testHelpers = require('test/helpers');
var LZString = require('utils/lz-string');
describe('App.Persist', function () {
var mixin;
beforeEach(function () {
mixin = Em.Object.create(App.Persist, {
additionalData: {}
});
});
describe('#getUserPref', function() {
it('App.ajax.send should be called', function() {
mixin.getUserPref('foo');
var args = testHelpers.findAjaxRequest('name', 'persist.get');
expect(args[0]).to.be.eql({
name: 'persist.get',
sender: mixin,
data: {
key: 'foo',
data: {}
},
success: 'getUserPrefSuccessCallback',
error: 'getUserPrefErrorCallback'
});
});
});
describe('#getDecompressedData', function() {
it('App.ajax.send should be called', function() {
mixin.getDecompressedData('foo');
var args = testHelpers.findAjaxRequest('name', 'persist.get.text');
expect(args[0]).to.be.eql({
name: 'persist.get.text',
sender: mixin,
data: {
key: 'foo'
}
});
});
});
describe('#post', function() {
it('App.ajax.send should be called', function() {
mixin.post({"foo": "bar"});
var args = testHelpers.findAjaxRequest('name', 'persist.post');
expect(args[0]).to.be.eql({
'name': 'persist.post',
'sender': mixin,
'beforeSend': 'postUserPrefBeforeSend',
'data': {
'keyValuePair': {"foo": "bar"}
},
'success': 'postUserPrefSuccessCallback',
'error': 'postUserPrefErrorCallback'
});
});
});
describe('#postUserPref', function() {
beforeEach(function() {
sinon.stub(mixin, 'post');
this.mockAuthorize = sinon.stub(App, 'isAuthorized');
});
afterEach(function() {
mixin.post.restore();
this.mockAuthorize.restore();
});
it('post should be called when authorized', function() {
this.mockAuthorize.withArgs('CLUSTER.MANAGE_USER_PERSISTED_DATA').returns(true);
mixin.postUserPref('foo', {"foo": "bar"});
expect(mixin.post.calledWith({'foo': '{"foo":"bar"}'})).to.be.true;
});
it('post should not be called when authorized', function() {
this.mockAuthorize.withArgs('CLUSTER.MANAGE_USER_PERSISTED_DATA').returns(false);
mixin.postUserPref('foo', {"foo": "bar"});
expect(mixin.post.called).to.be.false;
});
});
describe('#postCompressedData', function() {
beforeEach(function() {
sinon.stub(mixin, 'post');
sinon.stub(LZString, 'compressToBase64', function(args) {return args;})
});
afterEach(function() {
mixin.post.restore();
LZString.compressToBase64.restore();
});
it('post should be called with object value', function() {
mixin.postCompressedData('foo', {"foo": "bar"});
expect(mixin.post.calledWith({'foo': '{"foo":"bar"}'})).to.be.true;
});
it('post should be called with empty value', function() {
mixin.postCompressedData('foo', null);
expect(mixin.post.calledWith({'foo': ''})).to.be.true;
});
});
});