Initial commit

This commit is contained in:
zhongjin
2020-06-15 10:58:47 +08:00
commit 4f1dfe7564
8590 changed files with 1516878 additions and 0 deletions
@@ -0,0 +1,41 @@
var Backbone = require('backbone');
var FormView = require('builder/components/modals/map-metadata/form/form-view');
describe('components/modals/map-metadata/form-view', function () {
beforeEach(function () {
this.view = new FormView({
visDefinitionModel: new Backbone.Model(),
visMetadataModel: new Backbone.Model()
});
this.view.model = {};
});
it('._commitView should call _sanitizeName', function () {
spyOn(this.view, '_sanitizeName');
var name = 'something';
var view = {
model: {
changed: {name: name},
get: function () {
return name;
}
},
commit: function () {}
};
this.view._commitView(view);
expect(this.view._sanitizeName).toHaveBeenCalledWith(name);
});
it('._sanitizeName should sanitize input and set metadata model name', function () {
this.view._sanitizeName('<script>');
expect(this.view._visMetadataModel.get('name')).toEqual('');
this.view._sanitizeName('something');
expect(this.view._visMetadataModel.get('name')).toEqual('something');
this.view._sanitizeName(null);
expect(this.view._visMetadataModel.get('name')).toEqual('');
});
});
@@ -0,0 +1,98 @@
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', "><script>alert('yep');</script>");
var name = view._getMetadataName();
expect(name).toEqual('&gt;');
});
it('._getMetadataDescription sanitizes input', function () {
view._visMetadataModel.set('description', "<img src='http://emojipedia-us.s3.amazonaws.com/cache/b8/b4/b8b4e86a110557e6b6d666c9cf6d6cc8.png' />");
var name = view._getMetadataDescription();
expect(name).toEqual('<img>');
});
it('._getMetadataTags sanitizes input', function () {
view._visMetadataModel.set('tags', [
"<img src='http://emojipedia-us.s3.amazonaws.com/cache/b8/b4/b8b4e86a110557e6b6d666c9cf6d6cc8.png' />",
"><script>alert('yep');</script>"
]);
var tags = view._getMetadataTags();
expect(tags.length).toBe(2);
expect(tags[0]).toEqual('<img>');
expect(tags[1]).toEqual('&gt;');
});
it('should not have any leaks', function () {
expect(view).toHaveNoLeaks();
});
});
@@ -0,0 +1,48 @@
var VisDefinitionModel = require('builder/data/vis-definition-model');
var ConfigModel = require('builder/data/config-model');
var saveMetadataMap = require('builder/components/modals/map-metadata/save-metadata-map');
describe('components/modals/map-metadata/save-metadata-map', function () {
var visDefinitionModel;
var successSaveSpy;
var errorSaveSpy;
beforeEach(function () {
var configModel = new ConfigModel({
base_url: '/u/pepe'
});
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
});
successSaveSpy = jasmine.createSpy('successSave');
errorSaveSpy = jasmine.createSpy('erroSave');
spyOn(visDefinitionModel, 'save');
});
it('should rename document title and the suffix should contain | CARTO', function () {
saveMetadataMap({
onSuccess: successSaveSpy,
onError: errorSaveSpy,
visDefinitionModel: visDefinitionModel,
name: 'FOO',
description: 'Wadus',
tags: ['foo', 'bar']
});
expect(visDefinitionModel.save).toHaveBeenCalled();
visDefinitionModel.save.calls.argsFor(0)[1].success();
expect(successSaveSpy).toHaveBeenCalled();
expect(document.title).not.toMatch(/CartoDB/);
expect(document.title).toBe('FOO | 快点');
});
});