/*globals describe, it, afterEach */ var should = require('should'), sinon = require('sinon'), // Stuff we are testing versioning = require('../../server/data/schema').versioning, errors = require('../../server/errors'), sandbox = sinon.sandbox.create(); describe('Versioning', function () { afterEach(function () { sandbox.restore(); }); describe('getMigrationVersions', function () { it('should output a single item if the from and to versions are the same', function () { should.exist(versioning.getMigrationVersions); versioning.getMigrationVersions('003', '003').should.eql(['003']); versioning.getMigrationVersions('004', '004').should.eql(['004']); }); it('should output an empty array if the toVersion is higher than the fromVersion', function () { versioning.getMigrationVersions('003', '002').should.eql([]); }); it('should output all the versions between two versions', function () { versioning.getMigrationVersions('003', '004').should.eql(['003', '004']); versioning.getMigrationVersions('003', '005').should.eql(['003', '004', '005']); versioning.getMigrationVersions('003', '006').should.eql(['003', '004', '005', '006']); versioning.getMigrationVersions('010', '011').should.eql(['010', '011']); }); }); describe('getDefaultDatabaseVersion', function () { it('should return the correct version', function () { var currentVersion = require('../../server/data/schema').defaultSettings.core.databaseVersion.defaultValue; // This function has an internal cache, so we call it twice. // First, to check that it fetches the correct version from default-settings.json. versioning.getDefaultDatabaseVersion().should.eql(currentVersion); // Second, to check that it returns the same value from the cache. versioning.getDefaultDatabaseVersion().should.eql(currentVersion); }); }); describe('showCannotMigrateError', function () { it('should output a detailed error message', function () { var errorStub = sandbox.stub(errors, 'logAndRejectError'); versioning.showCannotMigrateError(); errorStub.calledOnce.should.be.true(); errorStub.calledWith( 'Unable to upgrade from version 0.4.2 or earlier', 'Please upgrade to 0.7.1 first', 'See http://support.ghost.org/how-to-upgrade/ for instructions.' ).should.be.true(); }); }); });