summaryrefslogtreecommitdiff
path: root/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
diff options
context:
space:
mode:
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.js136
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()
+ })
+ })
+})