0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-01-20 22:52:46 -05:00

test: Increase coverage for local-data storage

This commit is contained in:
Juan Picado @jotadeveloper 2017-08-25 22:06:37 +02:00
parent 2c3a8f9d42
commit 23bcf6fb86
No known key found for this signature in database
GPG key ID: 18AC54485952D158
3 changed files with 72 additions and 9 deletions

View file

@ -78,6 +78,7 @@
"file-loader": "0.11.2",
"flow-runtime": "0.13.0",
"friendly-errors-webpack-plugin": "1.6.1",
"fs-extra": "4.0.1",
"github-markdown-css": "2.8.0",
"html-webpack-plugin": "2.29.0",
"in-publish": "2.0.0",

View file

@ -4,34 +4,78 @@ const assert = require('assert');
const LocalData = require('../../src/lib/storage/local/local-data');
const path = require('path');
const _ = require('lodash');
const fs = require('fs-extra');
describe('Local Database', function() {
const buildCorruptedPath = () => path.join(__dirname, './partials/storage/verdaccio-corrupted.db.json');
const buildValidDbPath = () => path.join(__dirname, './partials/storage/verdaccio.db.json');
describe('reading database', () => {
const buildCorruptedPath = () => path.join(__dirname, './partials/storage/verdaccio-corrupted.db.json');
it('should return empty database on read corrupted database', () => {
const config = new LocalData(buildCorruptedPath());
assert(_.isEmpty(config.data.list));
const dataLocal = new LocalData(buildCorruptedPath());
assert(_.isEmpty(dataLocal.data.list));
});
it('should return a database on read valid database', () => {
const config = new LocalData(path.join(__dirname, './partials/storage/verdaccio.db.json'));
assert(_.isEmpty(config.data.list) === false);
const dataLocal = new LocalData(buildValidDbPath());
assert(_.isEmpty(dataLocal.data.list) === false);
});
it('should fails on sync a corrupted database', () => {
const config = new LocalData(buildCorruptedPath());
const error = config.sync();
const dataLocal = new LocalData(buildCorruptedPath());
const error = dataLocal.sync();
assert(_.isError(error));
assert(error.message.match(/locked/));
assert(dataLocal.locked);
});
});
describe('add/remove packages to database', () => {
it('should add a new package to local database', () => {
const dataLocal = new LocalData(buildCorruptedPath());
assert(_.isEmpty(dataLocal.data.list));
dataLocal.add('package1');
assert(!_.isEmpty(dataLocal.data.list));
});
it('should remove a new package to local database', () => {
const dataLocal = new LocalData(buildCorruptedPath());
const pkgName = 'package1';
assert(_.isEmpty(dataLocal.data.list));
dataLocal.add(pkgName);
dataLocal.remove(pkgName);
assert(_.isEmpty(dataLocal.data.list));
});
});
describe('sync packages to database', () => {
beforeEach(function() {
this.newDb = path.join(__dirname, './test-storage/verdaccio.temp.db.json');
fs.copySync(buildValidDbPath(), this.newDb);
});
it('should check sync packages', function() {
const localData1 = new LocalData(this.newDb);
localData1.add('package1');
const localData2 = new LocalData(this.newDb);
assert(_.isEmpty(localData2.data.list) === false);
assert(localData2.data.list.length === 2);
});
});
});

View file

@ -2908,6 +2908,14 @@ fs-access@^1.0.0:
dependencies:
null-check "^1.0.0"
fs-extra@4.0.1:
version "4.0.1"
resolved "http://localhost:5555/fs-extra/-/fs-extra-4.0.1.tgz#7fc0c6c8957f983f57f306a24e5b9ddd8d0dd880"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^3.0.0"
universalify "^0.1.0"
fs-readdir-recursive@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
@ -3136,7 +3144,7 @@ globule@^1.0.0:
lodash "~4.17.4"
minimatch "~3.0.2"
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4:
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
version "4.1.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@ -3849,6 +3857,12 @@ json5@^0.5.0, json5@^0.5.1:
version "0.5.1"
resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
jsonfile@^3.0.0:
version "3.0.1"
resolved "http://localhost:5555/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66"
optionalDependencies:
graceful-fs "^4.1.6"
jsonfilter@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz#21ef7cedc75193813c75932e96a98be205ba5a11"
@ -6654,6 +6668,10 @@ uniqs@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
universalify@^0.1.0:
version "0.1.1"
resolved "http://localhost:5555/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
unix-crypt-td-js@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz#1c0824150481bc7a01d49e98f1ec668d82412f3b"