Files
shields/lib/pypi-helpers.spec.js
2017-12-01 16:10:34 -05:00

79 lines
2.6 KiB
JavaScript

'use strict';
const { test, given } = require('sazerac');
const {
parseClassifiers,
parseDjangoVersionString,
sortDjangoVersions
} = require('./pypi-helpers.js');
const classifiersFixture = {
info: {
classifiers: [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 1.10",
"Framework :: Django :: 1.11",
"Intended Audience :: Developers",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Natural Language :: English",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Internet :: WWW/HTTP",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy"
]
}
};
describe('PyPI helpers', function() {
test(parseClassifiers, function() {
given(classifiersFixture, /^Programming Language :: Python :: ([\d.]+)$/)
.expect(["2","2.7","3","3.4","3.5","3.6"]);
given(classifiersFixture, /^Framework :: Django :: ([\d.]+)$/)
.expect(["1.10", "1.11"]);
given(classifiersFixture, /^Programming Language :: Python :: Implementation :: (\S+)$/)
.expect(["cpython", "pypy"]);
// regex that matches everything
given(classifiersFixture, /^([\S\s+]+)$/)
.expect(classifiersFixture.info.classifiers.map(function(e) {
return e.toLowerCase();
}));
// regex that matches nothing
given(classifiersFixture, /^(?!.*)*$/)
.expect([]);
});
test(parseDjangoVersionString, function() {
given("1").expect({ major: 1, minor: 0});
given("1.0").expect({ major: 1, minor: 0});
given("7.2").expect({ major: 7, minor: 2});
given("7.2derpderp").expect({ major: 7, minor: 2});
given("7.2.9.5.8.3").expect({ major: 7, minor: 2});
given("foo").expect({ major: 0, minor: 0});
});
test(sortDjangoVersions, function() {
given(["2.0", "1.9", "10", "1.11", "2.1", "2.11",])
.expect(["1.9", "1.11", "2.0", "2.1", "2.11", "10"]);
given(["2", "1.9", "10", "1.11", "2.1", "2.11",])
.expect(["1.9", "1.11", "2", "2.1", "2.11", "10"]);
given(["2.0rc1", "10", "1.9", "1.11", "2.1", "2.11",])
.expect(["1.9", "1.11", "2.0rc1", "2.1", "2.11", "10"]);
});
});