cartodb/lib/assets/test/spec/builder/components/modals/publish/publish-view.spec.js
2020-06-15 10:58:47 +08:00

123 lines
3.5 KiB
JavaScript

var Backbone = require('backbone');
var PublishView = require('builder/components/modals/publish/publish-view');
var ConfigModel = require('builder/data/config-model');
var UserModel = require('builder/data/user-model');
var PrivacyCollection = require('builder/components/modals/publish/privacy-collection');
var VisDefinitionModel = require('builder/data/vis-definition-model');
describe('components/modals/publish/publish-view', function () {
var userModel;
beforeEach(function () {
jasmine.Ajax.install();
jasmine.Ajax.stubRequest(new RegExp('^http(s)?.*grantables.*'))
.andReturn({ status: 200 });
var configModel = new ConfigModel({
base_url: '/u/pepe'
});
userModel = new UserModel({
id: 1,
username: 'pepe',
avatar_url: 'https://example.com/avatar.jpg',
actions: {
private_tables: true
}
}, {
configModel: configModel
});
userModel._organizationModel = new Backbone.Model({
id: 1
});
var collection = new PrivacyCollection([{
privacy: 'PUBLIC',
title: 'Public',
desc: 'Lorem ipsum',
cssClass: 'is-green',
selected: true
}, {
privacy: 'LINK',
title: 'Link',
desc: 'Yabadababa',
cssClass: 'is-orange'
}, {
privacy: 'PASSWORD',
title: 'Password',
desc: 'Wadus'
}, {
privacy: 'PRIVATE',
title: 'Private',
desc: 'Funínculo',
cssClass: 'is-red'
}]);
var mapcapsCollection = new Backbone.Collection([{
created_at: '2016-06-21T15:30:06+00:00'
}]);
var visDefinitionModel = new VisDefinitionModel({
name: 'Foo Map',
privacy: 'PUBLIC',
updated_at: '2016-06-21T15:30:06+00:00',
type: 'derived',
permission: {}
}, {
configModel: configModel
});
this.view = new PublishView({
mapcapsCollection: mapcapsCollection,
modalModel: new Backbone.Model(),
visDefinitionModel: visDefinitionModel,
privacyCollection: collection,
userModel: userModel,
configModel: configModel,
isOwner: true,
ownerName: 'matata'
});
this.view.render();
});
afterEach(function () {
this.view.remove();
jasmine.Ajax.uninstall();
});
it('should render properly', function () {
expect(this.view.$el.html()).toContain('Foo Map');
expect(this.view.$('.js-toggle').length).toBe(1);
expect(this.view.$('.js-toggle').text()).toContain('PUBLIC');
expect(this.view.$('.js-share-users').length).toBe(1);
expect(this.view.$('.js-panes').length).toBe(1);
expect(this.view.$('.js-menu').length).toBe(1);
expect(this.view.$('.Publish-modalLink').length).toBe(2);
});
it('should render properly in share in single mode', function () {
this.view.mode = 'share';
this.view.render();
expect(this.view.$el.html()).toContain('Foo Map');
expect(this.view.$('.js-menu').length).toBe(0);
expect(this.view.$('.Publish-modalLink').length).toBe(0);
});
it('should render properly for users without organization', function () {
userModel._organizationModel = false;
this.view.render();
expect(this.view.$el.html()).toContain('Foo Map');
expect(this.view.$('.js-menu').length).toBe(0);
expect(this.view.$('.js-share-users').length).toBe(0); // share badget
expect(this.view.$('.Publish-modalLink').length).toBe(0); // it runs in single mode without tabs and share view
});
it('should not have any leaks', function () {
expect(this.view).toHaveNoLeaks();
});
});