UNPKG

3.93 kBJavaScriptView Raw
1describe('.packages', function () {
2 'use strict';
3
4 var chai = require('chai')
5 , expect = chai.expect;
6
7 var Registry = require('../')
8 , registry = new Registry();
9
10 //
11 // The module name we want to use for testing, it shouldn't matter which
12 // package we use but having the option to configure this is nice.
13 //
14 var module = 'eventemitter3';
15
16 it('has a packages endpoint', function () {
17 expect(registry.packages).to.be.a('object');
18 });
19
20 describe('#get', function () {
21 it('retrieves a module by name', function (next) {
22 registry.packages.get(module, function (err, data) {
23 data = Array.isArray(data) ? data[0] : data;
24 if (err) return next(err);
25
26 expect(data.name).to.equal(module);
27 next();
28 });
29 });
30
31 it('does not include extended/upgraded information', function (next) {
32 registry.packages.get(module +'@0.0.0', function (err, data) {
33 data = Array.isArray(data) ? data[0] : data;
34 if (err) return next(err);
35
36 expect(data.name).to.equal(module);
37 expect(data.licenses).to.equal(undefined);
38 next();
39 });
40 });
41
42 it('can retreive specifc versions using the @ sign', function (next) {
43 registry.packages.get(module +'@0.0.0', function (err, data) {
44 data = Array.isArray(data) ? data[0] : data;
45 if (err) return next(err);
46
47 expect(data.name).to.equal(module);
48 expect(data.version).to.equal('0.0.0');
49 next();
50 });
51 });
52
53 it('can retreive specifc versions using the / sign', function (next) {
54 registry.packages.get(module +'/0.0.0', function (err, data) {
55 data = Array.isArray(data) ? data[0] : data;
56 if (err) return next(err);
57
58 expect(data.name).to.equal(module);
59 expect(data.version).to.equal('0.0.0');
60 next();
61 });
62 });
63 });
64
65 describe('#details', function () {
66 it('includes extended/upgraded information', function (next) {
67 registry.packages.details(module, function (err, data) {
68 data = Array.isArray(data) ? data[0] : data;
69 if (err) return next(err);
70
71 expect(data.licenses).to.be.a('array');
72 expect(data.licenses).to.contain('MIT');
73 expect(data.name).to.equal(module);
74
75 next();
76 });
77 });
78 });
79
80 describe('#releases', function () {
81 it('returns multiple releases as object', function (next) {
82 registry.packages.releases(module, function (err, releases) {
83 if (err) return next(err);
84
85 var versions = Object.keys(releases);
86
87 expect(releases).to.be.a('object');
88 expect(versions.length).to.be.above(3);
89
90 versions.forEach(function (version) {
91 if (version === 'latest') return; // Tags are the only exception.
92
93 expect(version).to.equal(releases[version].version);
94 });
95
96 next();
97 });
98 });
99
100 it('correctly merges data from the source package', function (next) {
101 registry.packages.releases(module, function (err, releases) {
102 if (err) return next(err);
103
104 Object.keys(releases).forEach(function each(version, index, keys) {
105 var release = releases[version]
106 , future = keys[(index + 1) >= keys.length ? 0 : index + 1]
107 , next = releases[future];
108
109 if (future === 'latest' || version === 'latest') return;
110
111 expect(release.version).to.not.equal(next.version);
112 expect(release.date).to.not.equal(next.date);
113
114 expect(release.created.toString()).to.equal(next.created.toString());
115 expect(release.modified.toString()).to.equal(next.modified.toString());
116 expect(release.starred).to.deep.equal(next.starred);
117 expect(release.maintainers).to.deep.equal(next.maintainers);
118 expect(release.name).to.equal(module);
119 expect(next.name).to.equal(module);
120 });
121
122 next();
123 });
124 });
125 });
126});