blob: 8c9eb6dcb3b854ae238ac5952329b0a2e2bbec67 [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 fileUtils = require('utils/file_utils');
describe('file_utils', function () {
describe('#openInfoInNewTab', function () {
var mock = {
document: {
write: Em.K
},
focus: Em.K
};
beforeEach(function () {
sinon.stub(window, 'open').returns(mock);
sinon.spy(mock.document, 'write');
sinon.spy(mock, 'focus');
fileUtils.openInfoInNewTab('data');
});
afterEach(function () {
window.open.restore();
mock.document.write.restore();
mock.focus.restore();
});
it('opening new window', function () {
expect(window.open.calledOnce).to.be.true;
});
it('no URL for new window', function () {
expect(window.open.firstCall.args).to.eql(['']);
});
it('writing document contents', function () {
expect(mock.document.write.calledOnce).to.be.true;
});
it('document contents', function () {
expect(mock.document.write.firstCall.args).to.eql(['data']);
});
it('focusing on new window', function () {
expect(mock.focus.calledOnce).to.be.true;
});
});
describe('#safariDownload', function () {
var linkEl = {
click: Em.K
};
beforeEach(function () {
sinon.stub(document, 'createElement').returns(linkEl);
sinon.stub(document.body, 'appendChild', Em.K);
sinon.stub(document.body, 'removeChild', Em.K);
sinon.spy(linkEl, 'click');
fileUtils.safariDownload('file data', 'csv', 'file.csv');
});
afterEach(function () {
document.createElement.restore();
document.body.appendChild.restore();
document.body.removeChild.restore();
linkEl.click.restore();
});
it('creating new element', function () {
expect(document.createElement.calledOnce).to.be.true;
});
it('new element is a link', function () {
expect(document.createElement.firstCall.args).to.eql(['a']);
});
it('link URL', function () {
expect(linkEl.href).to.equal('data:attachment/csv;charset=utf-8,file%20data');
});
it('file name', function () {
expect(linkEl.download).to.equal('file.csv');
});
it('appending element to document', function () {
expect(document.body.appendChild.calledOnce).to.be.true;
});
it('link is appended', function () {
expect(document.body.appendChild.firstCall.args).to.eql([linkEl]);
});
it('link is clicked', function () {
expect(linkEl.click.calledOnce).to.be.true;
});
it('removing element from document', function () {
expect(document.body.removeChild.calledOnce).to.be.true;
});
it('link is removed', function () {
expect(document.body.removeChild.firstCall.args).to.eql([linkEl]);
});
});
});