Files
cartodb/lib/assets/test/spec/dashboard/data/api-keys-collection.spec.js
2020-06-15 10:58:47 +08:00

82 lines
2.4 KiB
JavaScript

var Backbone = require('backbone');
var ApiKeyModel = require('dashboard/data/api-key-model');
var ApiKeysCollection = require('dashboard/data/api-keys-collection');
const apiKeysCollectionTypes = require('dashboard/data/api-keys-collection-types');
var modelData = {
name: 'fake_name',
token: 'fake_token'
};
describe('dashboard/data/api-key-collection', function () {
var collection;
beforeEach(function () {
collection = new ApiKeysCollection({}, {
userModel: new Backbone.Model({
base_url: 'wadus.com'
})
});
});
it('throws an error when userModel is missing', function () {
collection = function () {
return new ApiKeysCollection(null, {});
};
expect(collection).toThrowError('userModel is required');
});
it('should set the the default REGULAR type correctly when no type param is passed as option', function () {
collection = new ApiKeysCollection(null, {
userModel: new Backbone.Model({
base_url: 'wadus.com'
})
});
expect(collection._type).toEqual([apiKeysCollectionTypes.REGULAR]);
});
it('should set the type correctly when type param is passed as option', function () {
collection = new ApiKeysCollection(null, {
userModel: new Backbone.Model({
base_url: 'wadus.com'
}),
type: [apiKeysCollectionTypes.MASTER, apiKeysCollectionTypes.DEFAULT]
});
expect(collection._type).toEqual([apiKeysCollectionTypes.MASTER, apiKeysCollectionTypes.DEFAULT]);
});
it('should set status to fetched when synced', function () {
collection.trigger('sync');
expect(collection.status).toBe('fetched');
});
it('should set status to errored when sync has any error', function () {
collection.trigger('error');
expect(collection.status).toBe('errored');
});
describe('._url', function () {
it('should return URL properly', function () {
expect(collection.url()).toBe('wadus.com/api/v3/api_keys?per_page=5&page=1&type%5B%5D=regular');
});
});
it('should add UserModel to items', function () {
const collectionItem = collection.add(modelData);
expect(collectionItem._userModel).toBeDefined();
expect(collectionItem instanceof ApiKeyModel).toBe(true);
});
it('should add id property to item', function () {
const parsedResponse = collection.parse({
result: [modelData]
});
expect(parsedResponse[0].id).toBe(modelData.name);
});
});