backbone.dropboxdatastore
Version:
Backbone Dropbox Datastore API adapter
77 lines (59 loc) • 2.4 kB
JavaScript
describe('Backbone.DropboxDatastore#destroy', function() {
var resultPromise, dropboxDatastore, getTableDefer;
beforeEach(function() {
dropboxDatastore = new Backbone.DropboxDatastore('tableName');
getTableDefer = $.Deferred();
getTableDefer.resolve('tableMock');
spyOn(dropboxDatastore, 'getTable').andReturn(getTableDefer.promise());
spyOn(dropboxDatastore, '_destroyWithTable').andReturn('destroyedMock');
resultPromise = dropboxDatastore.destroy('modelMock');
});
it('call getTable', function() {
expect(dropboxDatastore.getTable).toHaveBeenCalled();
});
it('call _destroyWithTable with table', function() {
expect(dropboxDatastore._destroyWithTable).toHaveBeenCalledWith('modelMock', 'tableMock');
});
it('return promise with result of _destroyWithTable', function() {
resultPromise.then(function(result) {
expect(result).toBe('destroyedMock');
});
});
});
describe('Backbone.DropboxDatastore#_destroyWithTable', function() {
var result, dropboxDatastore, modelSpy;
beforeEach(function() {
dropboxDatastore = new Backbone.DropboxDatastore('tableName');
modelSpy = jasmine.createSpyObj('model', ['toJSON']);
modelSpy.toJSON.andReturn('attributesMock');
});
describe('when model exists', function() {
var recordSpy;
beforeEach(function() {
recordSpy = jasmine.createSpyObj('foundRecord', ['deleteRecord']);
spyOn(dropboxDatastore, '_findWithTable').andReturn(recordSpy);
result = dropboxDatastore._destroyWithTable(modelSpy, 'tableMock');
});
it('call #_findWithTable', function() {
expect(dropboxDatastore._findWithTable).toHaveBeenCalledWith(modelSpy, 'tableMock');
});
it('call deleteRecord on found record ', function() {
expect(recordSpy.deleteRecord).toHaveBeenCalledWith();
});
it('return empty object', function() {
expect(result).toEqual({});
});
});
describe('when model does not exist', function() {
beforeEach(function() {
spyOn(dropboxDatastore, '_findWithTable').andReturn(null);
dropboxDatastore._destroyWithTable(modelSpy, 'tableMock');
});
it('call #_findWithTable', function() {
expect(dropboxDatastore._findWithTable).toHaveBeenCalledWith(modelSpy, 'tableMock');
});
it('return empty object', function() {
expect(result).toEqual({});
});
});
});