82 lines
2.4 KiB
JavaScript
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);
|
|
});
|
|
});
|