diff --git a/test/unit/api/local-storage.spec.js b/test/unit/api/local-storage.spec.js index 600581554..8d398c767 100644 --- a/test/unit/api/local-storage.spec.js +++ b/test/unit/api/local-storage.spec.js @@ -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() + }) }) }) });