var Backbone = require('backbone');
var MetadataView = require('builder/components/modals/map-metadata/map-metadata-view');
var VisDefinitionModel = require('builder/data/vis-definition-model');
var ConfigModel = require('builder/data/config-model');
describe('components/modals/map-metadata/map-metadata-view', function () {
var view;
beforeEach(function () {
var configModel = new ConfigModel({
base_url: '/u/pepe'
});
var visDefinitionModel = new VisDefinitionModel({
name: 'Foo Map',
privacy: 'LINK',
updated_at: '2016-06-21T15:30:06+00:00',
type: 'derived',
tags: ['foo', 'bar'],
permission: {}
}, {
configModel: configModel
});
view = new MetadataView({
modalModel: new Backbone.Model(),
visDefinitionModel: visDefinitionModel
});
view.render();
view.$el.appendTo(document.body);
});
afterEach(function () {
var parent = view.el.parentNode;
parent && parent.removeChild(view.el);
view.clean();
});
it('should render properly', function () {
expect(view.$('.Metadata-form').length).toBe(1);
expect(view.$('.js-name-field input').length).toBe(1);
expect(view.$('.js-name-field input').val()).toBe('Foo Map');
expect(view.$('.js-description-field textarea').length).toBe(1);
expect(view.$('.js-tags-field .Form-tagsList').length).toBe(1);
expect(view.$('.tagit-label').length).toBe(2);
expect(view.$('.tagit-label').eq(0).text()).toBe('foo');
expect(view.$('.tagit-label').eq(1).text()).toBe('bar');
});
it('should render error', function () {
view._stateModel.set({status: 'error'});
expect(view.$('.u-errorTextColor').length).toBe(1);
expect(view.$('input[type=password]').length).toBe(0);
expect(view.$('.Tag').length).toBe(0);
expect(view.$('.Modal-actions-button').length).toBe(1);
});
it('should render loading', function () {
view._stateModel.set({status: 'loading'});
expect(view.$('.Modal-actions-button').length).toBe(0);
expect(view.$('input[type=password]').length).toBe(0);
expect(view.$('.js-loader').length).toBe(1);
});
it('._getMetadataName sanitizes input', function () {
view._visMetadataModel.set('name', ">");
var name = view._getMetadataName();
expect(name).toEqual('>');
});
it('._getMetadataDescription sanitizes input', function () {
view._visMetadataModel.set('description', "
");
var name = view._getMetadataDescription();
expect(name).toEqual('
');
});
it('._getMetadataTags sanitizes input', function () {
view._visMetadataModel.set('tags', [
"
",
">"
]);
var tags = view._getMetadataTags();
expect(tags.length).toBe(2);
expect(tags[0]).toEqual('
');
expect(tags[1]).toEqual('>');
});
it('should not have any leaks', function () {
expect(view).toHaveNoLeaks();
});
});