Skip to content
This repository was archived by the owner on Aug 11, 2022. It is now read-only.

Commit 9368967

Browse files
committed
test: updated tests for search
1 parent b19a0a5 commit 9368967

File tree

1 file changed

+45
-61
lines changed

1 file changed

+45
-61
lines changed

test/tap/search.js

Lines changed: 45 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var path = require('path')
22
var mkdirp = require('mkdirp')
3+
var mr = require('npm-registry-mock')
34
var osenv = require('osenv')
45
var rimraf = require('rimraf')
56
var cacheFile = require('npm-cache-filename')
@@ -14,28 +15,26 @@ var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
1415
var cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
1516
var cachePath = path.join(cacheBase, '.cache.json')
1617

18+
var server
19+
1720
test('setup', function (t) {
18-
t.pass('all set up')
19-
t.done()
21+
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
22+
t.ifError(err, 'registry mocked successfully')
23+
server = s
24+
t.pass('all set up')
25+
t.done()
26+
})
2027
})
2128

2229
test('notifies when there are no results', function (t) {
2330
setup()
24-
var now = Date.now()
25-
var cacheContents = {
26-
'_updated': now,
27-
bar: { name: 'bar', version: '1.0.0' },
28-
cool: { name: 'cool', version: '1.0.0' },
29-
foo: { name: 'foo', version: '2.0.0' },
30-
other: { name: 'other', version: '1.0.0' }
31-
}
32-
var fixture = new Tacks(File(cacheContents))
33-
fixture.create(cachePath)
31+
server.get('/-/v1/search?text=none&size=20').once().reply(200, {
32+
objects: []
33+
})
3434
common.npm([
35-
'search', 'nomatcheswhatsoeverfromthis',
35+
'search', 'none',
3636
'--registry', common.registry,
37-
'--loglevel', 'error',
38-
'--cache', CACHE_DIR
37+
'--loglevel', 'error'
3938
], {}, function (err, code, stdout, stderr) {
4039
if (err) throw err
4140
t.equal(stderr, '', 'no error output')
@@ -47,13 +46,16 @@ test('notifies when there are no results', function (t) {
4746

4847
test('spits out a useful error when no cache nor network', function (t) {
4948
setup()
49+
server.get('/-/v1/search?text=foo&size=20').once().reply(404, {})
50+
server.get('/-/all').many().reply(404, {})
5051
var cacheContents = {}
5152
var fixture = new Tacks(File(cacheContents))
5253
fixture.create(cachePath)
5354
common.npm([
5455
'search', 'foo',
5556
'--registry', common.registry,
5657
'--loglevel', 'silly',
58+
'--json',
5759
'--fetch-retry-mintimeout', 0,
5860
'--fetch-retry-maxtimeout', 0,
5961
'--cache', CACHE_DIR
@@ -68,16 +70,12 @@ test('spits out a useful error when no cache nor network', function (t) {
6870

6971
test('can switch to JSON mode', function (t) {
7072
setup()
71-
var now = Date.now()
72-
var cacheContents = {
73-
'_updated': now,
74-
bar: { name: 'bar', version: '1.0.0' },
75-
cool: { name: 'cool', version: '1.0.0' },
76-
foo: { name: 'foo', version: '2.0.0' },
77-
other: { name: 'other', version: '1.0.0' }
78-
}
79-
var fixture = new Tacks(File(cacheContents))
80-
fixture.create(cachePath)
73+
server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
74+
objects: [
75+
{ package: { name: 'cool', version: '1.0.0' } },
76+
{ package: { name: 'foo', version: '2.0.0' } }
77+
]
78+
})
8179
common.npm([
8280
'search', 'oo',
8381
'--json',
@@ -86,30 +84,23 @@ test('can switch to JSON mode', function (t) {
8684
'--cache', CACHE_DIR
8785
], {}, function (err, code, stdout, stderr) {
8886
if (err) throw err
89-
t.deepEquals(JSON.parse(stdout), [
90-
{ name: 'cool', version: '1.0.0' },
91-
{ name: 'foo', version: '2.0.0' }
92-
], 'results returned as valid json')
9387
t.equal(stderr, '', 'no error output')
9488
t.equal(code, 0, 'search gives 0 error code even if no matches')
89+
t.deepEquals(JSON.parse(stdout), [
90+
{ name: 'cool', version: '1.0.0', date: null },
91+
{ name: 'foo', version: '2.0.0', date: null }
92+
], 'results returned as valid json')
9593
t.done()
9694
})
9795
})
9896

9997
test('JSON mode does not notify on empty', function (t) {
10098
setup()
101-
var now = Date.now()
102-
var cacheContents = {
103-
'_updated': now,
104-
bar: { name: 'bar', version: '1.0.0' },
105-
cool: { name: 'cool', version: '1.0.0' },
106-
foo: { name: 'foo', version: '2.0.0' },
107-
other: { name: 'other', version: '1.0.0' }
108-
}
109-
var fixture = new Tacks(File(cacheContents))
110-
fixture.create(cachePath)
99+
server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
100+
objects: []
101+
})
111102
common.npm([
112-
'search', 'nomatcheswhatsoeverfromthis',
103+
'search', 'oo',
113104
'--json',
114105
'--registry', common.registry,
115106
'--loglevel', 'error',
@@ -125,16 +116,12 @@ test('JSON mode does not notify on empty', function (t) {
125116

126117
test('can switch to tab separated mode', function (t) {
127118
setup()
128-
var now = Date.now()
129-
var cacheContents = {
130-
'_updated': now,
131-
bar: { name: 'bar', version: '1.0.0' },
132-
cool: { name: 'cool', version: '1.0.0' },
133-
foo: { name: 'foo', description: 'this\thas\ttabs', version: '2.0.0' },
134-
other: { name: 'other', version: '1.0.0' }
135-
}
136-
var fixture = new Tacks(File(cacheContents))
137-
fixture.create(cachePath)
119+
server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
120+
objects: [
121+
{ package: { name: 'cool', version: '1.0.0' } },
122+
{ package: { name: 'foo', description: 'this\thas\ttabs', version: '2.0.0' } }
123+
]
124+
})
138125
common.npm([
139126
'search', 'oo',
140127
'--parseable',
@@ -152,18 +139,11 @@ test('can switch to tab separated mode', function (t) {
152139

153140
test('tab mode does not notify on empty', function (t) {
154141
setup()
155-
var now = Date.now()
156-
var cacheContents = {
157-
'_updated': now,
158-
bar: { name: 'bar', version: '1.0.0' },
159-
cool: { name: 'cool', version: '1.0.0' },
160-
foo: { name: 'foo', version: '2.0.0' },
161-
other: { name: 'other', version: '1.0.0' }
162-
}
163-
var fixture = new Tacks(File(cacheContents))
164-
fixture.create(cachePath)
142+
server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
143+
objects: []
144+
})
165145
common.npm([
166-
'search', 'nomatcheswhatsoeverfromthis',
146+
'search', 'oo',
167147
'--parseable',
168148
'--registry', common.registry,
169149
'--loglevel', 'error',
@@ -301,9 +281,11 @@ var searches = [
301281
}
302282
]
303283

284+
// These test classic hand-matched searches
304285
searches.forEach(function (search) {
305286
test(search.description, function (t) {
306287
setup()
288+
server.get('/-/v1/search?text=' + encodeURI(search.term) + '&size=20').once().reply(404, {})
307289
var now = Date.now()
308290
var cacheContents = {
309291
'_updated': now,
@@ -349,6 +331,7 @@ searches.forEach(function (search) {
349331

350332
test('cleanup', function (t) {
351333
cleanup()
334+
server.close()
352335
t.end()
353336
})
354337

@@ -358,6 +341,7 @@ function setup () {
358341
}
359342

360343
function cleanup () {
344+
server.done()
361345
process.chdir(osenv.tmpdir())
362346
rimraf.sync(PKG_DIR)
363347
}

0 commit comments

Comments
 (0)