nextcloud/apps/files_versions/tests/js/versionmodelSpec.js

97 lines
2.4 KiB
JavaScript

/*
* Copyright (c) 2015
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
describe('OCA.Versions.VersionModel', function() {
var VersionModel = OCA.Versions.VersionModel;
var model;
beforeEach(function() {
model = new VersionModel({
id: 10000000,
timestamp: 10000000,
fullPath: '/subdir/some file.txt',
name: 'some file.txt',
size: 150
});
});
it('returns the full path', function() {
expect(model.getFullPath()).toEqual('/subdir/some file.txt');
});
it('returns the preview url', function() {
expect(model.getPreviewUrl())
.toEqual(OC.generateUrl('/apps/files_versions/preview') +
'?file=%2Fsubdir%2Fsome%20file.txt&version=10000000'
);
});
it('returns the download url', function() {
expect(model.getDownloadUrl())
.toEqual(OC.generateUrl('/apps/files_versions/download.php') +
'?file=%2Fsubdir%2Fsome%20file.txt&revision=10000000'
);
});
describe('reverting', function() {
var revertEventStub;
var successStub;
var errorStub;
beforeEach(function() {
revertEventStub = sinon.stub();
errorStub = sinon.stub();
successStub = sinon.stub();
model.on('revert', revertEventStub);
model.on('error', errorStub);
});
it('tells the server to revert when calling the revert method', function() {
model.revert({
success: successStub
});
expect(fakeServer.requests.length).toEqual(1);
expect(fakeServer.requests[0].url)
.toEqual(
OC.generateUrl('/apps/files_versions/ajax/rollbackVersion.php') +
'?file=%2Fsubdir%2Fsome+file.txt&revision=10000000'
);
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json' },
JSON.stringify({
status: 'success',
})
);
expect(revertEventStub.calledOnce).toEqual(true);
expect(successStub.calledOnce).toEqual(true);
expect(errorStub.notCalled).toEqual(true);
});
it('triggers error event when server returns a failure', function() {
model.revert({
success: successStub
});
expect(fakeServer.requests.length).toEqual(1);
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json' },
JSON.stringify({
status: 'error',
})
);
expect(revertEventStub.notCalled).toEqual(true);
expect(successStub.notCalled).toEqual(true);
expect(errorStub.calledOnce).toEqual(true);
});
});
});