diff options
Diffstat (limited to 'deps/npm/test/tap/all-package-metadata-cache-stream-unit.js')
-rw-r--r-- | deps/npm/test/tap/all-package-metadata-cache-stream-unit.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js new file mode 100644 index 0000000000..51be836769 --- /dev/null +++ b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js @@ -0,0 +1,136 @@ +'use strict' + +require('../common-tap.js') +var test = require('tap').test +var mkdirp = require('mkdirp') +var rimraf = require('rimraf') +var path = require('path') +var ms = require('mississippi') +var Tacks = require('tacks') +var File = Tacks.File + +var _createCacheEntryStream = require('../../lib/search/all-package-metadata.js')._createCacheEntryStream + +var PKG_DIR = path.resolve(__dirname, 'create-cache-entry-stream') +var CACHE_DIR = path.resolve(PKG_DIR, 'cache') + +function setup () { + mkdirp.sync(CACHE_DIR) +} + +function cleanup () { + rimraf.sync(PKG_DIR) +} + +test('createCacheEntryStream basic', function (t) { + setup() + var cachePath = path.join(CACHE_DIR, '.cache.json') + var fixture = new Tacks(File({ + '_updated': 1234, + bar: { + name: 'bar', + version: '1.0.0' + }, + foo: { + name: 'foo', + version: '1.0.0' + } + })) + fixture.create(cachePath) + _createCacheEntryStream(cachePath, function (err, stream, latest) { + if (err) throw err + t.equals(latest, 1234, '`latest` correctly extracted') + t.ok(stream, 'returned a stream') + var results = [] + stream.on('data', function (pkg) { + results.push(pkg) + }) + ms.finished(stream, function (err) { + if (err) throw err + t.deepEquals(results, [{ + name: 'bar', + version: '1.0.0' + }, { + name: 'foo', + version: '1.0.0' + }]) + cleanup() + t.done() + }) + }) +}) + +test('createCacheEntryStream empty cache', function (t) { + setup() + var cachePath = path.join(CACHE_DIR, '.cache.json') + var fixture = new Tacks(File({})) + fixture.create(cachePath) + _createCacheEntryStream(cachePath, function (err, stream, latest) { + t.ok(err, 'returned an error because there was no _updated') + t.match(err.message, /Empty or invalid stream/, 'useful error message') + t.notOk(stream, 'no stream returned') + t.notOk(latest, 'no latest returned') + cleanup() + t.done() + }) +}) + +test('createCacheEntryStream no entry cache', function (t) { + setup() + var cachePath = path.join(CACHE_DIR, '.cache.json') + var fixture = new Tacks(File({ + '_updated': 1234 + })) + fixture.create(cachePath) + _createCacheEntryStream(cachePath, function (err, stream, latest) { + if (err) throw err + t.equals(latest, 1234, '`latest` correctly extracted') + t.ok(stream, 'returned a stream') + var results = [] + stream.on('data', function (pkg) { + results.push(pkg) + }) + ms.finished(stream, function (err) { + if (err) throw err + t.deepEquals(results, [], 'no results') + cleanup() + t.done() + }) + }) +}) + +test('createCacheEntryStream missing cache', function (t) { + setup() + var cachePath = path.join(CACHE_DIR, '.cache.json') + _createCacheEntryStream(cachePath, function (err, stream, latest) { + t.ok(err, 'returned an error because there was no cache') + t.equals(err.code, 'ENOENT', 'useful error message') + t.notOk(stream, 'no stream returned') + t.notOk(latest, 'no latest returned') + cleanup() + t.done() + }) +}) + +test('createCacheEntryStream bad syntax', function (t) { + setup() + var cachePath = path.join(CACHE_DIR, '.cache.json') + var fixture = new Tacks(File('{"_updated": 1234, uh oh')) + fixture.create(cachePath) + _createCacheEntryStream(cachePath, function (err, stream, latest) { + if (err) throw err + t.equals(latest, 1234, '`latest` correctly extracted') + t.ok(stream, 'returned a stream') + var results = [] + stream.on('data', function (pkg) { + results.push(pkg) + }) + ms.finished(stream, function (err) { + t.ok(err, 'stream errored') + t.match(err.message, /Invalid JSON/i, 'explains there\'s a syntax error') + t.deepEquals(results, [], 'no results') + cleanup() + t.done() + }) + }) +}) |