135 lines
4.0 KiB
JavaScript
135 lines
4.0 KiB
JavaScript
var ConfigModel = require('builder/data/config-model');
|
|
var UploadModel = require('builder/data/upload-model');
|
|
var UserModel = require('builder/data/user-model');
|
|
|
|
describe('data/upload-model', function () {
|
|
beforeEach(function () {
|
|
var configModel = new ConfigModel({
|
|
base_url: '/u/pepe'
|
|
});
|
|
|
|
this.userModel = new UserModel({
|
|
id: 'uuid',
|
|
username: 'paco',
|
|
organization: {
|
|
id: 'o1'
|
|
}
|
|
}, {
|
|
configModel: configModel
|
|
});
|
|
this.model = new UploadModel({}, {
|
|
userModel: this.userModel,
|
|
configModel: configModel
|
|
});
|
|
spyOn(this.model, 'bind').and.callThrough();
|
|
});
|
|
|
|
it('should have progress, change:value and error/invalid binds', function () {
|
|
this.model._initBinds();
|
|
var args_0 = this.model.bind.calls.argsFor(0);
|
|
expect(args_0[0]).toEqual('progress');
|
|
var args_1 = this.model.bind.calls.argsFor(1);
|
|
expect(args_1[0]).toEqual('change:value');
|
|
var args_2 = this.model.bind.calls.argsFor(2);
|
|
expect(args_2[0]).toEqual('error invalid');
|
|
});
|
|
|
|
it('should set uploading state when progress change', function () {
|
|
this.model.set({ value: 'http://paco.csv', type: 'url' });
|
|
this.model.trigger('progress', 20);
|
|
expect(this.model.get('state')).toBe('uploading');
|
|
});
|
|
|
|
it('should have a fileAttribute set', function () {
|
|
expect(this.model.fileAttribute).toBe('filename');
|
|
});
|
|
|
|
it('should validate the model when changes', function () {
|
|
spyOn(this.model, 'validate');
|
|
this.model.setUpload({
|
|
value: 'http://marca.com/paco.jjjjj',
|
|
type: 'url'
|
|
});
|
|
expect(this.model.validate).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should change state when validate fails', function () {
|
|
this.model.setUpload({
|
|
type: 'url',
|
|
value: 'hello'
|
|
});
|
|
expect(this.model.get('state')).toBe('error');
|
|
});
|
|
|
|
it('should add error code when size validation fails', function () {
|
|
this.model._userModel.set('remaining_byte_quota', 1);
|
|
|
|
this.model.setUpload({
|
|
type: 'file',
|
|
value: { name: 'fake.csv', size: 1000 }
|
|
});
|
|
expect(this.model.get('state')).toBe('error');
|
|
expect(this.model.get('error_code')).toBe(8001);
|
|
|
|
this.model.setUpload({
|
|
type: 'remote',
|
|
remote_visualization_id: 'iddd',
|
|
size: 1000
|
|
});
|
|
expect(this.model.get('state')).toBe('error');
|
|
expect(this.model.get('error_code')).toBe(8001);
|
|
|
|
this.model.setUpload({
|
|
type: 'url',
|
|
value: 'heyheyhey.org'
|
|
});
|
|
expect(this.model.get('state')).toBe('error');
|
|
expect(this.model.get('error_code')).toBe('');
|
|
});
|
|
|
|
it('should raise an error when file name is not provided', function () {
|
|
this.model.setUpload({
|
|
type: 'file',
|
|
value: {}
|
|
});
|
|
expect(this.model.get('state')).toBe('error');
|
|
expect(this.model.get('get_error_text').what_about).toBe('data.upload-model.file-defined');
|
|
});
|
|
|
|
describe('.setUpload', function () {
|
|
beforeEach(function () {
|
|
spyOn(this.model, 'set');
|
|
});
|
|
|
|
it('should set the proper data and validate it', function () {
|
|
this.model.setUpload({
|
|
type: 'url',
|
|
value: 'heyheyhey.org'
|
|
});
|
|
expect(this.model.set).toHaveBeenCalled();
|
|
expect(this.model.set.calls.argsFor(0)[0]).toEqual(jasmine.objectContaining({ type: 'url', value: 'heyheyhey.org' }));
|
|
expect(this.model.set.calls.argsFor(0)[1]).toEqual(jasmine.objectContaining({ validate: true }));
|
|
});
|
|
});
|
|
|
|
describe('.setFresh', function () {
|
|
beforeEach(function () {
|
|
spyOn(this.model, 'set');
|
|
|
|
this.model.setFresh({
|
|
foo: 'bar',
|
|
create_vis: true
|
|
});
|
|
});
|
|
|
|
it('should set the given dataset', function () {
|
|
expect(this.model.set).toHaveBeenCalled();
|
|
expect(this.model.set.calls.argsFor(0)[0]).toEqual(jasmine.objectContaining({ foo: 'bar' }));
|
|
});
|
|
|
|
it('should omit the create_vis value since set in constructor', function () {
|
|
expect(this.model.set.calls.argsFor(0)[0]).not.toEqual(jasmine.objectContaining({ create_vis: true }));
|
|
});
|
|
});
|
|
});
|