0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-17 23:45:29 -05:00

test(local-storage): isolate tests & replace the hacky test

This commit is contained in:
BuffayBu 2019-01-30 11:10:10 +08:00
parent e62ef8df99
commit f7685f781e

View file

@ -2,7 +2,6 @@
import rimRaf from 'rimraf';
import path from 'path';
import fs from 'fs';
import LocalStorage from '../../../src/lib/local-storage';
import AppConfig from '../../../src/lib/config';
// $FlowFixMe
@ -27,6 +26,13 @@ describe('LocalStorage', () => {
const pkgNameScoped = `@scope/${pkgName}-scope`;
const tarballName: string = `${pkgName}-add-tarball-1.0.4.tgz`;
const tarballName2: string = `${pkgName}-add-tarball-1.0.5.tgz`;
const getStorage = (LocalStorageClass = LocalStorage) => {
const config: Config = new AppConfig(configExample);
config.self_path = path.join('../partials/store');
return new LocalStorageClass(config, Logger.logger);
}
const getPackageMetadataFromStore = (pkgName: string) => {
return new Promise((resolve) => {
storage.getPackageMetadata(pkgName, (err, data ) => {
@ -78,10 +84,7 @@ describe('LocalStorage', () => {
};
beforeAll(() => {
const config: Config = new AppConfig(configExample);
config.self_path = path.join('../partials/store');
storage = new LocalStorage(config, Logger.logger);
storage = getStorage();
});
test('should be defined', () => {
@ -254,15 +257,24 @@ describe('LocalStorage', () => {
const metadata = JSON.parse(readMetadata('metadata-update-versions-tags'));
const pkgName = 'add-update-versions-test-1';
const version = '1.0.2';
beforeAll(async () => {
await addPackageToStore(pkgName, generatePackageTemplate(pkgName));
await addNewVersion(pkgName, '1.0.1');
await addNewVersion(pkgName, version);
let _storage;
beforeEach(done => {
class MockLocalStorage extends LocalStorage {}
// $FlowFixMe
MockLocalStorage.prototype._writePackage = jest.fn(LocalStorage.prototype._writePackage)
_storage = getStorage(MockLocalStorage);
rimRaf(path.join(configExample.storage, pkgName), async () => {
await addPackageToStore(pkgName, generatePackageTemplate(pkgName));
await addNewVersion(pkgName, '1.0.1');
await addNewVersion(pkgName, version);
done();
})
})
test('should update versions from external source', async (done) => {
storage.updateVersions(pkgName, metadata, (err, data) => {
_storage.updateVersions(pkgName, metadata, (err, data) => {
expect(err).toBeNull();
expect(_storage._writePackage).toHaveBeenCalledTimes(1);
expect(data.versions['1.0.1']).toBeDefined();
expect(data.versions[version]).toBeDefined();
expect(data.versions['1.0.4']).toBeDefined();
@ -279,14 +291,13 @@ describe('LocalStorage', () => {
});
test('should not update if the metadata match', done => {
const metadataPath = path.join(configExample.storage, pkgName, 'package.json')
const prevStat = fs.statSync(metadataPath)
storage.updateVersions(pkgName, metadata, (err, data) => {
expect(err).toBeNull()
const nextStat = fs.statSync(metadataPath)
expect(nextStat).toHaveProperty('ctime', prevStat.ctime)
expect(nextStat).toHaveProperty('mtime', prevStat.mtime)
done()
_storage.updateVersions(pkgName, metadata, e => {
expect(e).toBeNull()
_storage.updateVersions(pkgName, metadata, err => {
expect(err).toBeNull()
expect(_storage._writePackage).toHaveBeenCalledTimes(1);
done()
})
})
})
});