cartodb-4.42/lib/assets/test/spec/cartodb/feed/feed.spec.js
2024-04-06 05:25:13 +00:00

106 lines
3.7 KiB
JavaScript

var $ = require('jquery-cdb-v3');
var cdb = require('cartodb.js-v3');
cdb.admin = require('cdb.admin');
var Feed = require('../../../../javascripts/cartodb/user_feed/view');
var Visualizations = require('../../../../javascripts/cartodb/user_feed/feed_collection');
describe('feed/view', function() {
afterEach(function() {
$('.js-feed').remove();
});
beforeEach(function() {
cdb.config.set('url_prefix', 'base_url');
Visualizations.prototype.sync = function(a, b, opts) {
var c = [];
c.push({
id: 1, name: 'vis_name', updated_at: '2015-10-11', table: { geometry_types: ['ST_Point'] },
permission: { owner: { username: 'javier', avatar_url: 'http://avatar.url', map_count: 10 } }
});
c.push({
id: 2, name: 'vis_name_2', updated_at: '2015-10-11', table: { geometry_types: ['ST_MultiPoint'] },
permission: { owner: { username: 'javier', avatar_url: 'http://avatar.url', map_count: 20 } }
});
c.push({
id: 3, name: 'vis_name_2', updated_at: '2015-10-11', table: { geometry_types: ['ST_MultiPoint'] },
permission: { owner: { username: 'javier', avatar_url: 'http://avatar.url', map_count: 20 } }
});
c.push({
id: 4, name: 'vis_name_2', updated_at: '2015-10-11', table: { geometry_types: ['ST_MultiPoint'] },
permission: { owner: { username: 'javier', avatar_url: 'http://avatar.url', map_count: 20 } }
});
c.push({
id: 5, name: 'vis_name_2', updated_at: '2015-10-11',
table: { geometry_types: ['ST_MultiPoint'] },
permission: { owner: { username: 'javier', avatar_url: 'http://avatar.url', map_count: 20 } }
});
opts.success({ visualizations: c.slice(0, 4), total_entries: c.length });
};
this.user = new cdb.admin.User({
base_url: 'http://pepe.carto.com',
username: 'pepe',
account_type: 'FREE'
});
this.authenticatedUser = new cdb.open.AuthenticatedUser();
this.authenticatedUser.set('username', this.user.get('username'));
$('body').append('<div class="js-feed"></div>');
this.view = new Feed({
el: $('.js-feed'),
authenticatedUser: this.authenticatedUser
});
this.view.render();
});
it('should fetch a list of visualizations', function() {
expect(this.view.el.innerHTML).toContain('vis_name');
expect(this.view.el.innerHTML).toContain('vis_name_2');
});
it('should prepend the base_url to the links', function() {
expect(this.view.$('.DefaultTitle-link:first').attr('href')).toContain('base_url');
});
it('should hide the load more button when the limit is reached', function() {
this.view.$el.find(".js-more").click();
expect(this.view.model.get('show_more')).toBeFalsy();
expect(this.view.$('.js-more').hasClass('is-hidden')).toBeTruthy();
});
it('should define a model', function() {
expect(this.view.model).toBeDefined();
expect(this.view.model.get('vis_count')).toBeDefined();
expect(this.view.model.get('size')).toBeDefined();
expect(this.view.model.get('page')).toEqual(0);
expect(this.view.model.get('order_by')).toEqual('updated_at');
});
it('should allow to toggle the loader', function() {
expect(this.view.loader).toBeDefined();
this.view.model.set('show_loader', false);
expect(this.view.loader.$el.css('display')).toEqual('none');
this.view.model.set('show_loader', true);
expect(this.view.loader.$el.css('display')).toEqual('block');
});
it('should allow to toggle the mast', function() {
this.view.model.set('show_mast', false);
expect(this.view.$('.js-mast').hasClass('is-hidden')).toBeTruthy();
this.view.model.set('show_mast', true);
expect(this.view.$('.js-mast').hasClass('is-hidden')).toBeFalsy();
});
});