1 | describe('.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 |
|
12 |
|
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;
|
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 | });
|